Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 934dfddf authored by Adam Lesinski's avatar Adam Lesinski Committed by android-build-merger
Browse files

Merge "AAPT2: Add option to add JavaDoc annotations to Java classes" into nyc-dev

am: b12c2601

* commit 'b12c2601':
  AAPT2: Add option to add JavaDoc annotations to Java classes

Change-Id: I67b797ff2bdc05ef318796841b545812179a617c
parents bbc37049 b12c2601
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -437,6 +437,15 @@ bool JavaClassGenerator::generate(const StringPiece16& packageNameToGenerate, st
    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,
                                  const StringPiece16& outPackageName, std::ostream* out) {

@@ -477,14 +486,17 @@ bool JavaClassGenerator::generate(const StringPiece16& packageNameToGenerate,
                    mOptions.types == JavaClassGeneratorOptions::SymbolTypes::kPublic) {
                // When generating a public R class, we don't want Styleable to be part of the API.
                // It is only emitted for documentation purposes.
                AnnotationProcessor* processor = classDef->getCommentBuilder();
                processor->appendComment("@doconly");
                classDef->getCommentBuilder()->appendComment("@doconly");
            }

            appendJavaDocAnnotations(mOptions.javadocAnnotations, classDef->getCommentBuilder());

            rClass.addMember(std::move(classDef));
        }
    }

    appendJavaDocAnnotations(mOptions.javadocAnnotations, rClass.getCommentBuilder());

    if (!ClassDefinition::writeJavaFile(&rClass, util::utf16ToUtf8(outPackageName),
                                        mOptions.useFinal, out)) {
        return false;
@@ -494,6 +506,4 @@ bool JavaClassGenerator::generate(const StringPiece16& packageNameToGenerate,
    return true;
}



} // namespace aapt
+5 −0
Original line number Diff line number Diff line
@@ -44,6 +44,11 @@ struct JavaClassGeneratorOptions {
    };

    SymbolTypes types = SymbolTypes::kAll;

    /**
     * A list of JavaDoc annotations to add to the comments of all generated classes.
     */
    std::vector<std::string> javadocAnnotations;
};

/*
+11 −0
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ struct LinkOptions {
    bool staticLib = false;
    bool noStaticLibPackages = false;
    bool generateNonFinalIds = false;
    std::vector<std::string> javadocAnnotations;
    bool outputToDirectory = false;
    bool autoAddOverlay = false;
    bool doNotCompressAnything = false;
@@ -775,6 +776,13 @@ public:
            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());

        std::string outPath = mOptions.generateJavaClassPath.value();
@@ -1292,6 +1300,7 @@ public:
        if (mOptions.generateJavaClassPath) {
            JavaClassGeneratorOptions options;
            options.types = JavaClassGeneratorOptions::SymbolTypes::kAll;
            options.javadocAnnotations = mOptions.javadocAnnotations;

            if (mOptions.staticLib || mOptions.generateNonFinalIds) {
                options.useFinal = false;
@@ -1432,6 +1441,8 @@ int link(const std::vector<StringPiece>& args) {
                          &customJavaPackage)
            .optionalFlagList("--extra-packages", "Generate the same R.java but with different "
                              "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 "
                            "overlays without <add-resource> tags", &options.autoAddOverlay)
            .optionalFlag("--rename-manifest-package", "Renames the package in AndroidManifest.xml",