aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Irina Iancu <elenairina@google.com>2017-02-01 16:37:15 +0000
committerGravatar Yun Peng <pcloudy@google.com>2017-02-02 09:56:10 +0000
commitc9c0f0ef8862052d9b6718c8ff8ae76947c70cc3 (patch)
treeb92e3738bd85823bd12dfb5cd372b9e015d51dd0
parent6712cac0b3922822e297a518d988d9c5675adb29 (diff)
Change JavaProvider.getProvider to first look for the provider in the target
and if not found, look for it in SkylarkProviders -> JavaProvider. -- PiperOrigin-RevId: 146247125 MOS_MIGRATED_REVID=146247125
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java12
3 files changed, 14 insertions, 16 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java
index 96f8586f9b..a92f22de7c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java
@@ -151,12 +151,8 @@ public abstract class JavaCompilationArgs {
*/
public Builder addTransitiveTarget(TransitiveInfoCollection dep, boolean recursive,
ClasspathType type) {
- JavaCompilationArgsProvider provider = dep.getProvider(JavaCompilationArgsProvider.class);
- if (provider == null) {
- // Only look for the JavaProvider when there is no JavaCompilationArgsProvider, else
- // it would encapsulate the same information.
- provider = JavaProvider.getProvider(JavaCompilationArgsProvider.class, dep);
- }
+ JavaCompilationArgsProvider provider =
+ JavaProvider.getProvider(JavaCompilationArgsProvider.class, dep);
if (provider != null) {
addTransitiveCompilationArgs(provider, recursive, type);
return this;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
index de2ccf03d1..d3fcf21442 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
@@ -663,14 +663,8 @@ public final class JavaCompilationHelper {
if (isStrict() && classpathMode != JavaClasspathMode.OFF) {
List<JavaCompilationArgsProvider> compilationArgsProviders = new LinkedList<>();
for (TransitiveInfoCollection dep : deps) {
- // First check if there is a JavaCompilationArgsProvider.
- JavaCompilationArgsProvider provider = dep.getProvider(JavaCompilationArgsProvider.class);
-
- if (provider == null) {
- // A target can either have both JavaCompilationArgsProvider and JavaProvider that
- // encapsulates the same information, or just one of them.
- provider = JavaProvider.getProvider(JavaCompilationArgsProvider.class, dep);
- }
+ JavaCompilationArgsProvider provider =
+ JavaProvider.getProvider(JavaCompilationArgsProvider.class, dep);
if (provider != null) {
compilationArgsProviders.add(provider);
}
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 51a5af2bc2..f63f453c77 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
@@ -90,13 +90,21 @@ public final class JavaProvider extends SkylarkClassObject implements Transitive
}
/**
- * Returns a provider of the specified class, fetched from the JavaProvider of the given target.
- * JavaProvider can be found as a declared provider in SkylarkProviders.
+ * Returns a provider of the specified class, fetched from the specified target or, if not found,
+ * from the JavaProvider of the given target. JavaProvider can be found as a declared provider
+ * in SkylarkProviders.
* Returns null if no such provider exists.
+ *
+ * <p>A target can either have both the specified provider and JavaProvider that encapsulates the
+ * same information, or just one of them.</p>
*/
@Nullable
public static <T extends TransitiveInfoProvider> T getProvider(
Class<T> providerClass, TransitiveInfoCollection target) {
+ T provider = target.getProvider(providerClass);
+ if (provider != null) {
+ return provider;
+ }
SkylarkProviders skylarkProviders = target.getProvider(SkylarkProviders.class);
if (skylarkProviders == null) {
return null;