aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar carmi <carmi@google.com>2017-06-19 12:49:24 -0400
committerGravatar Kristina Chodorow <kchodorow@google.com>2017-06-20 14:35:14 -0400
commit0eb94909892daf82a3340c680dd1fa088101ee10 (patch)
tree790a5cb1b6b184967f663c75e718d5a7caaf5191 /src/main/java/com/google
parentacb02f52533e70a807d528aceb232b774ec0ee56 (diff)
All java_xxx_proto_library to provide JavaProvider ("java_common").
RELNOTES: None PiperOrigin-RevId: 159438707
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java31
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java32
2 files changed, 60 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
index f38c10d0db..de91377b10 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
@@ -35,12 +35,15 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
+import com.google.devtools.build.lib.rules.java.JavaProvider;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaRunfilesProvider;
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.java.ProguardLibrary;
import com.google.devtools.build.lib.rules.java.ProguardSpecProvider;
+import com.google.devtools.build.lib.rules.java.ProtoJavaApiInfoAspectProvider;
+import com.google.devtools.build.lib.rules.java.ProtoJavaApiInfoProvider;
import com.google.devtools.build.lib.rules.proto.ProtoLangToolchainProvider;
/** Implementation of the java_lite_proto_library rule. */
@@ -86,6 +89,19 @@ public class JavaLiteProtoLibrary implements RuleConfiguredTargetFactory {
.setSourceJarsProvider(sourceJarsProvider)
.setCompilationArgsProvider(dependencyArgsProviders);
+ JavaRunfilesProvider javaRunfilesProvider = new JavaRunfilesProvider(runfiles);
+
+ JavaProvider javaProvider =
+ JavaProvider.Builder.create()
+ .addProvider(JavaCompilationArgsProvider.class, dependencyArgsProviders)
+ .addProvider(JavaSourceJarsProvider.class, sourceJarsProvider)
+ .addProvider(
+ ProtoJavaApiInfoAspectProvider.class,
+ createProtoJavaApiInfoAspectProvider(ruleContext))
+ .addProvider(JavaRuleOutputJarsProvider.class, JavaRuleOutputJarsProvider.EMPTY)
+ .addProvider(JavaRunfilesProvider.class, javaRunfilesProvider)
+ .build();
+
return new RuleConfiguredTargetBuilder(ruleContext)
.setFilesToBuild(filesToBuild.build())
.addSkylarkTransitiveInfo(JavaSkylarkApiProvider.NAME, skylarkApiProvider.build())
@@ -94,12 +110,25 @@ public class JavaLiteProtoLibrary implements RuleConfiguredTargetFactory {
OutputGroupProvider.DEFAULT, NestedSetBuilder.<Artifact>emptySet(STABLE_ORDER))
.add(JavaCompilationArgsProvider.class, dependencyArgsProviders)
.add(JavaSourceJarsProvider.class, sourceJarsProvider)
- .add(JavaRunfilesProvider.class, new JavaRunfilesProvider(runfiles))
+ .add(JavaRunfilesProvider.class, javaRunfilesProvider)
.add(ProguardSpecProvider.class, getJavaLiteRuntimeSpec(ruleContext))
.add(JavaRuleOutputJarsProvider.class, javaRuleOutputJarsProvider)
+ .addProvider(javaProvider)
+ .addNativeDeclaredProvider(javaProvider)
.build();
}
+ private ProtoJavaApiInfoAspectProvider createProtoJavaApiInfoAspectProvider(
+ RuleContext ruleContext) {
+ ProtoJavaApiInfoAspectProvider.Builder protoJavaApiInfoAspectProvider =
+ ProtoJavaApiInfoAspectProvider.builder();
+ for (ProtoJavaApiInfoProvider protoJavaApiInfoProvider :
+ getDeps(ruleContext, ProtoJavaApiInfoProvider.class)) {
+ protoJavaApiInfoAspectProvider.add(protoJavaApiInfoProvider).build();
+ }
+ return protoJavaApiInfoAspectProvider.build();
+ }
+
private <C extends TransitiveInfoProvider> Iterable<C> getDeps(
RuleContext ruleContext, Class<C> clazz) {
return ruleContext.getPrerequisites("deps", TARGET, clazz);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java
index 9cf4c735d0..68c92f489f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java
@@ -30,10 +30,13 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
+import com.google.devtools.build.lib.rules.java.JavaProvider;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaRunfilesProvider;
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.java.ProtoJavaApiInfoAspectProvider;
+import com.google.devtools.build.lib.rules.java.ProtoJavaApiInfoProvider;
/** Implementation of the java_proto_library rule. */
public class JavaProtoLibrary implements RuleConfiguredTargetFactory {
@@ -76,7 +79,6 @@ public class JavaProtoLibrary implements RuleConfiguredTargetFactory {
filesToBuild.addTransitive(provider.getJars());
}
-
JavaRuleOutputJarsProvider ruleOutputJarsProvider =
JavaRuleOutputJarsProvider.builder().build();
JavaSkylarkApiProvider.Builder skylarkApiProvider =
@@ -85,6 +87,19 @@ public class JavaProtoLibrary implements RuleConfiguredTargetFactory {
.setSourceJarsProvider(sourceJarsProvider)
.setCompilationArgsProvider(dependencyArgsProviders);
+ JavaRunfilesProvider javaRunfilesProvider = new JavaRunfilesProvider(runfiles);
+
+ JavaProvider javaProvider =
+ JavaProvider.Builder.create()
+ .addProvider(JavaCompilationArgsProvider.class, dependencyArgsProviders)
+ .addProvider(JavaSourceJarsProvider.class, sourceJarsProvider)
+ .addProvider(
+ ProtoJavaApiInfoAspectProvider.class,
+ createProtoJavaApiInfoAspectProvider(ruleContext))
+ .addProvider(JavaRuleOutputJarsProvider.class, JavaRuleOutputJarsProvider.EMPTY)
+ .addProvider(JavaRunfilesProvider.class, javaRunfilesProvider)
+ .build();
+
return new RuleConfiguredTargetBuilder(ruleContext)
.setFilesToBuild(filesToBuild.build())
.addSkylarkTransitiveInfo(JavaSkylarkApiProvider.NAME, skylarkApiProvider.build())
@@ -93,11 +108,24 @@ public class JavaProtoLibrary implements RuleConfiguredTargetFactory {
OutputGroupProvider.DEFAULT, NestedSetBuilder.<Artifact>emptySet(STABLE_ORDER))
.add(JavaCompilationArgsProvider.class, dependencyArgsProviders)
.add(JavaSourceJarsProvider.class, sourceJarsProvider)
- .add(JavaRunfilesProvider.class, new JavaRunfilesProvider(runfiles))
+ .add(JavaRunfilesProvider.class, javaRunfilesProvider)
.add(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider)
+ .addProvider(javaProvider)
+ .addNativeDeclaredProvider(javaProvider)
.build();
}
+ private ProtoJavaApiInfoAspectProvider createProtoJavaApiInfoAspectProvider(
+ RuleContext ruleContext) {
+ ProtoJavaApiInfoAspectProvider.Builder protoJavaApiInfoAspectProvider =
+ ProtoJavaApiInfoAspectProvider.builder();
+ for (ProtoJavaApiInfoProvider protoJavaApiInfoProvider :
+ getDeps(ruleContext, ProtoJavaApiInfoProvider.class)) {
+ protoJavaApiInfoAspectProvider.add(protoJavaApiInfoProvider).build();
+ }
+ return protoJavaApiInfoAspectProvider.build();
+ }
+
private <C extends TransitiveInfoProvider> Iterable<C> getDeps(
RuleContext ruleContext, Class<C> clazz) {
return ruleContext.getPrerequisites("deps", TARGET, clazz);