Deletes POLYMORPHIC strategy. ObjectCodec now uses runtime type information to select a codec.
PiperOrigin-RevId: 186378153
diff --git a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
index 4844dc9..6b9d374 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
@@ -29,9 +29,6 @@
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.packages.AspectDescriptor;
-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.skyframe.serialization.autocodec.AutoCodec.Strategy;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -70,10 +67,7 @@
+ "applicable for certain kinds of actions. Fields that are inapplicable are set to "
+ "<code>None</code>."
)
-@AutoCodec(strategy = Strategy.POLYMORPHIC)
public abstract class AbstractAction implements Action, SkylarkValue {
- public static final ObjectCodec<AbstractAction> CODEC = new AbstractAction_AutoCodec();
-
/**
* An arbitrary default resource set. Currently 250MB of memory, 50% CPU and 0% of total I/O.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Action.java b/src/main/java/com/google/devtools/build/lib/actions/Action.java
index 54f562a..0111313 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Action.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Action.java
@@ -17,9 +17,6 @@
import com.google.devtools.build.lib.actions.extra.ExtraActionInfo;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ConditionallyThreadCompatible;
import com.google.devtools.build.lib.profiler.Describable;
-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.skyframe.serialization.autocodec.AutoCodec.Strategy;
import com.google.devtools.build.lib.vfs.FileSystem;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.skyframe.SkyFunction;
@@ -79,10 +76,7 @@
* known set of fields is covered, not that all fields are covered), so carefully check all changes
* to action subclasses.
*/
-@AutoCodec(strategy = Strategy.POLYMORPHIC)
public interface Action extends ActionExecutionMetadata, Describable {
- public static final ObjectCodec<Action> CODEC = new Action_AutoCodec();
-
/**
* Prepares for executing this action; called by the Builder prior to executing the Action itself.
* This method should prepare the file system, so that the execution of the Action can write the
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionLookupValue.java b/src/main/java/com/google/devtools/build/lib/actions/ActionLookupValue.java
index 33555a2..8ed14d1 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionLookupValue.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionLookupValue.java
@@ -23,9 +23,6 @@
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
-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.skyframe.serialization.autocodec.AutoCodec.Strategy;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
import java.util.ArrayList;
@@ -191,11 +188,7 @@
* subclasses of ActionLookupKey. This allows callers to easily find the value key, while
* remaining agnostic to what ActionLookupValues actually exist.
*/
- @AutoCodec(strategy = Strategy.POLYMORPHIC)
public abstract static class ActionLookupKey implements ArtifactOwner, SkyKey {
- public static final ObjectCodec<ActionLookupKey> CODEC =
- new ActionLookupValue_ActionLookupKey_AutoCodec();
-
@Override
public Label getLabel() {
return null;
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ArtifactOwner.java b/src/main/java/com/google/devtools/build/lib/actions/ArtifactOwner.java
index 27b97a4..36f7b24 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ArtifactOwner.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ArtifactOwner.java
@@ -15,7 +15,6 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
/**
@@ -23,10 +22,7 @@
* internal {@link Artifact}-generators should implement this interface -- otherwise, {@code
* ActionLookupKey} and its subclasses should be the only implementation.
*/
-@AutoCodec(strategy = AutoCodec.Strategy.POLYMORPHIC)
public interface ArtifactOwner {
- ObjectCodec<ArtifactOwner> CODEC = new ArtifactOwner_AutoCodec();
-
Label getLabel();
/**
diff --git a/src/main/java/com/google/devtools/build/lib/actions/BuildConfigurationInterface.java b/src/main/java/com/google/devtools/build/lib/actions/BuildConfigurationInterface.java
index 4e9a079..f033754 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/BuildConfigurationInterface.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/BuildConfigurationInterface.java
@@ -15,15 +15,11 @@
package com.google.devtools.build.lib.actions;
import com.google.devtools.build.lib.buildeventstream.BuildEvent;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
/**
* An interface for {@code BuildConfiguration} that only exists so that {@link ActionOwner} can
* refer to {@code BuildConfiguration}, which is in a dependent package. {@code BuildConfiguration}
* must be the only implementation of this interface.
*/
-@AutoCodec(strategy = AutoCodec.Strategy.POLYMORPHIC)
public interface BuildConfigurationInterface extends BuildEvent {
- ObjectCodec<BuildConfigurationInterface> CODEC = new BuildConfigurationInterface_AutoCodec();
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/CommandLine.java b/src/main/java/com/google/devtools/build/lib/actions/CommandLine.java
index f14af97..558644b 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/CommandLine.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/CommandLine.java
@@ -21,15 +21,11 @@
import com.google.devtools.build.lib.collect.CollectionUtils;
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.skyframe.serialization.autocodec.AutoCodec.Strategy;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
import com.google.devtools.build.lib.util.Fingerprint;
/** A representation of a list of arguments. */
-@AutoCodec(strategy = Strategy.POLYMORPHIC)
public abstract class CommandLine {
- public static final ObjectCodec<CommandLine> CODEC = new CommandLine_AutoCodec();
-
@AutoCodec
@VisibleForSerialization
static class EmptyCommandLine extends CommandLine {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java
index e6cb1bf..57272bd 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java
@@ -21,14 +21,10 @@
import com.google.devtools.build.lib.packages.License;
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.skyframe.serialization.autocodec.AutoCodec.Strategy;
import java.util.Objects;
/** A {@link ConfiguredTarget} that has licensed targets in its transitive closure. */
-@AutoCodec(strategy = Strategy.POLYMORPHIC)
public interface LicensesProvider extends TransitiveInfoProvider {
- ObjectCodec<LicensesProvider> CODEC = new LicensesProvider_AutoCodec();
-
/**
* The set of label - license associations in the transitive closure.
*
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
index 3e4011d..933a1a8 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
@@ -230,9 +230,7 @@
* Interface used for adding empty files to the runfiles at the last minute. Mainly to support
* python-related rules adding __init__.py files.
*/
- @AutoCodec(strategy = Strategy.POLYMORPHIC)
public interface EmptyFilesSupplier {
- ObjectCodec<EmptyFilesSupplier> CODEC = new Runfiles_EmptyFilesSupplier_AutoCodec();
/** Calculate additional empty files to add based on the existing manifest paths. */
Iterable<PathFragment> getExtraPaths(Set<PathFragment> manifestPaths);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProvider.java
index baa0690..7bf46dc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProvider.java
@@ -16,15 +16,9 @@
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents;
-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.skyframe.serialization.autocodec.AutoCodec.Strategy;
/** Provider class for configured targets that have a visibility. */
-@AutoCodec(strategy = Strategy.POLYMORPHIC)
public interface VisibilityProvider extends TransitiveInfoProvider {
- ObjectCodec<VisibilityProvider> CODEC = new VisibilityProvider_AutoCodec();
-
/** Returns the visibility specification. */
NestedSet<PackageGroupContents> getVisibility();
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index 3f2a463..3bec3da 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -139,10 +139,7 @@
* declare {@link ImmutableList} signatures on their interfaces vs. {@link List}). This is because
* fragment instances may be shared across configurations.
*/
- @AutoCodec(strategy = AutoCodec.Strategy.POLYMORPHIC)
public abstract static class Fragment {
- public static final ObjectCodec<Fragment> CODEC = new BuildConfiguration_Fragment_AutoCodec();
-
/**
* Validates the options for this Fragment. Issues warnings for the
* use of deprecated options, and warnings or errors for any option settings
@@ -2146,7 +2143,7 @@
BlazeDirectories.CODEC.serialize(context, obj.directories, codedOut);
codedOut.writeInt32NoTag(obj.fragments.size());
for (Fragment fragment : obj.fragments.values()) {
- Fragment.CODEC.serialize(context, fragment, codedOut);
+ context.serialize(fragment, codedOut);
}
BuildOptions.CODEC.serialize(context, obj.buildOptions, codedOut);
StringCodecs.asciiOptimized().serialize(context, obj.repositoryName, codedOut);
@@ -2160,7 +2157,7 @@
ImmutableSortedMap.Builder<Class<? extends Fragment>, Fragment> builder =
new ImmutableSortedMap.Builder<>(lexicalFragmentSorter);
for (int i = 0; i < length; ++i) {
- Fragment fragment = Fragment.CODEC.deserialize(context, codedIn);
+ Fragment fragment = context.deserialize(codedIn);
builder.put(fragment.getClass(), fragment);
}
BuildOptions options = BuildOptions.CODEC.deserialize(context, codedIn);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
index 4a89121..cd1db7c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
@@ -345,7 +345,7 @@
Collection<FragmentOptions> fragmentOptions = buildOptions.getOptions();
codedOut.writeInt32NoTag(fragmentOptions.size());
for (FragmentOptions options : buildOptions.getOptions()) {
- FragmentOptions.CODEC.serialize(context, options, codedOut);
+ context.serialize(options, codedOut);
}
}
@@ -355,7 +355,7 @@
BuildOptions.Builder builder = BuildOptions.builder();
int length = codedIn.readInt32();
for (int i = 0; i < length; ++i) {
- builder.add(FragmentOptions.CODEC.deserialize(context, codedIn));
+ builder.add(context.deserialize(codedIn));
}
return builder.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java
index 305a95e..abf15c5 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java
@@ -17,8 +17,6 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.common.options.Options;
import com.google.devtools.common.options.OptionsBase;
import java.io.Serializable;
@@ -26,10 +24,7 @@
import java.util.Set;
/** Command-line build options for a Blaze module. */
-@AutoCodec(strategy = AutoCodec.Strategy.POLYMORPHIC)
public abstract class FragmentOptions extends OptionsBase implements Cloneable, Serializable {
- public static final ObjectCodec<FragmentOptions> CODEC = new FragmentOptions_AutoCodec();
-
/**
* Returns the labels contributed to the defaults package by this fragment.
*
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnder.java b/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnder.java
index 349c62b..5848f5b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnder.java
@@ -14,16 +14,11 @@
package com.google.devtools.build.lib.analysis.config;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import java.io.Serializable;
import java.util.List;
/** Components of --run_under option. */
-@AutoCodec(strategy = AutoCodec.Strategy.POLYMORPHIC)
public interface RunUnder extends Serializable {
- public static final ObjectCodec<RunUnder> CODEC = new RunUnder_AutoCodec();
-
/**
* @return the whole value passed to --run_under option.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkApiProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkApiProvider.java
index 3c60f8e..d0f4017 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkApiProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkApiProvider.java
@@ -16,14 +16,11 @@
import com.google.common.base.Preconditions;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Strategy;
/**
* An abstract class for adding a Skylark API for the native providers. Derived classes should
* declare functions to be used from Skylark.
*/
-@AutoCodec(strategy = Strategy.POLYMORPHIC)
public abstract class SkylarkApiProvider {
private TransitiveInfoCollection info;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProvider.java
index 8ef3e5b..4fdc499 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProvider.java
@@ -17,16 +17,10 @@
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;
-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.skyframe.serialization.autocodec.AutoCodec.Strategy;
import com.google.devtools.build.lib.util.Pair;
/** A provider of instrumented file sources and instrumentation metadata. */
-@AutoCodec(strategy = Strategy.POLYMORPHIC)
public interface InstrumentedFilesProvider extends TransitiveInfoProvider {
- ObjectCodec<InstrumentedFilesProvider> CODEC = new InstrumentedFilesProvider_AutoCodec();
-
/**
* The transitive closure of instrumented source files.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/events/Location.java b/src/main/java/com/google/devtools/build/lib/events/Location.java
index 412d601..e6cc8de 100644
--- a/src/main/java/com/google/devtools/build/lib/events/Location.java
+++ b/src/main/java/com/google/devtools/build/lib/events/Location.java
@@ -16,7 +16,6 @@
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.SingletonCodec;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -33,10 +32,7 @@
* attribute access, as far more Locations are created during parsing than are ever used to display
* error messages.
*/
-@AutoCodec(strategy = AutoCodec.Strategy.POLYMORPHIC)
public abstract class Location implements Serializable {
- public static final ObjectCodec<Location> CODEC = new Location_AutoCodec();
-
@AutoCodec
@Immutable
static final class LocationWithPathAndStartColumn extends Location {
@@ -302,12 +298,11 @@
}
}
- private static final class BuiltinLocation extends Location {
+ @AutoCodec(strategy = AutoCodec.Strategy.SINGLETON)
+ @AutoCodec.VisibleForSerialization
+ static final class BuiltinLocation extends Location {
public static final BuiltinLocation INSTANCE = new BuiltinLocation();
- public static final ObjectCodec<BuiltinLocation> CODEC =
- SingletonCodec.of(INSTANCE, "BuiltinLocation");
-
private BuiltinLocation() {
super(0, 0);
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AspectClass.java b/src/main/java/com/google/devtools/build/lib/packages/AspectClass.java
index 66d661a..723736e 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AspectClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AspectClass.java
@@ -14,8 +14,6 @@
package com.google.devtools.build.lib.packages;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
/**
* A class of aspects.
@@ -92,10 +90,7 @@
* @see com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory
* @see com.google.devtools.build.lib.skyframe.AspectFunction
*/
-@AutoCodec(strategy = AutoCodec.Strategy.POLYMORPHIC)
public interface AspectClass {
- ObjectCodec<AspectClass> CODEC = new AspectClass_AutoCodec();
-
/**
* Returns an aspect name.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java b/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java
index 2212224..f01efeb 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java
@@ -22,7 +22,6 @@
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 com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Strategy;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.stream.Stream;
@@ -43,11 +42,7 @@
* <p>A package specification is specific to a single {@link RepositoryName} unless it is the "all
* packages" specification.
*/
-@AutoCodec(strategy = Strategy.POLYMORPHIC)
public abstract class PackageSpecification {
- public static final ObjectCodec<PackageSpecification> CODEC =
- new PackageSpecification_AutoCodec();
-
private static final String PACKAGE_LABEL = "__pkg__";
private static final String SUBTREE_LABEL = "__subpackages__";
private static final String ALL_BENEATH_SUFFIX = "/...";
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 19296b8..073d256 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,16 +14,11 @@
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
* implementations must not be heavy to serialize (e.g. a singleton is fine), so as not to weigh
* down AspectKey.
*/
-@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/CcLinkParamsStore.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsStore.java
index 71f9464..760b4cb 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsStore.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsStore.java
@@ -18,7 +18,6 @@
import com.google.devtools.build.lib.rules.cpp.CcLinkParams.Builder;
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.skyframe.serialization.autocodec.AutoCodec.Strategy;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
/**
@@ -47,10 +46,7 @@
* }
* </pre>
*/
-@AutoCodec(strategy = Strategy.POLYMORPHIC)
public abstract class CcLinkParamsStore {
- public static final ObjectCodec<CcLinkParamsStore> CODEC = new CcLinkParamsStore_AutoCodec();
-
private CcLinkParams staticSharedParams;
private CcLinkParams staticNoSharedParams;
private CcLinkParams noStaticSharedParams;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
index 281f2d0..5664286 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
@@ -40,7 +40,6 @@
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 com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Strategy;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
import com.google.devtools.build.lib.util.Pair;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -118,9 +117,7 @@
* %{var1}/%{var2}"). We split the string into chunks, where each chunk represents either a text
* snippet, or a variable that is to be replaced.
*/
- @AutoCodec(strategy = Strategy.POLYMORPHIC)
interface StringChunk {
- ObjectCodec<StringChunk> CODEC = new CcToolchainFeatures_StringChunk_AutoCodec();
/**
* Expands this chunk.
*
@@ -331,11 +328,7 @@
}
/** A flag or flag group that can be expanded under a set of variables. */
- @AutoCodec(strategy = Strategy.POLYMORPHIC)
interface Expandable {
-
- ObjectCodec<Expandable> CODEC = new CcToolchainFeatures_Expandable_AutoCodec();
-
/**
* Expands the current expandable under the given {@code view}, adding new flags to {@code
* commandLine}.
@@ -1207,11 +1200,7 @@
* <p>Implementations must be immutable and without any side-effects. They will be expanded and
* queried multiple times.
*/
- @AutoCodec(strategy = Strategy.POLYMORPHIC)
interface VariableValue {
- ObjectCodec<VariableValue> CODEC =
- new CcToolchainFeatures_Variables_VariableValue_AutoCodec();
-
/**
* Returns string value of the variable, if the variable type can be converted to string (e.g.
* StringValue), or throw exception if it cannot (e.g. Sequence).
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 98f3356..614369f 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,14 +18,9 @@
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. */
-@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.
*
@@ -61,7 +56,7 @@
* in the action graph.
*/
boolean needsIncludeScanning(RuleContext ruleContext);
-
+
/** Returns true iff this build should perform .d input pruning. */
boolean needsDotdInputPruning();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibrary.java
index 7b7238d..9c04dc9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibrary.java
@@ -17,9 +17,6 @@
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.LinkerInputs.LibraryToLink;
-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.skyframe.serialization.autocodec.AutoCodec.Strategy;
/**
* An extra library to include in a link. The actual library is built at link time.
@@ -31,10 +28,7 @@
* <p>Any implementations must be immutable (and therefore thread-safe), because this is passed
* between rules and accessed in a multi-threaded context.
*/
-@AutoCodec(strategy = Strategy.POLYMORPHIC)
public interface ExtraLinkTimeLibrary {
- ObjectCodec<ExtraLinkTimeLibrary> CODEC = new ExtraLinkTimeLibrary_AutoCodec();
-
/** Build the LibraryToLink inputs to pass to the C++ linker. */
NestedSet<LibraryToLink> buildLibraries(RuleContext context) throws InterruptedException;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeProcessing.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeProcessing.java
index 6bd9589..e9721a5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeProcessing.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeProcessing.java
@@ -18,16 +18,10 @@
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.rules.cpp.IncludeScanner.IncludeScannerSupplier;
-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.skyframe.serialization.autocodec.AutoCodec.Strategy;
import javax.annotation.Nullable;
/** Used as an interface to thin header inputs to compile actions for C++-like compiles. */
-@AutoCodec(strategy = Strategy.POLYMORPHIC)
public interface IncludeProcessing {
- ObjectCodec<IncludeProcessing> CODEC = new IncludeProcessing_AutoCodec();
-
/** Performs include processing actions and returns the processed set of resulting headers. */
Iterable<Artifact> determineAdditionalInputs(
@Nullable IncludeScannerSupplier includeScannerSupplier,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScannable.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScannable.java
index 71c9ce4..4c97495 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScannable.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScannable.java
@@ -16,9 +16,6 @@
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
-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.skyframe.serialization.autocodec.AutoCodec.Strategy;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.Collection;
import java.util.List;
@@ -32,10 +29,7 @@
* <p>This is useful for remote execution strategies to be able to compute the complete set of files
* that must be distributed in order to execute such an action.
*/
-@AutoCodec(strategy = Strategy.POLYMORPHIC)
public interface IncludeScannable {
- public static final ObjectCodec<IncludeScannable> CODEC = new IncludeScannable_AutoCodec();
-
/**
* Returns the built-in list of system include paths for the toolchain compiler. All paths in this
* list should be relative to the exec directory. They may be absolute if they are also installed
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInput.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInput.java
index 818b9f9..3b0c361 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInput.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInput.java
@@ -15,19 +15,13 @@
package com.google.devtools.build.lib.rules.cpp;
import com.google.devtools.build.lib.actions.Artifact;
-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.skyframe.serialization.autocodec.AutoCodec.Strategy;
/**
* Something that appears on the command line of the linker. Since we sometimes expand archive files
* to their constituent object files, we need to keep information whether a certain file contains
* embedded objects and if so, the list of the object files themselves.
*/
-@AutoCodec(strategy = Strategy.POLYMORPHIC)
public interface LinkerInput {
- ObjectCodec<LinkerInput> CODEC = new LinkerInput_AutoCodec();
-
/**
* Returns the type of the linker input.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java
index 8432cdd..8625cf6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkerInputs.java
@@ -22,7 +22,6 @@
import com.google.devtools.build.lib.concurrent.ThreadSafety;
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.skyframe.serialization.autocodec.AutoCodec.Strategy;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
/**
@@ -149,11 +148,7 @@
* A library the user can link to. This is different from a simple linker input in that it also
* has a library identifier.
*/
- @AutoCodec(strategy = Strategy.POLYMORPHIC)
public interface LibraryToLink extends LinkerInput {
- public static final ObjectCodec<LibraryToLink> CODEC =
- new LinkerInputs_LibraryToLink_AutoCodec();
-
ImmutableMap<Artifact, Artifact> getLtoBitcodeFiles();
/**
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 a3a1e63..aac466b 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,8 +45,6 @@
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;
@@ -57,10 +55,7 @@
import javax.annotation.Nullable;
/** 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");
SafeImplicitOutputsFunction JAVA_LIBRARY_CLASS_JAR =
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java
index be64706..777dcba 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java
@@ -17,8 +17,7 @@
import com.google.devtools.build.lib.actions.ActionLookupValue;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.WorkspaceStatusAction;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
-import com.google.devtools.build.lib.skyframe.serialization.SingletonCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.skyframe.SkyFunctionName;
import com.google.devtools.build.skyframe.SkyKey;
@@ -55,10 +54,9 @@
}
/** {@link SkyKey} for {@link WorkspaceStatusValue}. */
+ @AutoCodec(strategy = AutoCodec.Strategy.SINGLETON)
public static class BuildInfoKey extends ActionLookupKey {
- private static final BuildInfoKey INSTANCE = new BuildInfoKey();
- public static final ObjectCodec<BuildInfoKey> CODEC =
- SingletonCodec.of(INSTANCE, "build_info_key");
+ @AutoCodec.VisibleForSerialization static final BuildInfoKey INSTANCE = new BuildInfoKey();
private BuildInfoKey() {}
@@ -66,6 +64,5 @@
public SkyFunctionName functionName() {
return SkyFunctions.BUILD_INFO;
}
-
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/PolymorphicHelper.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/PolymorphicHelper.java
deleted file mode 100644
index b199ca6..0000000
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/PolymorphicHelper.java
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2018 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.skyframe.serialization;
-
-import com.google.devtools.build.lib.skyframe.serialization.strings.StringCodecs;
-import com.google.protobuf.CodedInputStream;
-import com.google.protobuf.CodedOutputStream;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.util.Optional;
-import javax.annotation.Nullable;
-
-/** Helper methods for polymorphic codecs using reflection. */
-public class PolymorphicHelper {
-
- private PolymorphicHelper() {}
-
- /**
- * Serializes a polymorphic type.
- *
- * @param dependency if null, it means that the parent, polymorphic type, provides no dependency.
- * It is valid for dependency to be non-null, with an enclosed null value. This means that
- * dependency itself is null (as opposed to non-existent).
- */
- @SuppressWarnings("unchecked")
- public static void serialize(
- SerializationContext context,
- Object input,
- Class<?> baseClass,
- CodedOutputStream codedOut,
- @Nullable Optional<?> dependency)
- throws IOException, SerializationException {
- if (input != null) {
- try {
- ClassAndCodec classAndCodec = getClassAndCodecInClassHierarchy(input, baseClass);
- Class<?> clazz = classAndCodec.clazz;
- Object codec = classAndCodec.codec;
- codedOut.writeBoolNoTag(true);
- StringCodecs.asciiOptimized().serialize(context, clazz.getName(), codedOut);
- if (codec instanceof ObjectCodec) {
- ((ObjectCodec) codec).serialize(context, input, codedOut);
- } else {
- throw new SerializationException(
- clazz.getCanonicalName()
- + ".CODEC has unexpected type "
- + codec.getClass().getCanonicalName());
- }
- } catch (ReflectiveOperationException e) {
- throw new SerializationException(input.getClass().getName(), e);
- }
- } else {
- codedOut.writeBoolNoTag(false);
- }
- }
-
- /**
- * Deserializes a polymorphic type.
- *
- * @param dependency if null, it means that the parent, polymorphic type, provides no dependency.
- * It is valid for dependency to be non-null, with an enclosed null value. This means the
- * dependency itself is null (as opposed to non-existent).
- */
- @SuppressWarnings("unchecked")
- public static Object deserialize(
- DeserializationContext context, CodedInputStream codedIn, @Nullable Optional<?> dependency)
- throws IOException, SerializationException {
- Object deserialized = null;
- if (codedIn.readBool()) {
- String className = StringCodecs.asciiOptimized().deserialize(context, codedIn);
- try {
- Object codec = getCodec(Class.forName(className));
- if (codec instanceof ObjectCodec) {
- return ((ObjectCodec) codec).deserialize(context, codedIn);
- } else {
- throw new SerializationException(
- className + ".CODEC has unexpected type " + codec.getClass().getCanonicalName());
- }
- } catch (ReflectiveOperationException e) {
- throw new SerializationException(className, e);
- }
- }
- return deserialized;
- }
-
- private static ClassAndCodec getClassAndCodecInClassHierarchy(Object input, Class<?> baseClass)
- throws SerializationException, IllegalAccessException {
- Class<?> clazz = input.getClass();
- Field codecField = null;
- while (!clazz.equals(baseClass)) {
- try {
- codecField = getCodecField(clazz);
- break;
- } catch (NoSuchFieldException e) {
- clazz = clazz.getSuperclass();
- }
- }
- if (clazz.equals(baseClass)) {
- throw new SerializationException("Could not find codec for " + input.getClass());
- }
- return new ClassAndCodec(clazz, getValueOfField(codecField));
- }
-
- private static Field getCodecField(Class<?> clazz) throws NoSuchFieldException {
- return clazz.getDeclaredField("CODEC");
- }
-
- private static Object getValueOfField(Field field) throws IllegalAccessException {
- field.setAccessible(true);
- return field.get(null);
- }
-
- /** Returns the static CODEC instance for {@code clazz}. */
- private static Object getCodec(Class<?> clazz)
- throws NoSuchFieldException, IllegalAccessException {
- return getValueOfField(getCodecField(clazz));
- }
-
- private static class ClassAndCodec {
- final Class<?> clazz;
- final Object codec;
-
- ClassAndCodec(Class<?> clazz, Object codec) {
- this.clazz = clazz;
- this.codec = codec;
- }
- }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java
index 0f597db..cb88b0a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodec.java
@@ -62,16 +62,6 @@
*/
PUBLIC_FIELDS,
/**
- * For use with abstract classes (enforced at compile time).
- *
- * <p>Uses reflection to determine the concrete subclass, stores the name of the subclass and
- * uses its codec to serialize the data.
- *
- * <p>This is no longer needed and only adds useless overhead.
- */
- // TODO(shahan): delete this and all references to it
- POLYMORPHIC,
- /**
* For use with classes that are singleton.
*
* <p>The serialized class must have a codec accessible, static INSTANCE field.
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java
index c3d14df..935e973 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/AutoCodecProcessor.java
@@ -21,7 +21,6 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
-import com.google.devtools.build.lib.skyframe.serialization.PolymorphicHelper;
import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationCodeGenerator.Marshaller;
import com.squareup.javapoet.ClassName;
@@ -102,9 +101,6 @@
case PUBLIC_FIELDS:
codecClassBuilder = buildClassWithPublicFieldsStrategy(encodedType);
break;
- case POLYMORPHIC:
- codecClassBuilder = buildClassWithPolymorphicStrategy(encodedType);
- break;
case SINGLETON:
codecClassBuilder = buildClassWithSingletonStrategy(encodedType);
break;
@@ -536,36 +532,6 @@
return Optional.empty();
}
- private TypeSpec.Builder buildClassWithPolymorphicStrategy(TypeElement encodedType) {
- if (!encodedType.getModifiers().contains(Modifier.ABSTRACT)) {
- throw new IllegalArgumentException(
- encodedType + " is not abstract, but POLYMORPHIC was selected as the strategy.");
- }
- TypeSpec.Builder codecClassBuilder = AutoCodecUtil.initializeCodecClassBuilder(encodedType);
- codecClassBuilder.addMethod(buildPolymorphicSerializeMethod(encodedType));
- codecClassBuilder.addMethod(buildPolymorphicDeserializeMethod(encodedType));
- return codecClassBuilder;
- }
-
- private MethodSpec buildPolymorphicSerializeMethod(TypeElement encodedType) {
- MethodSpec.Builder builder = AutoCodecUtil.initializeSerializeMethodBuilder(encodedType);
- TypeName polyClass = TypeName.get(env.getTypeUtils().erasure(encodedType.asType()));
- builder.addStatement(
- "$T.serialize(context, input, $T.class, codedOut, null)",
- PolymorphicHelper.class,
- polyClass);
- return builder.build();
- }
-
- private static MethodSpec buildPolymorphicDeserializeMethod(TypeElement encodedType) {
- MethodSpec.Builder builder = AutoCodecUtil.initializeDeserializeMethodBuilder(encodedType);
- builder.addStatement(
- "return ($T) $T.deserialize(context, codedIn, null)",
- TypeName.get(encodedType.asType()),
- PolymorphicHelper.class);
- return builder.build();
- }
-
private static TypeSpec.Builder buildClassWithSingletonStrategy(TypeElement encodedType) {
TypeSpec.Builder codecClassBuilder = AutoCodecUtil.initializeCodecClassBuilder(encodedType);
// Serialization is a no-op.
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImport.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImport.java
index 469d7b5..471fba4 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImport.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImport.java
@@ -14,8 +14,6 @@
package com.google.devtools.build.lib.syntax;
import com.google.devtools.build.lib.cmdline.Label;
-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.vfs.PathFragment;
import java.io.Serializable;
import javax.annotation.Nullable;
@@ -24,10 +22,7 @@
* Encapsulates the four syntactic variants of Skylark imports: Absolute paths, relative paths,
* absolute labels, and relative labels.
*/
-@AutoCodec(strategy = AutoCodec.Strategy.POLYMORPHIC)
public interface SkylarkImport extends Serializable {
- ObjectCodec<SkylarkImport> CODEC = new SkylarkImport_AutoCodec();
-
/**
* Returns the string originally used to specify the import (may represent a label or a path).
*/
@@ -58,9 +53,8 @@
/**
* Returns a {@link PathFragment} representing the import path.
- *
+ *
* @throws IllegalStateException if this import does not take the form of an absolute path.
*/
PathFragment getAbsolutePath();
}
-
diff --git a/src/test/java/com/google/devtools/build/lib/events/LocationTest.java b/src/test/java/com/google/devtools/build/lib/events/LocationTest.java
index 2b32a63..17c95b0 100644
--- a/src/test/java/com/google/devtools/build/lib/events/LocationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/events/LocationTest.java
@@ -15,7 +15,7 @@
import static com.google.common.truth.Truth.assertThat;
-import com.google.devtools.build.lib.skyframe.serialization.testutils.ObjectCodecTester;
+import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester;
import com.google.devtools.build.lib.vfs.PathFragment;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -57,11 +57,10 @@
@Test
public void testCodec() throws Exception {
- ObjectCodecTester.newBuilder(Location.CODEC)
- .addSubjects(
+ new SerializationTester(
Location.fromPathFragment(path),
Location.fromPathAndStartColumn(path, 0, 100, new Location.LineAndColumn(20, 25)),
Location.BUILTIN)
- .buildAndRunTests();
+ .runTests();
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
index e63d1ea..ce60452 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
@@ -65,7 +65,7 @@
import com.google.devtools.build.lib.skyframe.PackageLookupFunction.CrossRepositoryLabelViolationStrategy;
import com.google.devtools.build.lib.skyframe.SkyframeActionExecutor.ActionCompletedReceiver;
import com.google.devtools.build.lib.skyframe.SkyframeActionExecutor.ProgressSupplier;
-import com.google.devtools.build.lib.skyframe.serialization.SingletonCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.testutil.FoundationTestCase;
import com.google.devtools.build.lib.testutil.TestConstants;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
@@ -492,10 +492,9 @@
}
}
- private static class SingletonActionLookupKey extends ActionLookupValue.ActionLookupKey {
-
- public static final SingletonCodec<SingletonActionLookupKey> CODEC =
- SingletonCodec.of(new SingletonActionLookupKey(), "none");
+ @AutoCodec(strategy = AutoCodec.Strategy.SINGLETON)
+ static class SingletonActionLookupKey extends ActionLookupValue.ActionLookupKey {
+ public static final SingletonActionLookupKey INSTANCE = new SingletonActionLookupKey();
@Override
public SkyFunctionName functionName() {
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java b/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java
index c07d44b..9d2df743 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java
@@ -21,7 +21,7 @@
import com.google.devtools.build.lib.events.EventKind;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.events.Reporter;
-import com.google.devtools.build.lib.skyframe.serialization.testutils.ObjectCodecTester;
+import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester;
import com.google.devtools.build.lib.vfs.PathFragment;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -498,8 +498,6 @@
@Test
public void testLexerLocationCodec() throws Exception {
- ObjectCodecTester.newBuilder(Location.CODEC)
- .addSubjects(createLexer("foo").createLocation(0, 2))
- .buildAndRunTests();
+ new SerializationTester(createLexer("foo").createLocation(0, 2)).runTests();
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportsTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportsTest.java
index e3269f6..3488047 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportsTest.java
@@ -17,7 +17,7 @@
import static org.hamcrest.CoreMatchers.startsWith;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.serialization.testutils.ObjectCodecTester;
+import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester;
import com.google.devtools.build.lib.syntax.SkylarkImports.SkylarkImportSyntaxException;
import com.google.devtools.build.lib.vfs.PathFragment;
import org.junit.Rule;
@@ -232,12 +232,11 @@
@Test
public void serialization() throws Exception {
- ObjectCodecTester.newBuilder(SkylarkImport.CODEC)
- .addSubjects(
+ new SerializationTester(
SkylarkImports.create("//some/skylark:file.bzl"),
SkylarkImports.create("/some/skylark/file"),
SkylarkImports.create(":subdirectory/containing/file.bzl"),
SkylarkImports.create("file"))
- .buildAndRunTests();
+ .runTests();
}
}