Improve property comments for docs

Improve the comments associated with properties to work better with
Blueprint's auto-documenting feature.

Make all properties structs into named types so that thet types can be
found using reflection and cross-referenced to the source code to
auto-extract docs.

Remove the leading <property>: text from properties, the documentation
will include the lowercased name of the property.

Add filter tags to the nested arch properties.

Change-Id: I4ef5db86358886fe61456c24eb2dbe6f7b876115
diff --git a/java/app.go b/java/app.go
index 5f153cf..e6851b5 100644
--- a/java/app.go
+++ b/java/app.go
@@ -31,35 +31,37 @@
 // AndroidManifest.xml merging
 // package splits
 
+type androidAppProperties struct {
+	// path to a certificate, or the name of a certificate in the default
+	// certificate directory, or blank to use the default product certificate
+	Certificate string
+
+	// paths to extra certificates to sign the apk with
+	Additional_certificates []string
+
+	// If set, create package-export.apk, which other packages can
+	// use to get PRODUCT-agnostic resource data like IDs and type definitions.
+	Export_package_resources bool
+
+	// flags passed to aapt when creating the apk
+	Aaptflags []string
+
+	// list of resource labels to generate individual resource packages
+	Package_splits []string
+
+	// list of directories relative to the Blueprints file containing assets.
+	// Defaults to "assets"
+	Asset_dirs []string
+
+	// list of directories relative to the Blueprints file containing
+	// Java resources
+	Android_resource_dirs []string
+}
+
 type AndroidApp struct {
 	javaBase
 
-	appProperties struct {
-		// certificate: path to a certificate, or the name of a certificate in the default
-		// certificate directory, or blank to use the default product certificate
-		Certificate string
-
-		// additional_certificates: paths to extra certificates to sign the apk with
-		Additional_certificates []string
-
-		// export_package_resources: If set, create package-export.apk, which other packages can
-		// use to get PRODUCT-agnostic resource data like IDs and type definitions.
-		Export_package_resources bool
-
-		// aaptflags: flags passed to aapt when creating the apk
-		Aaptflags []string
-
-		// package_splits: list of resource labels to generate individual resource packages
-		Package_splits []string
-
-		// asset_dirs: list of directories relative to the Blueprints file containing assets.
-		// Defaults to "assets"
-		Asset_dirs []string
-
-		// android_resource_dirs: list of directories relative to the Blueprints file containing
-		// Java resources
-		Android_resource_dirs []string
-	}
+	appProperties androidAppProperties
 
 	aaptJavaFileList string
 	exportPackage    string
diff --git a/java/java.go b/java/java.go
index 9787d60..a16d1d6 100644
--- a/java/java.go
+++ b/java/java.go
@@ -44,59 +44,61 @@
 // DroidDoc
 // Findbugs
 
+type javaBaseProperties struct {
+	// list of source files used to compile the Java module.  May be .java, .logtags, .proto,
+	// or .aidl files.
+	Srcs []string `android:"arch_variant,arch_subtract"`
+
+	// list of directories containing Java resources
+	Java_resource_dirs []string `android:"arch_variant"`
+
+	// don't build against the default libraries (core-libart, core-junit,
+	// ext, and framework for device targets)
+	No_standard_libraries bool
+
+	// list of module-specific flags that will be used for javac compiles
+	Javacflags []string `android:"arch_variant"`
+
+	// list of module-specific flags that will be used for jack compiles
+	Jack_flags []string `android:"arch_variant"`
+
+	// list of module-specific flags that will be used for dex compiles
+	Dxflags []string `android:"arch_variant"`
+
+	// list of of java libraries that will be in the classpath
+	Java_libs []string `android:"arch_variant"`
+
+	// list of java libraries that will be compiled into the resulting jar
+	Java_static_libs []string `android:"arch_variant"`
+
+	// manifest file to be included in resulting jar
+	Manifest string
+
+	// if not blank, set to the version of the sdk to compile against
+	Sdk_version string
+
+	// Set for device java libraries, and for host versions of device java libraries
+	// built for testing
+	Dex bool `blueprint:"mutated"`
+
+	// if not blank, run jarjar using the specified rules file
+	Jarjar_rules string
+
+	// directories to pass to aidl tool
+	Aidl_includes []string
+
+	// directories that should be added as include directories
+	// for any aidl sources of modules that depend on this module
+	Export_aidl_include_dirs []string
+}
+
 // javaBase contains the properties and members used by all java module types, and implements
 // the blueprint.Module interface.
 type javaBase struct {
 	common.AndroidModuleBase
 	module JavaModuleType
 
-	properties struct {
-		// srcs: list of source files used to compile the Java module.  May be .java, .logtags, .proto,
-		// or .aidl files.
-		Srcs []string `android:"arch_variant,arch_subtract"`
-
-		// java_resource_dirs: list of directories containing Java resources
-		Java_resource_dirs []string `android:"arch_variant"`
-
-		// no_standard_libraries: don't build against the default libraries (core-libart, core-junit,
-		// ext, and framework for device targets)
-		No_standard_libraries bool
-
-		// javacflags: list of module-specific flags that will be used for javac compiles
-		Javacflags []string `android:"arch_variant"`
-
-		// jack_flags: list of module-specific flags that will be used for jack compiles
-		Jack_flags []string `android:"arch_variant"`
-
-		// dxflags: list of module-specific flags that will be used for dex compiles
-		Dxflags []string `android:"arch_variant"`
-
-		// java_libs: list of of java libraries that will be in the classpath
-		Java_libs []string `android:"arch_variant"`
-
-		// java_static_libs: list of java libraries that will be compiled into the resulting jar
-		Java_static_libs []string `android:"arch_variant"`
-
-		// manifest: manifest file to be included in resulting jar
-		Manifest string
-
-		// sdk_version: if not blank, set to the version of the sdk to compile against
-		Sdk_version string
-
-		// Set for device java libraries, and for host versions of device java libraries
-		// built for testing
-		Dex bool `blueprint:"mutated"`
-
-		// jarjar_rules: if not blank, run jarjar using the specified rules file
-		Jarjar_rules string
-
-		// aidl_includes: directories to pass to aidl tool
-		Aidl_includes []string
-
-		// aidl_export_include_dirs: directories that should be added as include directories
-		// for any aidl sources of modules that depend on this module
-		Export_aidl_include_dirs []string
-	}
+	properties javaBaseProperties
 
 	// output file suitable for inserting into the classpath of another compile
 	classpathFile string
@@ -442,13 +444,15 @@
 // Java Binaries (.jar file plus wrapper script)
 //
 
+type javaBinaryProperties struct {
+	// installable script to execute the resulting jar
+	Wrapper string
+}
+
 type JavaBinary struct {
 	JavaLibrary
 
-	binaryProperties struct {
-		// wrapper: installable script to execute the resulting jar
-		Wrapper string
-	}
+	binaryProperties javaBinaryProperties
 }
 
 func (j *JavaBinary) GenerateJavaBuildActions(ctx common.AndroidModuleContext) {
@@ -478,12 +482,14 @@
 // Java prebuilts
 //
 
+type javaPrebuiltProperties struct {
+	Srcs []string
+}
+
 type JavaPrebuilt struct {
 	common.AndroidModuleBase
 
-	properties struct {
-		Srcs []string
-	}
+	properties javaPrebuiltProperties
 
 	classpathFile                   string
 	classJarSpecs, resourceJarSpecs []jarSpec
@@ -540,12 +546,14 @@
 
 var _ sdkDependency = (*sdkPrebuilt)(nil)
 
+type sdkPrebuiltProperties struct {
+	Aidl_preprocessed string
+}
+
 type sdkPrebuilt struct {
 	JavaPrebuilt
 
-	sdkProperties struct {
-		Aidl_preprocessed string
-	}
+	sdkProperties sdkPrebuiltProperties
 
 	aidlPreprocessed string
 }