aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-01-09 15:32:16 +0000
committerGravatar Marcel Hlopko <hlopko@google.com>2017-01-10 10:20:33 +0000
commit63ce8f26f1bab520bbb882d227005fa07c7858d3 (patch)
treeb6877bd096f0bf2937b51c2470b66769e8dd7148 /src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
parent33715f2a83273b1db52dc80eb1cc27dbc945a3e3 (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.java52
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));
}
/**