From c5d7a7fd23ec05acbe832840445bee119e721ccc Mon Sep 17 00:00:00 2001 From: Ulf Adams Date: Tue, 23 Feb 2016 15:23:29 +0000 Subject: Make another JavaCommon method static to reduce reliance on mutability. -- MOS_MIGRATED_REVID=115337586 --- .../build/lib/rules/android/AndroidCommon.java | 3 ++- .../build/lib/rules/android/AndroidLibrary.java | 2 +- .../devtools/build/lib/rules/java/JavaBinary.java | 3 ++- .../devtools/build/lib/rules/java/JavaCommon.java | 22 ++++++++++++---------- .../devtools/build/lib/rules/java/JavaLibrary.java | 12 +++++++----- 5 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java index 81e89562b4..3ba34655c6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java @@ -467,7 +467,8 @@ public class AndroidCommon { ruleContext, semantics, javaCommon.getJavacOpts(), attributes); helper.addLibrariesToAttributes(javaCommon.targetsTreatedAsDeps(ClasspathType.COMPILE_ONLY)); - helper.addProvidersToAttributes(javaCommon.compilationArgsFromSources(), asNeverLink); + helper.addProvidersToAttributes( + JavaCommon.compilationArgsFromSources(ruleContext), asNeverLink); attributes.setStrictJavaDeps(getStrictAndroidDeps()); attributes.setRuleKind(ruleContext.getRule().getRuleClass()); attributes.setTargetLabel(ruleContext.getLabel()); diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java index db26843176..8b3927459b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java @@ -188,7 +188,7 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { .add(JavaSourceJarsProvider.class, androidCommon.getJavaSourceJarsProvider()) .add(AndroidCcLinkParamsProvider.class, new AndroidCcLinkParamsProvider(androidCommon.getCcLinkParamsStore())) - .add(JavaPluginInfoProvider.class, javaCommon.getTransitivePlugins()) + .add(JavaPluginInfoProvider.class, JavaCommon.getTransitivePlugins(ruleContext)) .add(ProguardSpecProvider.class, new ProguardSpecProvider(transitiveProguardConfigs)) .addOutputGroup(OutputGroupProvider.HIDDEN_TOP_LEVEL, transitiveProguardConfigs) .add(AndroidLibraryAarProvider.class, new AndroidLibraryAarProvider( diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java index 9084d9b3b0..27afae17d0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java @@ -93,7 +93,8 @@ public class JavaBinary implements RuleConfiguredTargetFactory { JavaCompilationHelper helper = new JavaCompilationHelper( ruleContext, semantics, common.getJavacOpts(), attributesBuilder); helper.addLibrariesToAttributes(deps); - helper.addProvidersToAttributes(common.compilationArgsFromSources(), /* isNeverLink */ false); + helper.addProvidersToAttributes( + JavaCommon.compilationArgsFromSources(ruleContext), /* isNeverLink */ false); attributesBuilder.addNativeLibraries( collectNativeLibraries(common.targetsTreatedAsDeps(ClasspathType.BOTH))); 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 9b12352c11..51b1b689e5 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 @@ -630,7 +630,8 @@ public class JavaCommon { attributes.addInstrumentationMetadataEntries(args.getInstrumentationMetadata()); } - public Iterable compilationArgsFromSources() { + public static Iterable compilationArgsFromSources( + RuleContext ruleContext) { return ruleContext.getPrerequisites("srcs", Mode.TARGET, SourcesJavaCompilationArgsProvider.class); } @@ -651,24 +652,25 @@ public class JavaCommon { private ImmutableList collectPlugins() { List result = new ArrayList<>(); - Iterables.addAll(result, getPluginInfoProvidersForAttribute(":java_plugins", Mode.HOST)); - Iterables.addAll(result, getPluginInfoProvidersForAttribute("plugins", Mode.HOST)); - Iterables.addAll(result, getPluginInfoProvidersForAttribute("deps", Mode.TARGET)); + Iterables.addAll(result, + getPluginInfoProvidersForAttribute(ruleContext, ":java_plugins", Mode.HOST)); + Iterables.addAll(result, getPluginInfoProvidersForAttribute(ruleContext, "plugins", Mode.HOST)); + Iterables.addAll(result, getPluginInfoProvidersForAttribute(ruleContext, "deps", Mode.TARGET)); return ImmutableList.copyOf(result); } - Iterable getPluginInfoProvidersForAttribute(String attribute, - Mode mode) { + private static Iterable getPluginInfoProvidersForAttribute( + RuleContext ruleContext, String attribute, Mode mode) { if (ruleContext.attributes().has(attribute, BuildType.LABEL_LIST)) { return ruleContext.getPrerequisites(attribute, mode, JavaPluginInfoProvider.class); } return ImmutableList.of(); } - - public JavaPluginInfoProvider getTransitivePlugins() { + + public static JavaPluginInfoProvider getTransitivePlugins(RuleContext ruleContext) { return JavaPluginInfoProvider.merge(Iterables.concat( - getPluginInfoProvidersForAttribute("exported_plugins", Mode.HOST), - getPluginInfoProvidersForAttribute("exports", Mode.TARGET))); + getPluginInfoProvidersForAttribute(ruleContext, "exported_plugins", Mode.HOST), + getPluginInfoProvidersForAttribute(ruleContext, "exports", Mode.TARGET))); } public Runfiles getRunfiles(boolean neverLink) { 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 835c929d8e..1a344cb4cb 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 @@ -58,8 +58,10 @@ public class JavaLibrary implements RuleConfiguredTargetFactory { JavaCompilationHelper helper = new JavaCompilationHelper( ruleContext, semantics, common.getJavacOpts(), attributesBuilder); helper.addLibrariesToAttributes(common.targetsTreatedAsDeps(ClasspathType.COMPILE_ONLY)); - helper.addProvidersToAttributes(common.compilationArgsFromSources(), - JavaCommon.isNeverLink(ruleContext)); + Iterable compilationArgsFromSources = + JavaCommon.compilationArgsFromSources(ruleContext); + helper.addProvidersToAttributes( + compilationArgsFromSources, JavaCommon.isNeverLink(ruleContext)); if (ruleContext.hasErrors()) { return null; @@ -136,9 +138,9 @@ public class JavaLibrary implements RuleConfiguredTargetFactory { // If sources are empty, treat this library as a forwarding node for dependencies. JavaCompilationArgs javaCompilationArgs = common.collectJavaCompilationArgs( - false, neverLink, common.compilationArgsFromSources(), false); + false, neverLink, compilationArgsFromSources, false); JavaCompilationArgs recursiveJavaCompilationArgs = common.collectJavaCompilationArgs( - true, neverLink, common.compilationArgsFromSources(), false); + true, neverLink, compilationArgsFromSources, false); NestedSet compileTimeJavaDepArtifacts = common.collectCompileTimeDependencyArtifacts( javaArtifacts.getCompileTimeDependencyArtifact()); NestedSet runTimeJavaDepArtifacts = NestedSetBuilder.emptySet(Order.STABLE_ORDER); @@ -191,7 +193,7 @@ public class JavaLibrary implements RuleConfiguredTargetFactory { .add(JavaSourceJarsProvider.class, new JavaSourceJarsProvider( transitiveSourceJars, ImmutableList.of(srcJar))) // TODO(bazel-team): this should only happen for java_plugin - .add(JavaPluginInfoProvider.class, common.getTransitivePlugins()) + .add(JavaPluginInfoProvider.class, JavaCommon.getTransitivePlugins(ruleContext)) .add(ProguardSpecProvider.class, new ProguardSpecProvider(proguardSpecs)) .addOutputGroup(JavaSemantics.SOURCE_JARS_OUTPUT_GROUP, transitiveSourceJars) .addOutputGroup(OutputGroupProvider.HIDDEN_TOP_LEVEL, proguardSpecs); -- cgit v1.2.3