aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-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);
}