diff options
Diffstat (limited to 'src/main/java')
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); } |