diff options
author | shahan <shahan@google.com> | 2018-02-07 10:54:39 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-07 10:56:50 -0800 |
commit | da4522fa5bdf251a345d61ca91fb2a8708242572 (patch) | |
tree | 320dff05b4c4022385cbc325fc4e83b83eb6cf9e /src/main | |
parent | 4ae0d184399e6020443e2e6e312c8c2bce93064e (diff) |
Non-test AspectClass codecs.
PiperOrigin-RevId: 184862552
Diffstat (limited to 'src/main')
10 files changed, 57 insertions, 16 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java index ccbbfcb956..d497113bf3 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java @@ -26,13 +26,16 @@ import com.google.devtools.build.lib.rules.cpp.CppConfiguration; import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode; import com.google.devtools.build.lib.rules.cpp.IncludeProcessing; import com.google.devtools.build.lib.rules.cpp.NoProcessing; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.SingletonCodec; -/** - * C++ compilation semantics. - */ +/** C++ compilation semantics. */ public class BazelCppSemantics implements AspectLegalCppSemantics { public static final BazelCppSemantics INSTANCE = new BazelCppSemantics(); + public static final ObjectCodec<BazelCppSemantics> CODEC = + SingletonCodec.of(INSTANCE, "BazelCppSemantics"); + private final IncludeProcessing includeProcessing; private BazelCppSemantics() { diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java index b50259e3e7..50c65c1298 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java @@ -62,6 +62,8 @@ import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider; import com.google.devtools.build.lib.rules.java.JavaTargetAttributes; import com.google.devtools.build.lib.rules.java.JavaUtil; import com.google.devtools.build.lib.rules.java.proto.GeneratedExtensionRegistryProvider; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.SingletonCodec; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.OS; import com.google.devtools.build.lib.util.ShellEscaper; @@ -80,6 +82,9 @@ public class BazelJavaSemantics implements JavaSemantics { public static final BazelJavaSemantics INSTANCE = new BazelJavaSemantics(); + public static final ObjectCodec<BazelJavaSemantics> CODEC = + SingletonCodec.of(INSTANCE, "BazelJavaSemantics"); + private static final Template STUB_SCRIPT = Template.forResource(BazelJavaSemantics.class, "java_stub_template.txt"); private static final Template STUB_SCRIPT_WINDOWS = diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java index 340daa264d..2ba805c9c3 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java +++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java @@ -16,14 +16,16 @@ package com.google.devtools.build.lib.packages; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; - +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import java.util.Objects; -/** - * {@link AspectClass} for aspects defined in Skylark. - */ +/** {@link AspectClass} for aspects defined in Skylark. */ +@AutoCodec @Immutable public final class SkylarkAspectClass implements AspectClass { + public static final ObjectCodec<SkylarkAspectClass> CODEC = new SkylarkAspectClass_AutoCodec(); + private final Label extensionLabel; private final String exportedName; @@ -40,7 +42,6 @@ public final class SkylarkAspectClass implements AspectClass { return exportedName; } - @Override public final String getName() { return getExtensionLabel() + "%" + getExportedName(); diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeAspect.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeAspect.java index 4048b2fc22..00b82486fb 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeAspect.java +++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeAspect.java @@ -16,10 +16,15 @@ package com.google.devtools.build.lib.packages; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.events.Location; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; /** A natively-defined aspect that is may be referenced by skylark attribute definitions. */ +@AutoCodec(strategy = AutoCodec.Strategy.POLYMORPHIC) public abstract class SkylarkNativeAspect extends NativeAspectClass implements SkylarkAspect { + public static final ObjectCodec<SkylarkNativeAspect> CODEC = new SkylarkNativeAspect_AutoCodec(); + @Override public void repr(SkylarkPrinter printer) { printer.append("<native aspect>"); diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java index b5a4b6ad6f..fc938b1b6e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java @@ -65,6 +65,8 @@ import com.google.devtools.build.lib.rules.java.proto.JavaProtoLibraryAspectProv import com.google.devtools.build.lib.rules.proto.ProtoLangToolchainProvider; import com.google.devtools.build.lib.rules.proto.ProtoSourcesProvider; import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -72,8 +74,12 @@ import java.util.Map; import java.util.Set; /** Aspect to {@link DexArchiveProvider build .dex Archives} from Jars. */ +@AutoCodec public final class DexArchiveAspect extends NativeAspectClass implements ConfiguredAspectFactory { public static final String NAME = "DexArchiveAspect"; + + public static final ObjectCodec<DexArchiveAspect> CODEC = new DexArchiveAspect_AutoCodec(); + /** * Function that returns a {@link Rule}'s {@code incremental_dexing} attribute for use by this * aspect. Must be provided when attaching this aspect to a target. diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/AspectLegalCppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/AspectLegalCppSemantics.java index 040a316982..19296b8ca8 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/AspectLegalCppSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/AspectLegalCppSemantics.java @@ -14,9 +14,16 @@ package com.google.devtools.build.lib.rules.cpp; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; + /** - * A marker for {@link CppSemantics} implementations that are legal as members of an aspect. These + * A marker for {@link CppSemantics} implementations that are legal as members of an aspect. These * implementations must not be heavy to serialize (e.g. a singleton is fine), so as not to weigh * down AspectKey. */ -public interface AspectLegalCppSemantics extends CppSemantics {} +@AutoCodec(strategy = AutoCodec.Strategy.POLYMORPHIC) +public interface AspectLegalCppSemantics extends CppSemantics { + public static final ObjectCodec<AspectLegalCppSemantics> CODEC = + new AspectLegalCppSemantics_AutoCodec(); +} diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java index 688f5f1ed1..98f3356cb7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java @@ -18,11 +18,13 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -/** - * Pluggable C++ compilation semantics. - */ +/** Pluggable C++ compilation semantics. */ +@AutoCodec(strategy = AutoCodec.Strategy.POLYMORPHIC) public interface CppSemantics { + public static final ObjectCodec<CppSemantics> CODEC = new CppSemantics_AutoCodec(); /** * Called before a C++ compile action is built. diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java index d717602eed..a3a1e63647 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java @@ -45,6 +45,8 @@ import com.google.devtools.build.lib.rules.java.JavaCompilationArgs.ClasspathTyp import com.google.devtools.build.lib.rules.java.JavaConfiguration.JavaOptimizationMode; import com.google.devtools.build.lib.rules.java.JavaConfiguration.OneVersionEnforcementLevel; import com.google.devtools.build.lib.rules.java.proto.GeneratedExtensionRegistryProvider; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.FileType; import com.google.devtools.build.lib.vfs.PathFragment; @@ -54,10 +56,10 @@ import java.util.List; import java.util.stream.Collectors; import javax.annotation.Nullable; -/** - * Pluggable Java compilation semantics. - */ +/** Pluggable Java compilation semantics. */ +@AutoCodec(strategy = AutoCodec.Strategy.POLYMORPHIC) public interface JavaSemantics { + public static final ObjectCodec<JavaSemantics> CODEC = new JavaSemantics_AutoCodec(); LibraryLanguage LANGUAGE = new LibraryLanguage("Java"); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java index 19017248da..5de8b4656a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java @@ -73,13 +73,18 @@ import com.google.devtools.build.lib.rules.proto.ProtoSourcesProvider; import com.google.devtools.build.lib.rules.proto.ProtoSupportDataProvider; import com.google.devtools.build.lib.rules.proto.SupportData; import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.util.FileType; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.List; /** J2ObjC transpilation aspect for Java and proto rules. */ +@AutoCodec public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectFactory { public static final String NAME = "J2ObjcAspect"; + public static final ObjectCodec<J2ObjcAspect> CODEC = new J2ObjcAspect_AutoCodec(); + private final String toolsRepository; private static final ExtraCompileArgs EXTRA_COMPILE_ARGS = new ExtraCompileArgs( diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java index 010f2bcca3..9bd8e02294 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java @@ -30,14 +30,19 @@ import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.packages.SkylarkNativeAspect; import com.google.devtools.build.lib.rules.proto.ProtoSourcesProvider; import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; /** * Aspect that gathers the proto dependencies of the attached rule target, and propagates the proto * values of its dependencies through the ObjcProtoProvider. */ +@AutoCodec public class ObjcProtoAspect extends SkylarkNativeAspect implements ConfiguredAspectFactory { public static final String NAME = "ObjcProtoAspect"; + public static final ObjectCodec<ObjcProtoAspect> CODEC = new ObjcProtoAspect_AutoCodec(); + @Override public AspectDefinition getDefinition(AspectParameters aspectParameters) { return new AspectDefinition.Builder(this) |