diff options
author | elenairina <elenairina@google.com> | 2018-07-06 07:25:02 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-07-06 07:26:15 -0700 |
commit | 4ff32da2f79f36fbb1e608830835a31f39772b8a (patch) | |
tree | ccb5266d9b00bd50021485278c1adfda9ffb828f /src/main/java/com/google/devtools/build/lib/rules/java | |
parent | 5947f474e152f7b1f447ef9c9392cd632c1fdd81 (diff) |
Merge outputs in java_common.merge.
RELNOTES: [JavaInfo] Outputs are merged in java_common.merge().
PiperOrigin-RevId: 203474741
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java | 7 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java | 10 |
2 files changed, 14 insertions, 3 deletions
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 e6aa29093e..ab6d409b1f 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 @@ -128,6 +128,8 @@ public final class JavaInfo extends NativeInfo implements JavaInfoApi<Artifact> JavaInfo.fetchProvidersFromList(providers, JavaPluginInfoProvider.class); List<JavaExportsProvider> javaExportsProviders = JavaInfo.fetchProvidersFromList(providers, JavaExportsProvider.class); + List<JavaRuleOutputJarsProvider> javaRuleOutputJarsProviders = + JavaInfo.fetchProvidersFromList(providers, JavaRuleOutputJarsProvider.class); Runfiles mergedRunfiles = Runfiles.EMPTY; @@ -145,9 +147,8 @@ public final class JavaInfo extends NativeInfo implements JavaInfoApi<Artifact> JavaStrictCompilationArgsProvider.merge(javaStrictCompilationArgsProviders)) .addProvider( JavaSourceJarsProvider.class, JavaSourceJarsProvider.merge(javaSourceJarsProviders)) - // When a rule merges multiple JavaProviders, its purpose is to pass on information, so - // it doesn't have any output jars. - .addProvider(JavaRuleOutputJarsProvider.class, JavaRuleOutputJarsProvider.builder().build()) + .addProvider(JavaRuleOutputJarsProvider.class, + JavaRuleOutputJarsProvider.merge(javaRuleOutputJarsProviders)) .addProvider(JavaRunfilesProvider.class, new JavaRunfilesProvider(mergedRunfiles)) .addProvider( JavaPluginInfoProvider.class, JavaPluginInfoProvider.merge(javaPluginInfoProviders)) diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java index 5595651c83..d7aa8ea514 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java @@ -27,6 +27,7 @@ import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.skylarkbuildapi.java.JavaRuleOutputJarsProviderApi; import com.google.devtools.build.lib.skylarkbuildapi.java.OutputJarApi; import com.google.devtools.build.lib.syntax.SkylarkList; +import java.util.Collection; import java.util.stream.Collectors; import javax.annotation.Nullable; @@ -150,6 +151,15 @@ public final class JavaRuleOutputJarsProvider return new Builder(); } + public static JavaRuleOutputJarsProvider merge( + Collection<JavaRuleOutputJarsProvider> providers) { + Builder builder = new Builder(); + for (JavaRuleOutputJarsProvider provider : providers) { + builder.addOutputJars(provider.getOutputJars()); + } + return builder.build(); + } + /** * Builder for {@link JavaRuleOutputJarsProvider}. */ |