diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
6 files changed, 53 insertions, 31 deletions
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 a49d827091..e710f83a8a 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 @@ -21,10 +21,12 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.util.FileType; /** A container of Java compilation artifacts. */ @AutoValue +@AutoCodec public abstract class JavaCompilationArgs { // TODO(bazel-team): It would be desirable to use LinkOrderNestedSet here so that // parents-before-deps is preserved for graphs that are not trees. However, the legacy @@ -45,7 +47,9 @@ public abstract class JavaCompilationArgs { NestedSetBuilder.<Artifact>create(Order.NAIVE_LINK_ORDER), NestedSetBuilder.<Artifact>create(Order.NAIVE_LINK_ORDER)); - private static JavaCompilationArgs create( + @AutoCodec.VisibleForSerialization + @AutoCodec.Instantiator + static JavaCompilationArgs create( NestedSet<Artifact> runtimeJars, NestedSet<Artifact> compileTimeJars, NestedSet<Artifact> fullCompileTimeJars, 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 34b0ddb17c..2c3816b58f 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 @@ -22,26 +22,26 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import java.util.Collection; -/** - * An interface for objects that provide information on how to include them in - * Java builds. - */ +/** An interface for objects that provide information on how to include them in Java builds. */ @AutoValue @Immutable +@AutoCodec public abstract class JavaCompilationArgsProvider implements TransitiveInfoProvider { + @AutoCodec.Instantiator public static JavaCompilationArgsProvider create( JavaCompilationArgs javaCompilationArgs, JavaCompilationArgs recursiveJavaCompilationArgs, - NestedSet<Artifact> compileTimeJavaDepArtifacts, - NestedSet<Artifact> runTimeJavaDepArtifacts) { + NestedSet<Artifact> compileTimeJavaDependencyArtifacts, + NestedSet<Artifact> runTimeJavaDependencyArtifacts) { return new AutoValue_JavaCompilationArgsProvider( javaCompilationArgs, recursiveJavaCompilationArgs, - compileTimeJavaDepArtifacts, - runTimeJavaDepArtifacts); + compileTimeJavaDependencyArtifacts, + runTimeJavaDependencyArtifacts); } public static JavaCompilationArgsProvider create( diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArtifacts.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArtifacts.java index a6d346a11e..89f3066ed5 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArtifacts.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArtifacts.java @@ -20,31 +20,27 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; - +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import java.util.LinkedHashSet; import java.util.Set; - import javax.annotation.Nullable; /** - * A collection of artifacts for java compilations. It concisely describes the - * outputs of a java-related rule, with runtime jars, compile-time jars, - * unfiltered compile-time jars (these are run through ijar if they are - * dependent upon by another target), source ijars, and instrumentation - * manifests. Not all rules generate all kinds of artifacts. Each java-related - * rule should add both a runtime jar and either a compile-time jar or an - * unfiltered compile-time jar. + * A collection of artifacts for java compilations. It concisely describes the outputs of a + * java-related rule, with runtime jars, compile-time jars, unfiltered compile-time jars (these are + * run through ijar if they are dependent upon by another target), source ijars, and instrumentation + * manifests. Not all rules generate all kinds of artifacts. Each java-related rule should add both + * a runtime jar and either a compile-time jar or an unfiltered compile-time jar. * - * <p>An instance of this class only collects the data for the current target, - * not for the transitive closure of targets, so these still need to be - * collected using some other mechanism, such as the {@link - * JavaCompilationArgsProvider}. + * <p>An instance of this class only collects the data for the current target, not for the + * transitive closure of targets, so these still need to be collected using some other mechanism, + * such as the {@link JavaCompilationArgsProvider}. */ +@AutoCodec @Immutable @AutoValue public abstract class JavaCompilationArtifacts { - - public static final JavaCompilationArtifacts EMPTY = new Builder().build(); + @AutoCodec public static final JavaCompilationArtifacts EMPTY = new Builder().build(); public abstract ImmutableList<Artifact> getRuntimeJars(); public abstract ImmutableList<Artifact> getCompileTimeJars(); @@ -58,6 +54,24 @@ public abstract class JavaCompilationArtifacts { return new Builder(); } + @AutoCodec.VisibleForSerialization + @AutoCodec.Instantiator + static JavaCompilationArtifacts create( + ImmutableList<Artifact> runtimeJars, + ImmutableList<Artifact> compileTimeJars, + ImmutableList<Artifact> fullCompileTimeJars, + ImmutableList<Artifact> instrumentationMetadata, + Artifact compileTimeDependencyArtifact, + Artifact instrumentedJar) { + return new AutoValue_JavaCompilationArtifacts( + ImmutableList.copyOf(runtimeJars), + ImmutableList.copyOf(compileTimeJars), + ImmutableList.copyOf(fullCompileTimeJars), + ImmutableList.copyOf(instrumentationMetadata), + compileTimeDependencyArtifact, + instrumentedJar); + } + /** * A builder for {@link JavaCompilationArtifacts}. */ @@ -71,7 +85,7 @@ public abstract class JavaCompilationArtifacts { public JavaCompilationArtifacts build() { Preconditions.checkState(fullCompileTimeJars.size() == compileTimeJars.size()); - return new AutoValue_JavaCompilationArtifacts( + return create( ImmutableList.copyOf(runtimeJars), ImmutableList.copyOf(compileTimeJars), ImmutableList.copyOf(fullCompileTimeJars), diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaPluginInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaPluginInfoProvider.java index 826cd7b954..59ed632abc 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaPluginInfoProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaPluginInfoProvider.java @@ -20,10 +20,10 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; 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; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -/** - * Provider for users of Java plugins. - */ +/** Provider for users of Java plugins. */ +@AutoCodec @Immutable public final class JavaPluginInfoProvider implements TransitiveInfoProvider { 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 2907e26fb7..fc01eb1cf1 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 @@ -22,21 +22,22 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; 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; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import java.util.List; /** The collection of source jars from the transitive closure. */ @AutoValue @Immutable +@AutoCodec public abstract class JavaSourceJarsProvider implements TransitiveInfoProvider { + @AutoCodec.Instantiator 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. diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java index 90f9252524..8a928da8c4 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java @@ -32,6 +32,7 @@ import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorAr import com.google.devtools.build.lib.analysis.actions.SpawnAction; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import java.util.function.Consumer; /** @@ -174,7 +175,9 @@ public final class SingleJarActionBuilder { return args.build(); } - private static class ResourceArgMapFn extends CommandLineItem.ParametrizedMapFn<Artifact> { + @AutoCodec.VisibleForSerialization + @AutoCodec + static class ResourceArgMapFn extends CommandLineItem.ParametrizedMapFn<Artifact> { private final JavaSemantics semantics; ResourceArgMapFn(JavaSemantics semantics) { |