aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar shahan <shahan@google.com>2018-02-07 10:54:39 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-07 10:56:50 -0800
commitda4522fa5bdf251a345d61ca91fb2a8708242572 (patch)
tree320dff05b4c4022385cbc325fc4e83b83eb6cf9e /src/main
parent4ae0d184399e6020443e2e6e312c8c2bce93064e (diff)
Non-test AspectClass codecs.
PiperOrigin-RevId: 184862552
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/SkylarkAspectClass.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeAspect.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/AspectLegalCppSemantics.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java5
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)