aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar Carmi Grushko <carmi@google.com>2016-03-16 20:17:40 +0000
committerGravatar Lukacs Berki <lberki@google.com>2016-03-17 10:07:53 +0000
commit2d9ec94470b5a0026708aa7174f96d1d2645b04d (patch)
tree4692c680e8293adcbdb98d59dec05ff65016724d /src/main/java/com/google
parent3ae80a76545f76458ae9c53771d22ed38ba89b1e (diff)
Add merge() methods to some Java providers.
-- MOS_MIGRATED_REVID=117375231
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaNativeLibraryProvider.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeJarProvider.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSourceJarsProvider.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/ProguardSpecProvider.java10
5 files changed, 65 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java
index 9a7087be25..ca8b241b6e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java
@@ -91,4 +91,26 @@ public final class JavaCompilationArgsProvider implements TransitiveInfoProvider
public NestedSet<Artifact> getRunTimeJavaDependencyArtifacts() {
return runTimeJavaDepArtifacts;
}
+
+ public static JavaCompilationArgsProvider merge(Iterable<JavaCompilationArgsProvider> providers) {
+ JavaCompilationArgs.Builder javaCompilationArgs = JavaCompilationArgs.builder();
+ JavaCompilationArgs.Builder recursiveJavaCompilationArgs = JavaCompilationArgs.builder();
+ NestedSetBuilder<Artifact> compileTimeJavaDepArtifacts = NestedSetBuilder.stableOrder();
+ NestedSetBuilder<Artifact> runTimeJavaDepArtifacts = NestedSetBuilder.stableOrder();
+
+ for (JavaCompilationArgsProvider provider : providers) {
+ javaCompilationArgs.addTransitiveArgs(
+ provider.getJavaCompilationArgs(), JavaCompilationArgs.ClasspathType.BOTH);
+ recursiveJavaCompilationArgs.addTransitiveArgs(
+ provider.getRecursiveJavaCompilationArgs(), JavaCompilationArgs.ClasspathType.BOTH);
+ compileTimeJavaDepArtifacts.addTransitive(provider.getCompileTimeJavaDependencyArtifacts());
+ runTimeJavaDepArtifacts.addTransitive(provider.getRunTimeJavaDependencyArtifacts());
+ }
+
+ return new JavaCompilationArgsProvider(
+ javaCompilationArgs.build(),
+ recursiveJavaCompilationArgs.build(),
+ compileTimeJavaDepArtifacts.build(),
+ runTimeJavaDepArtifacts.build());
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaNativeLibraryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaNativeLibraryProvider.java
index bcabcb7e24..cd28afe9e6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaNativeLibraryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaNativeLibraryProvider.java
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.rules.java;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.rules.cpp.LinkerInput;
@@ -40,4 +41,14 @@ public final class JavaNativeLibraryProvider implements TransitiveInfoProvider {
public NestedSet<LinkerInput> getTransitiveJavaNativeLibraries() {
return transitiveJavaNativeLibraries;
}
+
+ public static JavaNativeLibraryProvider merge(Iterable<JavaNativeLibraryProvider> deps) {
+ NestedSetBuilder<LinkerInput> transitiveSourceJars = NestedSetBuilder.stableOrder();
+
+ for (JavaNativeLibraryProvider wrapper : deps) {
+ transitiveSourceJars.addTransitive(wrapper.getTransitiveJavaNativeLibraries());
+ }
+ return new JavaNativeLibraryProvider(transitiveSourceJars.build());
+ }
+
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeJarProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeJarProvider.java
index cc137d0a6b..33cfb4019f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeJarProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeJarProvider.java
@@ -39,4 +39,13 @@ public final class JavaRuntimeJarProvider implements TransitiveInfoProvider {
public ImmutableList<Artifact> getRuntimeJars() {
return runtimeJars;
}
+
+ public static JavaRuntimeJarProvider merge(Iterable<JavaRuntimeJarProvider> deps) {
+ ImmutableList.Builder<Artifact> runtimeJars = ImmutableList.builder();
+ for (JavaRuntimeJarProvider wrapper : deps) {
+ runtimeJars.addAll(wrapper.getRuntimeJars());
+ }
+ return new JavaRuntimeJarProvider(runtimeJars.build());
+ }
+
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSourceJarsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSourceJarsProvider.java
index 1ae67741ea..0f5365408d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSourceJarsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSourceJarsProvider.java
@@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
/**
@@ -49,4 +50,16 @@ public final class JavaSourceJarsProvider implements TransitiveInfoProvider {
public ImmutableList<Artifact> getSourceJars() {
return sourceJars;
}
+
+ public static JavaSourceJarsProvider merge(Iterable<JavaSourceJarsProvider> providers) {
+ NestedSetBuilder<Artifact> transitiveSourceJars = NestedSetBuilder.stableOrder();
+ ImmutableList.Builder<Artifact> sourceJars = ImmutableList.builder();
+
+ for (JavaSourceJarsProvider provider : providers) {
+ transitiveSourceJars.addTransitive(provider.getTransitiveSourceJars());
+ sourceJars.addAll(provider.getSourceJars());
+ }
+ return new JavaSourceJarsProvider(transitiveSourceJars.build(), sourceJars.build());
+ }
+
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/ProguardSpecProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/ProguardSpecProvider.java
index afde15c724..0a360b1b19 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/ProguardSpecProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/ProguardSpecProvider.java
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.rules.java;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
/**
@@ -33,4 +34,13 @@ public final class ProguardSpecProvider implements TransitiveInfoProvider {
public NestedSet<Artifact> getTransitiveProguardSpecs() {
return transitiveProguardSpecs;
}
+
+ public static ProguardSpecProvider merge(Iterable<ProguardSpecProvider> providers) {
+ NestedSetBuilder<Artifact> specs = NestedSetBuilder.stableOrder();
+ for (ProguardSpecProvider wrapper : providers) {
+ specs.addTransitive(wrapper.getTransitiveProguardSpecs());
+ }
+ return new ProguardSpecProvider(specs.build());
+ }
+
}