aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java50
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java44
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSourceJarsProvider.java36
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/StrictDepsUtils.java2
10 files changed, 93 insertions, 89 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 13bad6c251..c12804f3d2 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
@@ -734,7 +734,7 @@ public class AndroidCommon {
apksUnderTest))
.add(
JavaCompilationArgsProvider.class,
- new JavaCompilationArgsProvider(
+ JavaCompilationArgsProvider.create(
javaCompilationArgs,
recursiveJavaCompilationArgs,
compileTimeDependencyArtifacts,
@@ -849,7 +849,7 @@ public class AndroidCommon {
public Artifact getResourceClassJar() {
return resourceClassJar;
}
-
+
/**
* Returns Jars produced by this rule that may go into the runtime classpath. By contrast
* {@link #getRuntimeJars()} returns the complete runtime classpath needed by this rule, including
@@ -876,7 +876,7 @@ public class AndroidCommon {
}
public JavaSourceJarsProvider getJavaSourceJarsProvider() {
- return new JavaSourceJarsProvider(getTransitiveSourceJars(), getTopLevelSourceJars());
+ return JavaSourceJarsProvider.create(getTransitiveSourceJars(), getTopLevelSourceJars());
}
public boolean isNeverLink() {
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 d476e9d46f..7f6ba892e4 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
@@ -337,10 +337,12 @@ public class JavaBinary implements RuleConfiguredTargetFactory {
return builder
.setFilesToBuild(filesToBuild)
- .add(JavaRuleOutputJarsProvider.class, JavaRuleOutputJarsProvider.builder()
- .addOutputJar(classJar, null /* iJar */, srcJar)
- .setJdeps(outputDepsProto)
- .build())
+ .add(
+ JavaRuleOutputJarsProvider.class,
+ JavaRuleOutputJarsProvider.builder()
+ .addOutputJar(classJar, null /* iJar */, srcJar)
+ .setJdeps(outputDepsProto)
+ .build())
.add(RunfilesProvider.class, runfilesProvider)
.setRunfilesSupport(runfilesSupport, executable)
.add(
@@ -350,7 +352,8 @@ public class JavaBinary implements RuleConfiguredTargetFactory {
JavaSourceInfoProvider.class,
JavaSourceInfoProvider.fromJavaTargetAttributes(attributes, semantics))
.add(
- JavaSourceJarsProvider.class, new JavaSourceJarsProvider(transitiveSourceJars, srcJars))
+ JavaSourceJarsProvider.class,
+ JavaSourceJarsProvider.create(transitiveSourceJars, srcJars))
.addOutputGroup(JavaSemantics.SOURCE_JARS_OUTPUT_GROUP, transitiveSourceJars)
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java
index ca8b241b6e..837a270172 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.rules.java;
+import com.google.auto.value.AutoValue;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -25,29 +26,30 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
* An interface for objects that provide information on how to include them in
* Java builds.
*/
+@AutoValue
@Immutable
-public final class JavaCompilationArgsProvider implements TransitiveInfoProvider {
- private final JavaCompilationArgs javaCompilationArgs;
- private final JavaCompilationArgs recursiveJavaCompilationArgs;
- private final NestedSet<Artifact> compileTimeJavaDepArtifacts;
- private final NestedSet<Artifact> runTimeJavaDepArtifacts;
+public abstract class JavaCompilationArgsProvider implements TransitiveInfoProvider {
- public JavaCompilationArgsProvider(JavaCompilationArgs javaCompilationArgs,
+ public static JavaCompilationArgsProvider create(
+ JavaCompilationArgs javaCompilationArgs,
JavaCompilationArgs recursiveJavaCompilationArgs,
NestedSet<Artifact> compileTimeJavaDepArtifacts,
NestedSet<Artifact> runTimeJavaDepArtifacts) {
- this.javaCompilationArgs = javaCompilationArgs;
- this.recursiveJavaCompilationArgs = recursiveJavaCompilationArgs;
- this.compileTimeJavaDepArtifacts = compileTimeJavaDepArtifacts;
- this.runTimeJavaDepArtifacts = runTimeJavaDepArtifacts;
+ return new AutoValue_JavaCompilationArgsProvider(
+ javaCompilationArgs,
+ recursiveJavaCompilationArgs,
+ compileTimeJavaDepArtifacts,
+ runTimeJavaDepArtifacts);
}
- public JavaCompilationArgsProvider(JavaCompilationArgs javaCompilationArgs,
+ public static JavaCompilationArgsProvider create(
+ JavaCompilationArgs javaCompilationArgs,
JavaCompilationArgs recursiveJavaCompilationArgs) {
- this.javaCompilationArgs = javaCompilationArgs;
- this.recursiveJavaCompilationArgs = recursiveJavaCompilationArgs;
- this.compileTimeJavaDepArtifacts = NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER);
- this.runTimeJavaDepArtifacts = NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER);
+ return create(
+ javaCompilationArgs,
+ recursiveJavaCompilationArgs,
+ NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
+ NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER));
}
/**
@@ -58,17 +60,13 @@ public final class JavaCompilationArgsProvider implements TransitiveInfoProvider
* transitive closure. The non-recursive collection applies mainly to
* compile-time jars.
*/
- public JavaCompilationArgs getJavaCompilationArgs() {
- return javaCompilationArgs;
- }
+ public abstract JavaCompilationArgs getJavaCompilationArgs();
/**
* Returns recursively collected Java compilation information for building
* this target (called when strict_java_deps = 0).
*/
- public JavaCompilationArgs getRecursiveJavaCompilationArgs() {
- return recursiveJavaCompilationArgs;
- }
+ public abstract JavaCompilationArgs getRecursiveJavaCompilationArgs();
/**
* Returns non-recursively collected Java dependency artifacts for
@@ -80,17 +78,13 @@ public final class JavaCompilationArgsProvider implements TransitiveInfoProvider
* Non-strict targets such as proto_library, always collecting their
* transitive closure of deps, do not need to provide dependency artifacts.
*/
- public NestedSet<Artifact> getCompileTimeJavaDependencyArtifacts() {
- return compileTimeJavaDepArtifacts;
- }
+ public abstract NestedSet<Artifact> getCompileTimeJavaDependencyArtifacts();
/**
* Returns Java dependency artifacts for computing a restricted run-time
* classpath (called when strict_java_deps = 1).
*/
- public NestedSet<Artifact> getRunTimeJavaDependencyArtifacts() {
- return runTimeJavaDepArtifacts;
- }
+ public abstract NestedSet<Artifact> getRunTimeJavaDependencyArtifacts();
public static JavaCompilationArgsProvider merge(Iterable<JavaCompilationArgsProvider> providers) {
JavaCompilationArgs.Builder javaCompilationArgs = JavaCompilationArgs.builder();
@@ -107,7 +101,7 @@ public final class JavaCompilationArgsProvider implements TransitiveInfoProvider
runTimeJavaDepArtifacts.addTransitive(provider.getRunTimeJavaDependencyArtifacts());
}
- return new JavaCompilationArgsProvider(
+ return JavaCompilationArgsProvider.create(
javaCompilationArgs.build(),
recursiveJavaCompilationArgs.build(),
compileTimeJavaDepArtifacts.build(),
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
index adc13e9a79..5687571745 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
@@ -156,19 +156,23 @@ public class JavaImport implements RuleConfiguredTargetFactory {
return ruleBuilder
.setFilesToBuild(filesToBuild)
.add(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider.build())
- .add(JavaRuntimeJarProvider.class,
+ .add(
+ JavaRuntimeJarProvider.class,
new JavaRuntimeJarProvider(javaArtifacts.getRuntimeJars()))
.add(JavaNeverlinkInfoProvider.class, new JavaNeverlinkInfoProvider(neverLink))
.add(RunfilesProvider.class, RunfilesProvider.simple(runfiles))
.add(CcLinkParamsProvider.class, new CcLinkParamsProvider(ccLinkParamsStore))
- .add(JavaCompilationArgsProvider.class, new JavaCompilationArgsProvider(
- javaCompilationArgs, recursiveJavaCompilationArgs))
- .add(JavaNativeLibraryProvider.class, new JavaNativeLibraryProvider(
- transitiveJavaNativeLibraries))
+ .add(
+ JavaCompilationArgsProvider.class,
+ JavaCompilationArgsProvider.create(javaCompilationArgs, recursiveJavaCompilationArgs))
+ .add(
+ JavaNativeLibraryProvider.class,
+ new JavaNativeLibraryProvider(transitiveJavaNativeLibraries))
.add(CppCompilationContext.class, transitiveCppDeps)
.add(JavaSourceInfoProvider.class, javaSourceInfoProvider)
- .add(JavaSourceJarsProvider.class, new JavaSourceJarsProvider(
- transitiveJavaSourceJars, srcJars))
+ .add(
+ JavaSourceJarsProvider.class,
+ JavaSourceJarsProvider.create(transitiveJavaSourceJars, srcJars))
.add(ProguardSpecProvider.class, new ProguardSpecProvider(proguardSpecs))
.addOutputGroup(JavaSemantics.SOURCE_JARS_OUTPUT_GROUP, transitiveJavaSourceJars)
.addOutputGroup(OutputGroupProvider.HIDDEN_TOP_LEVEL, proguardSpecs)
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 ef0179757a..a6239ff270 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
@@ -158,8 +158,8 @@ public class JavaLibrary implements RuleConfiguredTargetFactory {
new RuleConfiguredTargetBuilder(ruleContext);
semantics.addProviders(
- ruleContext, common, ImmutableList.<String>of(), classJar, srcJar,
- genClassJar, genSourceJar, ImmutableMap.<Artifact, Artifact>of(),
+ ruleContext, common, ImmutableList.<String>of(), classJar, srcJar,
+ genClassJar, genSourceJar, ImmutableMap.<Artifact, Artifact>of(),
filesBuilder, builder);
NestedSet<Artifact> filesToBuild = filesBuilder.build();
@@ -169,27 +169,37 @@ public class JavaLibrary implements RuleConfiguredTargetFactory {
NestedSet<Artifact> proguardSpecs = new ProguardLibrary(ruleContext).collectProguardSpecs();
builder
- .add(JavaRuleOutputJarsProvider.class, JavaRuleOutputJarsProvider.builder()
- .addOutputJar(classJar, iJar, srcJar)
- .setJdeps(outputDepsProto)
- .build())
- .add(JavaRuntimeJarProvider.class,
+ .add(
+ JavaRuleOutputJarsProvider.class,
+ JavaRuleOutputJarsProvider.builder()
+ .addOutputJar(classJar, iJar, srcJar)
+ .setJdeps(outputDepsProto)
+ .build())
+ .add(
+ JavaRuntimeJarProvider.class,
new JavaRuntimeJarProvider(javaArtifacts.getRuntimeJars()))
- .add(RunfilesProvider.class, RunfilesProvider.simple(JavaCommon.getRunfiles(
- ruleContext, semantics, javaArtifacts, neverLink)))
+ .add(
+ RunfilesProvider.class,
+ RunfilesProvider.simple(
+ JavaCommon.getRunfiles(ruleContext, semantics, javaArtifacts, neverLink)))
.setFilesToBuild(filesToBuild)
.add(JavaNeverlinkInfoProvider.class, new JavaNeverlinkInfoProvider(neverLink))
.add(CppCompilationContext.class, transitiveCppDeps)
- .add(JavaCompilationArgsProvider.class, new JavaCompilationArgsProvider(
- javaCompilationArgs, recursiveJavaCompilationArgs,
- compileTimeJavaDepArtifacts, runTimeJavaDepArtifacts))
+ .add(
+ JavaCompilationArgsProvider.class,
+ JavaCompilationArgsProvider.create(
+ javaCompilationArgs, recursiveJavaCompilationArgs,
+ compileTimeJavaDepArtifacts, runTimeJavaDepArtifacts))
.add(CcLinkParamsProvider.class, new CcLinkParamsProvider(ccLinkParamsStore))
- .add(JavaNativeLibraryProvider.class, new JavaNativeLibraryProvider(
- transitiveJavaNativeLibraries))
- .add(JavaSourceInfoProvider.class,
+ .add(
+ JavaNativeLibraryProvider.class,
+ new JavaNativeLibraryProvider(transitiveJavaNativeLibraries))
+ .add(
+ JavaSourceInfoProvider.class,
JavaSourceInfoProvider.fromJavaTargetAttributes(attributes, semantics))
- .add(JavaSourceJarsProvider.class, new JavaSourceJarsProvider(
- transitiveSourceJars, ImmutableList.of(srcJar)))
+ .add(
+ JavaSourceJarsProvider.class,
+ JavaSourceJarsProvider.create(transitiveSourceJars, ImmutableList.of(srcJar)))
// TODO(bazel-team): this should only happen for java_plugin
.add(JavaPluginInfoProvider.class, JavaCommon.getTransitivePlugins(ruleContext))
.add(ProguardSpecProvider.class, new ProguardSpecProvider(proguardSpecs))
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 c19fac1ae3..17c1846a97 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
@@ -181,7 +181,7 @@ public final class JavaLibraryHelper {
.addTransitiveDependencies(deps, true /* recursive */)
.build();
- return new JavaCompilationArgsProvider(
+ return JavaCompilationArgsProvider.create(
isReportedAsStrict ? directArgs : transitiveArgs, transitiveArgs);
}
@@ -204,9 +204,10 @@ public final class JavaLibraryHelper {
}
private NestedSet<Artifact> getNonRecursiveCompileTimeJarsFromDeps() {
- JavaCompilationArgs.Builder builder = JavaCompilationArgs.builder();
- builder.addTransitiveDependencies(deps, false);
- return builder.build().getCompileTimeJars();
+ return JavaCompilationArgs.builder()
+ .addTransitiveDependencies(deps, false)
+ .build()
+ .getCompileTimeJars();
}
private boolean isStrict() {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSourceJarsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSourceJarsProvider.java
index 0f5365408d..9537899ec1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSourceJarsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSourceJarsProvider.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.rules.java;
+import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
@@ -21,35 +22,27 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-/**
- * The collection of source jars from the transitive closure.
- */
+/** The collection of source jars from the transitive closure. */
+@AutoValue
@Immutable
-public final class JavaSourceJarsProvider implements TransitiveInfoProvider {
+public abstract class JavaSourceJarsProvider implements TransitiveInfoProvider {
- private final NestedSet<Artifact> transitiveSourceJars;
- private final ImmutableList<Artifact> sourceJars;
-
- public JavaSourceJarsProvider(NestedSet<Artifact> transitiveSourceJars,
- Iterable<Artifact> sourceJars) {
- this.transitiveSourceJars = transitiveSourceJars;
- this.sourceJars = ImmutableList.copyOf(sourceJars);
+ public static JavaSourceJarsProvider create(
+ NestedSet<Artifact> transitiveSourceJars, Iterable<Artifact> sourceJars) {
+ return new AutoValue_JavaSourceJarsProvider(
+ transitiveSourceJars, ImmutableList.copyOf(sourceJars));
}
+ JavaSourceJarsProvider() {}
+
/**
* Returns all the source jars in the transitive closure, that can be reached by a chain of
* JavaSourceJarsProvider instances.
*/
- public NestedSet<Artifact> getTransitiveSourceJars() {
- return transitiveSourceJars;
- }
+ public abstract NestedSet<Artifact> getTransitiveSourceJars();
- /**
- * Return the source jars that are to be built when the target is on the command line.
- */
- public ImmutableList<Artifact> getSourceJars() {
- return sourceJars;
- }
+ /** Return the source jars that are to be built when the target is on the command line. */
+ public abstract ImmutableList<Artifact> getSourceJars();
public static JavaSourceJarsProvider merge(Iterable<JavaSourceJarsProvider> providers) {
NestedSetBuilder<Artifact> transitiveSourceJars = NestedSetBuilder.stableOrder();
@@ -59,7 +52,6 @@ public final class JavaSourceJarsProvider implements TransitiveInfoProvider {
transitiveSourceJars.addTransitive(provider.getTransitiveSourceJars());
sourceJars.addAll(provider.getSourceJars());
}
- return new JavaSourceJarsProvider(transitiveSourceJars.build(), sourceJars.build());
+ return JavaSourceJarsProvider.create(transitiveSourceJars.build(), sourceJars.build());
}
-
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
index f12cfb030b..f56a150ea8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
@@ -186,7 +186,7 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured
.put(
JavaSourceJarsAspectProvider.class,
new JavaSourceJarsAspectProvider(
- new JavaSourceJarsProvider(
+ JavaSourceJarsProvider.create(
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER), javaSourceJars)));
} else {
// No sources - this proto_library is an alias library, which exports its dependencies.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
index c27a3f0305..276743c7a1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
@@ -243,7 +243,7 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
.put(
JavaSourceJarsAspectProvider.class,
new JavaSourceJarsAspectProvider(
- new JavaSourceJarsProvider(
+ JavaSourceJarsProvider.create(
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER), javaSourceJars)));
} else {
// No sources - this proto_library is an alias library, which exports its dependencies.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/StrictDepsUtils.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/StrictDepsUtils.java
index d184539831..889c71c9e6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/StrictDepsUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/StrictDepsUtils.java
@@ -59,7 +59,7 @@ public class StrictDepsUtils {
directCompilationArgs
.addTransitiveArgs(provider.getJavaCompilationArgs(), BOTH)
.addTransitiveArgs(provider.getRecursiveJavaCompilationArgs(), BOTH);
- return new JavaCompilationArgsProvider(
+ return JavaCompilationArgsProvider.create(
directCompilationArgs.build(),
provider.getRecursiveJavaCompilationArgs(),
provider.getCompileTimeJavaDependencyArtifacts(),