aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar ruperts <ruperts@google.com>2018-03-16 19:01:35 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-16 19:02:51 -0700
commit93894281b2624378abd05d8a07c498ebaf50e3af (patch)
tree1b5e4394edc5d797cc97d4d4a4f4238d9d2853ee /src/main/java/com/google/devtools
parent44a26afb091f2d23d68bcad53e45a319b299867a (diff)
Automated rollback of commit 48e205a19bed1cccaa51c7bbfbef6c2fbe47e3de.
*** Reason for rollback *** Testing if rollback fixes http://b/75307752, http://b/75309658, and http://b/75312426 *** Original change description *** Modify the Java rules to take in JavaInfo instead of JavaCompilationArgsProvider and JavaPluginInfoProvider. This change facilitates the interaction of Java native and Java Skylark code, avoiding code duplication in the future. PiperOrigin-RevId: 189424668
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java29
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgs.java62
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsHelper.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java31
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java25
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspectCommon.java9
8 files changed, 96 insertions, 100 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 899076bb74..4774ef895b 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
@@ -106,7 +106,7 @@ public class JavaCommon {
targetsTreatedAsDeps;
private final ImmutableList<Artifact> sources;
- private ImmutableList<JavaInfo> activePlugins = ImmutableList.of();
+ private ImmutableList<JavaPluginInfoProvider> activePlugins = ImmutableList.of();
private final RuleContext ruleContext;
private final JavaSemantics semantics;
@@ -216,8 +216,7 @@ public class JavaCommon {
public NestedSet<Artifact> getProcessorClasspathJars() {
NestedSetBuilder<Artifact> builder = NestedSetBuilder.naiveLinkOrder();
- for (JavaPluginInfoProvider plugin :
- JavaInfo.getProvidersFromListOfJavaProviders(JavaPluginInfoProvider.class, activePlugins)) {
+ for (JavaPluginInfoProvider plugin : activePlugins) {
builder.addTransitive(plugin.getProcessorClasspath());
}
return builder.build();
@@ -225,8 +224,7 @@ public class JavaCommon {
public ImmutableList<String> getProcessorClassNames() {
Set<String> processorNames = new LinkedHashSet<>();
- for (JavaPluginInfoProvider plugin :
- JavaInfo.getProvidersFromListOfJavaProviders(JavaPluginInfoProvider.class, activePlugins)) {
+ for (JavaPluginInfoProvider plugin : activePlugins) {
processorNames.addAll(plugin.getProcessorClasses());
}
return ImmutableList.copyOf(processorNames);
@@ -788,9 +786,8 @@ public class JavaCommon {
* to the given attributes. Plugins having repetitive names/paths will be added only once.
*/
public static void addPlugins(
- JavaTargetAttributes.Builder attributes, Iterable<JavaInfo> activePlugins) {
- for (JavaPluginInfoProvider plugin :
- JavaInfo.getProvidersFromListOfJavaProviders(JavaPluginInfoProvider.class, activePlugins)) {
+ JavaTargetAttributes.Builder attributes, Iterable<JavaPluginInfoProvider> activePlugins) {
+ for (JavaPluginInfoProvider plugin : activePlugins) {
for (String name : plugin.getProcessorClasses()) {
attributes.addProcessorName(name);
}
@@ -805,8 +802,8 @@ public class JavaCommon {
}
}
- private ImmutableList<JavaInfo> collectPlugins() {
- List<JavaInfo> result = new ArrayList<>();
+ private ImmutableList<JavaPluginInfoProvider> collectPlugins() {
+ List<JavaPluginInfoProvider> result = new ArrayList<>();
Iterables.addAll(result,
getPluginInfoProvidersForAttribute(ruleContext, ":java_plugins", Mode.HOST));
Iterables.addAll(result, getPluginInfoProvidersForAttribute(ruleContext, "plugins", Mode.HOST));
@@ -814,10 +811,11 @@ public class JavaCommon {
return ImmutableList.copyOf(result);
}
- private static Iterable<JavaInfo> getPluginInfoProvidersForAttribute(
+ private static Iterable<JavaPluginInfoProvider> getPluginInfoProvidersForAttribute(
RuleContext ruleContext, String attribute, Mode mode) {
if (ruleContext.attributes().has(attribute, BuildType.LABEL_LIST)) {
- return JavaInfo.getJavaInfosFromListOfTargets(ruleContext.getPrerequisites(attribute, mode));
+ return JavaInfo.getProvidersFromListOfTargets(
+ JavaPluginInfoProvider.class, ruleContext.getPrerequisites(attribute, mode));
}
return ImmutableList.of();
}
@@ -853,10 +851,9 @@ public class JavaCommon {
}
public static JavaPluginInfoProvider getTransitivePlugins(RuleContext ruleContext) {
- return JavaInfo.merge(Iterables.concat(
- getPluginInfoProvidersForAttribute(ruleContext, "exported_plugins", Mode.HOST),
- getPluginInfoProvidersForAttribute(ruleContext, "exports", Mode.TARGET)))
- .getProvider(JavaPluginInfoProvider.class);
+ return JavaPluginInfoProvider.merge(Iterables.concat(
+ getPluginInfoProvidersForAttribute(ruleContext, "exported_plugins", Mode.HOST),
+ getPluginInfoProvidersForAttribute(ruleContext, "exports", Mode.TARGET)));
}
public static Runfiles getRunfiles(
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 e710f83a8a..7ffee24f87 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
@@ -192,14 +192,32 @@ public abstract class JavaCompilationArgs {
return this;
}
+ public Builder addTransitiveCompilationArgs(
+ JavaCompilationArgsProvider dep, boolean recursive, ClasspathType type) {
+ JavaCompilationArgs args = recursive
+ ? dep.getRecursiveJavaCompilationArgs()
+ : dep.getJavaCompilationArgs();
+ addTransitiveArgs(args, type);
+ return this;
+ }
+
+ public Builder addTransitiveCompilationArgs(
+ Iterable<JavaCompilationArgsProvider> args, boolean recursive, ClasspathType type) {
+ for (JavaCompilationArgsProvider provider : args) {
+ addTransitiveCompilationArgs(provider, recursive, type);
+ }
+ return this;
+ }
+
/**
* Merges the artifacts of another target.
*/
- public Builder addTransitiveTarget(
- TransitiveInfoCollection dep, boolean recursive, ClasspathType type) {
- JavaInfo javaInfo = (JavaInfo) dep.get(JavaInfo.PROVIDER.getKey());
- if (javaInfo != null) {
- addTransitiveDependency(javaInfo, recursive, type);
+ public Builder addTransitiveTarget(TransitiveInfoCollection dep, boolean recursive,
+ ClasspathType type) {
+ JavaCompilationArgsProvider provider =
+ JavaInfo.getProvider(JavaCompilationArgsProvider.class, dep);
+ if (provider != null) {
+ addTransitiveCompilationArgs(provider, recursive, type);
return this;
} else {
NestedSet<Artifact> filesToBuild =
@@ -241,21 +259,19 @@ public abstract class JavaCompilationArgs {
/**
* Merges the artifacts of a collection of targets.
*/
- public Builder addTransitiveDependencies(
- Iterable<JavaInfo> deps, boolean recursive, ClasspathType type) {
- for (JavaInfo dep : deps) {
- addTransitiveDependency(dep, recursive, type);
+ public Builder addTransitiveDependencies(Iterable<JavaCompilationArgsProvider> deps,
+ boolean recursive) {
+ for (JavaCompilationArgsProvider dep : deps) {
+ addTransitiveDependency(dep, recursive, ClasspathType.BOTH);
}
return this;
}
-
- /**
- * Merges the artifacts of a collection of targets.
- */
- public Builder addTransitiveDependencies(Iterable<JavaInfo> deps, boolean recursive) {
- for (JavaInfo dep : deps) {
- addTransitiveDependency(dep, recursive, ClasspathType.BOTH);
+ /** Merges the artifacts of a collection of targets. */
+ public Builder addTransitiveDependencies(
+ Iterable<JavaCompilationArgsProvider> deps, boolean recursive, ClasspathType type) {
+ for (JavaCompilationArgsProvider dep : deps) {
+ addTransitiveDependency(dep, recursive, type);
}
return this;
}
@@ -263,14 +279,12 @@ public abstract class JavaCompilationArgs {
/**
* Merges the artifacts of another target.
*/
- private Builder addTransitiveDependency(JavaInfo dep, boolean recursive, ClasspathType type) {
- JavaCompilationArgsProvider provider = dep.getProvider(JavaCompilationArgsProvider.class);
- if (provider != null) {
- JavaCompilationArgs args = recursive
- ? provider.getRecursiveJavaCompilationArgs()
- : provider.getJavaCompilationArgs();
- addTransitiveArgs(args, type);
- }
+ private Builder addTransitiveDependency(JavaCompilationArgsProvider dep, boolean recursive,
+ ClasspathType type) {
+ JavaCompilationArgs args = recursive
+ ? dep.getRecursiveJavaCompilationArgs()
+ : dep.getJavaCompilationArgs();
+ addTransitiveArgs(args, type);
return this;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsHelper.java
index 81d0d47424..b25234d86b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsHelper.java
@@ -29,15 +29,15 @@ abstract class JavaCompilationArgsHelper {
abstract JavaCompilationArtifacts compilationArtifacts();
- abstract List<JavaInfo> depsCompilationArgs();
+ abstract List<JavaCompilationArgsProvider> depsCompilationArgs();
abstract Iterable<? extends TransitiveInfoCollection> deps();
- abstract List<JavaInfo> runtimeDepsCompilationArgs();
+ abstract List<JavaCompilationArgsProvider> runtimeDepsCompilationArgs();
abstract Iterable<? extends TransitiveInfoCollection> runtimeDeps();
- abstract List<JavaInfo> exportsCompilationArgs();
+ abstract List<JavaCompilationArgsProvider> exportsCompilationArgs();
abstract Iterable<? extends TransitiveInfoCollection> exports();
@@ -63,15 +63,15 @@ abstract class JavaCompilationArgsHelper {
abstract Builder setCompilationArtifacts(JavaCompilationArtifacts value);
- abstract Builder setDepsCompilationArgs(List<JavaInfo> value);
+ abstract Builder setDepsCompilationArgs(List<JavaCompilationArgsProvider> value);
abstract Builder setDeps(Iterable<? extends TransitiveInfoCollection> value);
- abstract Builder setRuntimeDepsCompilationArgs(List<JavaInfo> value);
+ abstract Builder setRuntimeDepsCompilationArgs(List<JavaCompilationArgsProvider> value);
abstract Builder setRuntimeDeps(Iterable<? extends TransitiveInfoCollection> value);
- abstract Builder setExportsCompilationArgs(List<JavaInfo> value);
+ abstract Builder setExportsCompilationArgs(List<JavaCompilationArgsProvider> value);
abstract Builder setExports(Iterable<? extends TransitiveInfoCollection> value);
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 bd4a7f5db2..faab225a5e 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
@@ -719,10 +719,10 @@ public final class JavaCompilationHelper {
}
static void addDependencyArtifactsToAttributes(
- JavaTargetAttributes.Builder attributes, Iterable<JavaInfo> deps) {
+ JavaTargetAttributes.Builder attributes,
+ Iterable<? extends JavaCompilationArgsProvider> deps) {
NestedSetBuilder<Artifact> result = NestedSetBuilder.stableOrder();
- for (JavaCompilationArgsProvider provider :
- JavaInfo.fetchProvidersFromList(deps, JavaCompilationArgsProvider.class)) {
+ for (JavaCompilationArgsProvider provider : deps) {
result.addTransitive(provider.getCompileTimeJavaDependencyArtifacts());
}
attributes.addCompileTimeDependencyArtifacts(result.build());
@@ -744,7 +744,15 @@ public final class JavaCompilationHelper {
JavaClasspathMode classpathMode = getJavaConfiguration().getReduceJavaClasspath();
if (isStrict() && classpathMode != JavaClasspathMode.OFF) {
- addDependencyArtifactsToAttributes(attributes, JavaInfo.getJavaInfo(deps));
+ List<JavaCompilationArgsProvider> compilationArgsProviders = new ArrayList<>();
+ for (TransitiveInfoCollection dep : deps) {
+ JavaCompilationArgsProvider provider =
+ JavaInfo.getProvider(JavaCompilationArgsProvider.class, dep);
+ if (provider != null) {
+ compilationArgsProviders.add(provider);
+ }
+ }
+ addDependencyArtifactsToAttributes(attributes, compilationArgsProviders);
}
}
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 6f0893c869..33ef7f8a36 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
@@ -315,7 +315,7 @@ public final class JavaInfo extends NativeInfo {
* in the given list are merged into one provider that is added to the resulting
* {@link JavaInfo}.
*/
- public static JavaInfo merge(Iterable<JavaInfo> providers) {
+ public static JavaInfo merge(List<JavaInfo> providers) {
List<JavaCompilationArgsProvider> javaCompilationArgsProviders =
JavaInfo.fetchProvidersFromList(providers, JavaCompilationArgsProvider.class);
List<JavaSourceJarsProvider> javaSourceJarsProviders =
@@ -391,7 +391,7 @@ public final class JavaInfo extends NativeInfo {
if (provider != null) {
return provider;
}
- JavaInfo javaInfo = getJavaInfo(target);
+ JavaInfo javaInfo = (JavaInfo) target.get(JavaInfo.PROVIDER.getKey());
if (javaInfo == null) {
return null;
}
@@ -440,33 +440,6 @@ public final class JavaInfo extends NativeInfo {
return providersList.build();
}
- public static JavaInfo getJavaInfo(TransitiveInfoCollection target) {
- return (JavaInfo) target.get(JavaInfo.PROVIDER.getKey());
- }
-
- public static List<JavaInfo> getJavaInfo(Iterable<? extends TransitiveInfoCollection> targets) {
- ImmutableList.Builder<JavaInfo> javaInfos = new ImmutableList.Builder<>();
- for (TransitiveInfoCollection target : targets) {
- JavaInfo javaInfo = getJavaInfo(target);
- if (javaInfo != null) {
- javaInfos.add(javaInfo);
- }
- }
- return javaInfos.build();
- }
-
- public static List<JavaInfo> getJavaInfosFromListOfTargets(
- Iterable<? extends TransitiveInfoCollection> targets) {
- List<JavaInfo> providersList = new ArrayList<>();
- for (TransitiveInfoCollection target : targets) {
- JavaInfo provider = getJavaInfo(target);
- if (provider != null) {
- providersList.add(provider);
- }
- }
- return providersList;
- }
-
@VisibleForSerialization
@AutoCodec.Instantiator
JavaInfo(TransitiveInfoProviderMap providers, boolean neverlink, Location location) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
index b5a9803518..df28e7cc9c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
@@ -398,12 +398,16 @@ final class JavaInfoBuildHelper {
.setSourcePathEntries(sourcepathEntries)
.setJavacOpts(javacOpts);
- helper.addAllDeps(deps);
- helper.addAllExports(exports);
+ List<JavaCompilationArgsProvider> depsCompilationArgsProviders =
+ JavaInfo.fetchProvidersFromList(deps, JavaCompilationArgsProvider.class);
+ List<JavaCompilationArgsProvider> exportsCompilationArgsProviders =
+ JavaInfo.fetchProvidersFromList(exports, JavaCompilationArgsProvider.class);
+ helper.addAllDeps(depsCompilationArgsProviders);
+ helper.addAllExports(exportsCompilationArgsProviders);
helper.setCompilationStrictDepsMode(getStrictDepsMode(strictDepsMode.toUpperCase()));
- helper.addAllPlugins(plugins);
- helper.addAllPlugins(deps);
+ helper.addAllPlugins(JavaInfo.fetchProvidersFromList(plugins, JavaPluginInfoProvider.class));
+ helper.addAllPlugins(JavaInfo.fetchProvidersFromList(deps, JavaPluginInfoProvider.class));
JavaRuleOutputJarsProvider.Builder outputJarsBuilder = JavaRuleOutputJarsProvider.builder();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java
index b585e6d8d7..8baf2c41e5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java
@@ -53,9 +53,9 @@ public final class JavaLibraryHelper {
/**
* Contains all the dependencies; these are treated as both compile-time and runtime dependencies.
*/
- private final List<JavaInfo> deps = new ArrayList<>();
- private final List<JavaInfo> exports = new ArrayList<>();
- private final List<JavaInfo> plugins = new ArrayList<>();
+ private final List<JavaCompilationArgsProvider> deps = new ArrayList<>();
+ private final List<JavaCompilationArgsProvider> exports = new ArrayList<>();
+ private final List<JavaPluginInfoProvider> plugins = new ArrayList<>();
private ImmutableList<String> javacOpts = ImmutableList.of();
private ImmutableList<Artifact> sourcePathEntries = ImmutableList.of();
private StrictDepsMode strictDepsMode = StrictDepsMode.OFF;
@@ -98,7 +98,7 @@ public final class JavaLibraryHelper {
return this;
}
- public JavaLibraryHelper addDep(JavaInfo provider) {
+ public JavaLibraryHelper addDep(JavaCompilationArgsProvider provider) {
checkNotNull(provider);
this.deps.add(provider);
return this;
@@ -112,17 +112,18 @@ public final class JavaLibraryHelper {
return this;
}
- public JavaLibraryHelper addAllDeps(Iterable<JavaInfo> providers) {
+ public JavaLibraryHelper addAllDeps(
+ Iterable<JavaCompilationArgsProvider> providers) {
Iterables.addAll(deps, providers);
return this;
}
- public JavaLibraryHelper addAllExports(Iterable<JavaInfo> providers) {
+ public JavaLibraryHelper addAllExports(Iterable<JavaCompilationArgsProvider> providers) {
Iterables.addAll(exports, providers);
return this;
}
- public JavaLibraryHelper addAllPlugins(Iterable<JavaInfo> providers) {
+ public JavaLibraryHelper addAllPlugins(Iterable<JavaPluginInfoProvider> providers) {
Iterables.addAll(plugins, providers);
return this;
}
@@ -202,7 +203,8 @@ public final class JavaLibraryHelper {
}
if (isStrict() && classpathMode != JavaClasspathMode.OFF) {
- JavaCompilationHelper.addDependencyArtifactsToAttributes(attributes, deps);
+ JavaCompilationHelper.addDependencyArtifactsToAttributes(
+ attributes, deps);
}
JavaCompilationArtifacts.Builder artifactsBuilder = new JavaCompilationArtifacts.Builder();
@@ -304,13 +306,14 @@ public final class JavaLibraryHelper {
JavaCompilationArgs.builder()
.merge(helper.compilationArtifacts(), helper.isNeverLink())
.addTransitiveTargets(helper.exports(), helper.recursive(), type)
- .addTransitiveDependencies(helper.exportsCompilationArgs(), helper.recursive(), type);
+ .addTransitiveCompilationArgs(
+ helper.exportsCompilationArgs(), helper.recursive(), type);
// TODO(bazel-team): remove srcs-less behaviour after android_library users are refactored
if (helper.recursive() || helper.srcLessDepsExport()) {
builder
- .addTransitiveDependencies(helper.depsCompilationArgs(), helper.recursive(), type)
+ .addTransitiveCompilationArgs(helper.depsCompilationArgs(), helper.recursive(), type)
.addTransitiveTargets(helper.deps(), helper.recursive(), type)
- .addTransitiveDependencies(
+ .addTransitiveCompilationArgs(
helper.runtimeDepsCompilationArgs(), helper.recursive(), ClasspathType.RUNTIME_ONLY)
.addTransitiveTargets(
helper.runtimeDeps(), helper.recursive(), ClasspathType.RUNTIME_ONLY);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspectCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspectCommon.java
index 1136f27584..e1d15777f4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspectCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspectCommon.java
@@ -129,13 +129,10 @@ public class JavaProtoAspectCommon {
.setOutput(outputJar)
.addSourceJars(sourceJar)
.setJavacOpts(ProtoJavacOpts.constructJavacOpts(ruleContext));
- helper.addDep(
- JavaInfo.Builder.create()
- .addProvider(JavaCompilationArgsProvider.class, dep)
- .build()
- ).setCompilationStrictDepsMode(StrictDepsMode.OFF);
+ helper.addDep(dep).setCompilationStrictDepsMode(StrictDepsMode.OFF);
for (TransitiveInfoCollection t : getProtoRuntimeDeps()) {
- JavaInfo provider = JavaInfo.getJavaInfo(t);
+ JavaCompilationArgsProvider provider =
+ JavaInfo.getProvider(JavaCompilationArgsProvider.class, t);
if (provider != null) {
helper.addDep(provider);
}