diff options
author | 2017-03-29 08:37:24 +0000 | |
---|---|---|
committer | 2017-03-29 14:22:48 +0200 | |
commit | ceb0d88ad95e5f636f687cffa6c157293455b37e (patch) | |
tree | eb82c8de14cd5429818eed448ad8983332da3737 /src/main/java/com/google/devtools | |
parent | a4b37d096125e2e30c98713a4168ece040840a1b (diff) |
Stop returning JavaSourceJarsProvider from java_library
since it's already returned via JavaProvider.
PiperOrigin-RevId: 151550286
Diffstat (limited to 'src/main/java/com/google/devtools')
4 files changed, 19 insertions, 14 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( |