diff options
author | carmi <carmi@google.com> | 2017-06-19 12:49:24 -0400 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2017-06-20 14:35:14 -0400 |
commit | 0eb94909892daf82a3340c680dd1fa088101ee10 (patch) | |
tree | 790a5cb1b6b184967f663c75e718d5a7caaf5191 /src/main/java/com/google | |
parent | acb02f52533e70a807d528aceb232b774ec0ee56 (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.java | 31 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java | 32 |
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); |