Merge "AAPT2: Add option to add JavaDoc annotations to Java classes" into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b12c2601f4
@@ -437,6 +437,15 @@ bool JavaClassGenerator::generate(const StringPiece16& packageNameToGenerate, st
|
|||||||
return generate(packageNameToGenerate, packageNameToGenerate, out);
|
return generate(packageNameToGenerate, packageNameToGenerate, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void appendJavaDocAnnotations(const std::vector<std::string>& annotations,
|
||||||
|
AnnotationProcessor* processor) {
|
||||||
|
for (const std::string& annotation : annotations) {
|
||||||
|
std::string properAnnotation = "@";
|
||||||
|
properAnnotation += annotation;
|
||||||
|
processor->appendComment(properAnnotation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool JavaClassGenerator::generate(const StringPiece16& packageNameToGenerate,
|
bool JavaClassGenerator::generate(const StringPiece16& packageNameToGenerate,
|
||||||
const StringPiece16& outPackageName, std::ostream* out) {
|
const StringPiece16& outPackageName, std::ostream* out) {
|
||||||
|
|
||||||
@@ -477,14 +486,17 @@ bool JavaClassGenerator::generate(const StringPiece16& packageNameToGenerate,
|
|||||||
mOptions.types == JavaClassGeneratorOptions::SymbolTypes::kPublic) {
|
mOptions.types == JavaClassGeneratorOptions::SymbolTypes::kPublic) {
|
||||||
// When generating a public R class, we don't want Styleable to be part of the API.
|
// When generating a public R class, we don't want Styleable to be part of the API.
|
||||||
// It is only emitted for documentation purposes.
|
// It is only emitted for documentation purposes.
|
||||||
AnnotationProcessor* processor = classDef->getCommentBuilder();
|
classDef->getCommentBuilder()->appendComment("@doconly");
|
||||||
processor->appendComment("@doconly");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
appendJavaDocAnnotations(mOptions.javadocAnnotations, classDef->getCommentBuilder());
|
||||||
|
|
||||||
rClass.addMember(std::move(classDef));
|
rClass.addMember(std::move(classDef));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
appendJavaDocAnnotations(mOptions.javadocAnnotations, rClass.getCommentBuilder());
|
||||||
|
|
||||||
if (!ClassDefinition::writeJavaFile(&rClass, util::utf16ToUtf8(outPackageName),
|
if (!ClassDefinition::writeJavaFile(&rClass, util::utf16ToUtf8(outPackageName),
|
||||||
mOptions.useFinal, out)) {
|
mOptions.useFinal, out)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -494,6 +506,4 @@ bool JavaClassGenerator::generate(const StringPiece16& packageNameToGenerate,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // namespace aapt
|
} // namespace aapt
|
||||||
|
|||||||
@@ -44,6 +44,11 @@ struct JavaClassGeneratorOptions {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SymbolTypes types = SymbolTypes::kAll;
|
SymbolTypes types = SymbolTypes::kAll;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A list of JavaDoc annotations to add to the comments of all generated classes.
|
||||||
|
*/
|
||||||
|
std::vector<std::string> javadocAnnotations;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ struct LinkOptions {
|
|||||||
bool staticLib = false;
|
bool staticLib = false;
|
||||||
bool noStaticLibPackages = false;
|
bool noStaticLibPackages = false;
|
||||||
bool generateNonFinalIds = false;
|
bool generateNonFinalIds = false;
|
||||||
|
std::vector<std::string> javadocAnnotations;
|
||||||
bool outputToDirectory = false;
|
bool outputToDirectory = false;
|
||||||
bool autoAddOverlay = false;
|
bool autoAddOverlay = false;
|
||||||
bool doNotCompressAnything = false;
|
bool doNotCompressAnything = false;
|
||||||
@@ -775,6 +776,13 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add any JavaDoc annotations to the generated class.
|
||||||
|
for (const std::string& annotation : mOptions.javadocAnnotations) {
|
||||||
|
std::string properAnnotation = "@";
|
||||||
|
properAnnotation += annotation;
|
||||||
|
manifestClass->getCommentBuilder()->appendComment(properAnnotation);
|
||||||
|
}
|
||||||
|
|
||||||
const std::string packageUtf8 = util::utf16ToUtf8(mContext->getCompilationPackage());
|
const std::string packageUtf8 = util::utf16ToUtf8(mContext->getCompilationPackage());
|
||||||
|
|
||||||
std::string outPath = mOptions.generateJavaClassPath.value();
|
std::string outPath = mOptions.generateJavaClassPath.value();
|
||||||
@@ -1292,6 +1300,7 @@ public:
|
|||||||
if (mOptions.generateJavaClassPath) {
|
if (mOptions.generateJavaClassPath) {
|
||||||
JavaClassGeneratorOptions options;
|
JavaClassGeneratorOptions options;
|
||||||
options.types = JavaClassGeneratorOptions::SymbolTypes::kAll;
|
options.types = JavaClassGeneratorOptions::SymbolTypes::kAll;
|
||||||
|
options.javadocAnnotations = mOptions.javadocAnnotations;
|
||||||
|
|
||||||
if (mOptions.staticLib || mOptions.generateNonFinalIds) {
|
if (mOptions.staticLib || mOptions.generateNonFinalIds) {
|
||||||
options.useFinal = false;
|
options.useFinal = false;
|
||||||
@@ -1432,6 +1441,8 @@ int link(const std::vector<StringPiece>& args) {
|
|||||||
&customJavaPackage)
|
&customJavaPackage)
|
||||||
.optionalFlagList("--extra-packages", "Generate the same R.java but with different "
|
.optionalFlagList("--extra-packages", "Generate the same R.java but with different "
|
||||||
"package names", &extraJavaPackages)
|
"package names", &extraJavaPackages)
|
||||||
|
.optionalFlagList("--add-javadoc-annotation", "Adds a JavaDoc annotation to all "
|
||||||
|
"generated Java classes", &options.javadocAnnotations)
|
||||||
.optionalSwitch("--auto-add-overlay", "Allows the addition of new resources in "
|
.optionalSwitch("--auto-add-overlay", "Allows the addition of new resources in "
|
||||||
"overlays without <add-resource> tags", &options.autoAddOverlay)
|
"overlays without <add-resource> tags", &options.autoAddOverlay)
|
||||||
.optionalFlag("--rename-manifest-package", "Renames the package in AndroidManifest.xml",
|
.optionalFlag("--rename-manifest-package", "Renames the package in AndroidManifest.xml",
|
||||||
|
|||||||
Reference in New Issue
Block a user