diff options
Diffstat (limited to 'src/main')
6 files changed, 45 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java index 0c6d526f7d..24a1de620d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java @@ -61,6 +61,7 @@ import com.google.devtools.build.lib.rules.java.JavaCompilationArgs.ClasspathTyp import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider; import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts; import com.google.devtools.build.lib.rules.java.JavaCompilationHelper; +import com.google.devtools.build.lib.rules.java.JavaGenJarsProvider; import com.google.devtools.build.lib.rules.java.JavaInfo; import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider; import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider.OutputJar; @@ -790,13 +791,17 @@ public class AndroidCommon { compileTimeDependencyArtifacts, NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER)); javaCommon.addTransitiveInfoProviders(builder, filesToBuild, classJar, ANDROID_COLLECTION_SPEC); - javaCommon.addGenJarsProvider(builder, genClassJar, genSourceJar); + + JavaGenJarsProvider javaGenJarsProvider = + javaCommon.createJavaGenJarsProvider(genClassJar, genSourceJar); + javaCommon.addJavaGenJarsProvider(builder, javaGenJarsProvider); DataBinding.maybeAddProvider(builder, ruleContext); JavaInfo javaInfo = JavaInfo.Builder.create() .addProvider(JavaCompilationArgsProvider.class, compilationArgsProvider) .addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider) .addProvider(JavaSourceJarsProvider.class, sourceJarsProvider) + .addProvider(JavaGenJarsProvider.class, javaGenJarsProvider) .build(); return builder diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java index 0ddfa733e2..0842f68305 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java @@ -45,6 +45,7 @@ import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts; import com.google.devtools.build.lib.rules.java.JavaCompilationHelper; import com.google.devtools.build.lib.rules.java.JavaConfiguration; import com.google.devtools.build.lib.rules.java.JavaConfiguration.OneVersionEnforcementLevel; +import com.google.devtools.build.lib.rules.java.JavaGenJarsProvider; import com.google.devtools.build.lib.rules.java.JavaHelper; import com.google.devtools.build.lib.rules.java.JavaInfo; import com.google.devtools.build.lib.rules.java.JavaPrimaryClassProvider; @@ -301,7 +302,10 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor JavaRuleOutputJarsProvider ruleOutputJarsProvider = javaRuleOutputJarsProviderBuilder.build(); javaCommon.addTransitiveInfoProviders(builder, filesToBuild, classJar); - javaCommon.addGenJarsProvider(builder, genClassJar, genSourceJar); + + JavaGenJarsProvider javaGenJarsProvider = + javaCommon.createJavaGenJarsProvider(genClassJar, genSourceJar); + javaCommon.addJavaGenJarsProvider(builder, javaGenJarsProvider); // Just confirming that there are no aliases being used here. AndroidFeatureFlagSetProvider.getAndValidateFlagMapFromRuleContext(ruleContext); @@ -317,6 +321,7 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor JavaInfo.Builder.create() .addProvider(JavaSourceJarsProvider.class, sourceJarsProvider) .addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider) + .addProvider(JavaGenJarsProvider.class, javaGenJarsProvider) .build(); return builder diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java index 2e7f0c5bd0..73a9b356f6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java @@ -428,11 +428,15 @@ public class JavaBinary implements RuleConfiguredTargetFactory { JavaRuleOutputJarsProvider ruleOutputJarsProvider = ruleOutputJarsProviderBuilder.build(); common.addTransitiveInfoProviders(builder, filesToBuild, classJar); - common.addGenJarsProvider(builder, genClassJar, genSourceJar); + + JavaGenJarsProvider javaGenJarsProvider = + common.createJavaGenJarsProvider(genClassJar, genSourceJar); + common.addJavaGenJarsProvider(builder, javaGenJarsProvider); JavaInfo javaInfo = JavaInfo.Builder.create() .addProvider(JavaSourceJarsProvider.class, sourceJarsProvider) .addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider) + .addProvider(JavaGenJarsProvider.class, javaGenJarsProvider) .build(); return builder diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java index f13287bf24..78d49c8015 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java @@ -737,20 +737,22 @@ public class JavaCommon { /*withBaselineCoverage*/!TargetUtils.isTestRule(ruleContext.getTarget())); } - public void addGenJarsProvider( + public JavaGenJarsProvider createJavaGenJarsProvider( + @Nullable Artifact genClassJar, @Nullable Artifact genSourceJar) { + return collectTransitiveGenJars( + javaCompilationHelper.usesAnnotationProcessing(), genClassJar, genSourceJar); + } + + public void addJavaGenJarsProvider( RuleConfiguredTargetBuilder builder, - @Nullable Artifact genClassJar, - @Nullable Artifact genSourceJar) { - JavaGenJarsProvider genJarsProvider = collectTransitiveGenJars( - javaCompilationHelper.usesAnnotationProcessing(), - genClassJar, genSourceJar); + JavaGenJarsProvider javaGenJarsProvider) { NestedSetBuilder<Artifact> genJarsBuilder = NestedSetBuilder.stableOrder(); - genJarsBuilder.addTransitive(genJarsProvider.getTransitiveGenClassJars()); - genJarsBuilder.addTransitive(genJarsProvider.getTransitiveGenSourceJars()); + genJarsBuilder.addTransitive(javaGenJarsProvider.getTransitiveGenClassJars()); + genJarsBuilder.addTransitive(javaGenJarsProvider.getTransitiveGenSourceJars()); builder - .add(JavaGenJarsProvider.class, genJarsProvider) + .addProvider(javaGenJarsProvider) .addOutputGroup(JavaSemantics.GENERATED_JARS_OUTPUT_GROUP, genJarsBuilder.build()); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java index 5f49493d8a..3bd850f07c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java @@ -59,7 +59,8 @@ public final class JavaInfo extends NativeInfo { ProtoJavaApiInfoAspectProvider.class, JavaRuleOutputJarsProvider.class, JavaRunfilesProvider.class, - JavaPluginInfoProvider.class + JavaPluginInfoProvider.class, + JavaGenJarsProvider.class ); private final TransitiveInfoProviderMap providers; @@ -289,6 +290,16 @@ public final class JavaInfo extends NativeInfo { @SkylarkCallable( + name = "annotation_processing", + structField = true, + allowReturnNones = true, + doc = "Returns information about annotation processing for this Java target." + ) + public JavaGenJarsProvider getGenJarsProvider() { + return getProvider(JavaGenJarsProvider.class); + } + + @SkylarkCallable( name = "transitive_deps", doc = "Returns the transitive set of Jars required to build the target.", structField = true diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java index 3f710cc348..890b07bd8f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java @@ -209,7 +209,10 @@ public class JavaLibrary implements RuleConfiguredTargetFactory { NestedSet<Artifact> filesToBuild = filesBuilder.build(); common.addTransitiveInfoProviders(builder, filesToBuild, classJar); - common.addGenJarsProvider(builder, genClassJar, genSourceJar); + + JavaGenJarsProvider javaGenJarsProvider = + common.createJavaGenJarsProvider(genClassJar, genSourceJar); + common.addJavaGenJarsProvider(builder, javaGenJarsProvider); NestedSet<Artifact> proguardSpecs = new ProguardLibrary(ruleContext).collectProguardSpecs(); @@ -228,6 +231,7 @@ public class JavaLibrary implements RuleConfiguredTargetFactory { .addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider) // TODO(bazel-team): this should only happen for java_plugin .addProvider(JavaPluginInfoProvider.class, pluginInfoProvider) + .addProvider(JavaGenJarsProvider.class, javaGenJarsProvider) .build(); builder |