aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/java
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2018-07-06 07:25:02 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-06 07:26:15 -0700
commit4ff32da2f79f36fbb1e608830835a31f39772b8a (patch)
treeccb5266d9b00bd50021485278c1adfda9ffb828f /src/main/java/com/google/devtools/build/lib/rules/java
parent5947f474e152f7b1f447ef9c9392cd632c1fdd81 (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.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java10
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}.
*/