aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2017-03-29 08:37:24 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2017-03-29 14:22:48 +0200
commitceb0d88ad95e5f636f687cffa6c157293455b37e (patch)
treeeb82c8de14cd5429818eed448ad8983332da3737 /src
parenta4b37d096125e2e30c98713a4168ece040840a1b (diff)
Stop returning JavaSourceJarsProvider from java_library
since it's already returned via JavaProvider. PiperOrigin-RevId: 151550286
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java15
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java3
5 files changed, 21 insertions, 15 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
index b6f0f2b448..b5ab681d1f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
@@ -391,16 +391,9 @@ public class JavaCommon {
NestedSetBuilder<Artifact> builder = NestedSetBuilder.<Artifact>stableOrder()
.addAll(targetSrcJars);
- for (TransitiveInfoCollection dep : getDependencies()) {
- JavaSourceJarsProvider sourceJarsProvider = dep.getProvider(JavaSourceJarsProvider.class);
- if (sourceJarsProvider == null) {
- // A target can either have both JavaSourceJarsProvider and JavaProvider that
- // encapsulates the same information, or just one of them.
- sourceJarsProvider = JavaProvider.getProvider(JavaSourceJarsProvider.class, dep);
- }
- if (sourceJarsProvider != null) {
- builder.addTransitive(sourceJarsProvider.getTransitiveSourceJars());
- }
+ for (JavaSourceJarsProvider sourceJarsProvider : JavaProvider.getProvidersFromListOfTargets(
+ JavaSourceJarsProvider.class, getDependencies())) {
+ builder.addTransitive(sourceJarsProvider.getTransitiveSourceJars());
}
return builder.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
index 20b6eba8ca..efd0721b34 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
@@ -191,8 +191,8 @@ public class JavaImport implements RuleConfiguredTargetFactory {
if (srcJar != null) {
transitiveJavaSourceJarBuilder.add(srcJar);
}
- for (JavaSourceJarsProvider other :
- ruleContext.getPrerequisites("exports", Mode.TARGET, JavaSourceJarsProvider.class)) {
+ for (JavaSourceJarsProvider other : JavaProvider.getProvidersFromListOfTargets(
+ JavaSourceJarsProvider.class, ruleContext.getPrerequisites("exports", Mode.TARGET))) {
transitiveJavaSourceJarBuilder.addTransitive(other.getTransitiveSourceJars());
}
return transitiveJavaSourceJarBuilder.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
index bf9bce941a..403abd7aff 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
@@ -227,7 +227,6 @@ public class JavaLibrary implements RuleConfiguredTargetFactory {
.add(
JavaSourceInfoProvider.class,
JavaSourceInfoProvider.fromJavaTargetAttributes(attributes, semantics))
- .add(JavaSourceJarsProvider.class, sourceJarsProvider)
// TODO(bazel-team): this should only happen for java_plugin
.add(JavaPluginInfoProvider.class, JavaCommon.getTransitivePlugins(ruleContext))
.add(ProguardSpecProvider.class, new ProguardSpecProvider(proguardSpecs))
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java
index 4d1a967ed9..ff419be5e4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.packages.ClassObjectConstructor;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import javax.annotation.Nullable;
@@ -104,7 +105,7 @@ public final class JavaProvider extends SkylarkClassObject implements Transitive
* JavaCompilationArgsProvider.
*/
public static <C extends TransitiveInfoProvider> List<C> fetchProvidersFromList(
- List<JavaProvider> javaProviders, Class<C> providersClass) {
+ Iterable<JavaProvider> javaProviders, Class<C> providersClass) {
List<C> fetchedProviders = new LinkedList<>();
for (JavaProvider javaProvider : javaProviders) {
C provider = javaProvider.getProvider(providersClass);
@@ -143,6 +144,18 @@ public final class JavaProvider extends SkylarkClassObject implements Transitive
return javaProvider.getProvider(providerClass);
}
+ public static <T extends TransitiveInfoProvider> List<T> getProvidersFromListOfTargets(
+ Class<T> providerClass, Iterable<? extends TransitiveInfoCollection> targets) {
+ List<T> providersList = new ArrayList<>();
+ for (TransitiveInfoCollection target : targets) {
+ T provider = getProvider(providerClass, target);
+ if (provider != null) {
+ providersList.add(provider);
+ }
+ }
+ return providersList;
+ }
+
private JavaProvider(TransitiveInfoProviderMap providers) {
super(JAVA_PROVIDER, ImmutableMap.<String, Object>of(
"transitive_runtime_jars", SkylarkNestedSet.of(
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
index ef609dbb83..5a31671b2d 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
@@ -33,6 +33,7 @@ import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.rules.SkylarkRuleContext;
+import com.google.devtools.build.lib.rules.java.JavaProvider;
import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider;
import com.google.devtools.build.lib.rules.python.PyCommon;
import com.google.devtools.build.lib.skylark.util.SkylarkTestCase;
@@ -430,7 +431,7 @@ public class SkylarkRuleContextTest extends SkylarkTestCase {
Object result = evalRuleContextCode(ruleContext, "ruleContext.attr.srcs");
// Check for a known provider
TransitiveInfoCollection tic1 = (TransitiveInfoCollection) ((SkylarkList) result).get(0);
- assertNotNull(tic1.getProvider(JavaSourceJarsProvider.class));
+ assertNotNull(JavaProvider.getProvider(JavaSourceJarsProvider.class, tic1));
// Check an unimplemented provider too
assertNull(tic1.getProvider(SkylarkProviders.class)
.getValue(PyCommon.PYTHON_SKYLARK_PROVIDER_NAME));