diff options
author | Googler <noreply@google.com> | 2017-01-09 15:32:16 +0000 |
---|---|---|
committer | Marcel Hlopko <hlopko@google.com> | 2017-01-10 10:20:33 +0000 |
commit | 63ce8f26f1bab520bbb882d227005fa07c7858d3 (patch) | |
tree | b6877bd096f0bf2937b51c2470b66769e8dd7148 /src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java | |
parent | 33715f2a83273b1db52dc80eb1cc27dbc945a3e3 (diff) |
Advertise java Skylark provider from java proto aspects.
The skylark provider is bound as "proto_java" to avoid collisions with the base, which is called "java".
--
PiperOrigin-RevId: 143960605
MOS_MIGRATED_REVID=143960605
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java | 52 |
1 files changed, 31 insertions, 21 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java index 164b582c0d..ba87bc326b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.rules.java.proto; import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.collect.Iterables.getOnlyElement; import static com.google.common.collect.Iterables.transform; import static com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode.TARGET; import static com.google.devtools.build.lib.cmdline.Label.parseAbsoluteUnchecked; @@ -33,7 +34,6 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; -import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMap; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfiguration.StrictDepsMode; import com.google.devtools.build.lib.cmdline.Label; @@ -50,7 +50,9 @@ import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider; 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.JavaLibraryHelper; +import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider; import com.google.devtools.build.lib.rules.java.JavaSemantics; +import com.google.devtools.build.lib.rules.java.JavaSkylarkApiProvider; import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider; import com.google.devtools.build.lib.rules.proto.ProtoCompileActionBuilder; import com.google.devtools.build.lib.rules.proto.ProtoCompileActionBuilder.ToolchainInvocation; @@ -110,15 +112,8 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe SupportData supportData = checkNotNull(base.getProvider(ProtoSupportDataProvider.class)).getSupportData(); - aspect.addProviders( - new Impl( - ruleContext, - supportData, - javaSemantics, - rpcSupport - ) - .createProviders()); - + Impl impl = new Impl(ruleContext, supportData, javaSemantics, rpcSupport); + impl.addProviders(aspect); return aspect.build(); } @@ -183,9 +178,7 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe GET_PROVIDER)); } - TransitiveInfoProviderMap createProviders() { - TransitiveInfoProviderMap.Builder result = TransitiveInfoProviderMap.builder(); - + void addProviders(ConfiguredAspect.Builder aspect) { // Represents the result of compiling the code generated for this proto, including all of its // dependencies. JavaCompilationArgsProvider generatedCompilationArgsProvider; @@ -196,6 +189,8 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe NestedSetBuilder.fromNestedSets( transform(getDeps(JavaProtoLibraryTransitiveFilesToBuildProvider.class), GET_JARS)); + JavaSkylarkApiProvider.Builder skylarkApiProvider = JavaSkylarkApiProvider.builder(); + if (shouldGenerateCode()) { Artifact sourceJar = getSourceJarArtifact(); createProtoCompileAction(sourceJar); @@ -207,21 +202,36 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe NestedSetBuilder.<Artifact>stableOrder().add(sourceJar).build(); transitiveOutputJars.add(outputJar); - result.add( - new JavaSourceJarsAspectProvider( - JavaSourceJarsProvider.create( - NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER), javaSourceJars))); + Artifact compileTimeJar = + getOnlyElement( + generatedCompilationArgsProvider.getJavaCompilationArgs().getCompileTimeJars()); + // TODO(carmi): Expose to native rules + JavaRuleOutputJarsProvider ruleOutputJarsProvider = + JavaRuleOutputJarsProvider.builder() + .addOutputJar(outputJar, compileTimeJar, sourceJar) + .build(); + JavaSourceJarsProvider sourceJarsProvider = + JavaSourceJarsProvider.create( + NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER), javaSourceJars); + + skylarkApiProvider + .setRuleOutputJarsProvider(ruleOutputJarsProvider) + .setSourceJarsProvider(sourceJarsProvider); + + aspect.addProvider(new JavaSourceJarsAspectProvider(sourceJarsProvider)); } else { // No sources - this proto_library is an alias library, which exports its dependencies. // Simply propagate the compilation-args from its dependencies. generatedCompilationArgsProvider = dependencyCompilationArgs; + skylarkApiProvider.setRuleOutputJarsProvider(JavaRuleOutputJarsProvider.builder().build()); } - return result - .add( + skylarkApiProvider.setCompilationArgsProvider(generatedCompilationArgsProvider); + aspect + .addSkylarkTransitiveInfo(JavaSkylarkApiProvider.PROTO_NAME, skylarkApiProvider.build()) + .addProviders( new JavaProtoLibraryTransitiveFilesToBuildProvider(transitiveOutputJars.build()), - new JavaCompilationArgsAspectProvider(generatedCompilationArgsProvider)) - .build(); + new JavaCompilationArgsAspectProvider(generatedCompilationArgsProvider)); } /** |