aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/serialization/AutoRegistry.java
diff options
context:
space:
mode:
authorGravatar shahan <shahan@google.com>2018-04-04 09:49:03 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-04 09:50:47 -0700
commit00b72a1590713e7650285d84ae2a1e5c2041defe (patch)
tree8a0c76d86b7dcb3e1f0eb9966c8e42ab44afc722 /src/main/java/com/google/devtools/build/lib/skyframe/serialization/AutoRegistry.java
parent77777d1a769e938839b82c65ff320e09b1e7a715 (diff)
Replaces JavaSerializableCodec with DynamicCodec as the default
* Skylark serialization was previously dropping location in error, which this fixes. * Deletes a lot of codecs with fidelity issues (DynamicCodec has full fidelity). * Deletes EnumRuntimeCodec which can now be replaced with the superior EnumCodec. * This should eventually allow us to delete Serializable from all Blaze. The remaining blocker is NoSuchPackageExceptionCodec. PiperOrigin-RevId: 191603929
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/serialization/AutoRegistry.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/AutoRegistry.java28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/AutoRegistry.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/AutoRegistry.java
index bf11b86e69..4af9f532f0 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/AutoRegistry.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/AutoRegistry.java
@@ -14,8 +14,10 @@
package com.google.devtools.build.lib.skyframe.serialization;
+import com.google.common.base.Predicates;
import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
+import com.google.common.collect.ImmutableList;
import java.io.IOException;
/**
@@ -29,15 +31,35 @@ public class AutoRegistry {
private static final Supplier<ObjectCodecRegistry> SUPPLIER =
Suppliers.memoize(AutoRegistry::create);
+ /* Common ancestor of common.google.devtools.build and com.google.devtools.common.options,
+ * where Tristate lives. */
+ private static final String PACKAGE_PREFIX = "com.google.devtools";
+
+ /** Classes outside {@link AutoRegistry#PACKAGE_PREFIX} that need to be serialized. */
+ private static final ImmutableList<String> EXTERNAL_CLASS_NAMES_TO_REGISTER =
+ ImmutableList.of("java.io.FileNotFoundException", "java.io.IOException");
+
+ private static final ImmutableList<Object> CONSTANTS_TO_REGISTER =
+ ImmutableList.of(
+ Predicates.alwaysTrue(),
+ Predicates.alwaysFalse(),
+ Predicates.isNull(),
+ Predicates.notNull());
+
public static ObjectCodecRegistry get() {
return SUPPLIER.get();
}
private static ObjectCodecRegistry create() {
try {
- return CodecScanner.initializeCodecRegistry("com.google.devtools.build")
- .setAllowDefaultCodec(false)
- .build();
+ ObjectCodecRegistry.Builder registry = CodecScanner.initializeCodecRegistry(PACKAGE_PREFIX);
+ for (String className : EXTERNAL_CLASS_NAMES_TO_REGISTER) {
+ registry.addClassName(className);
+ }
+ for (Object constant : CONSTANTS_TO_REGISTER) {
+ registry.addConstant(constant);
+ }
+ return registry.build();
} catch (IOException | ReflectiveOperationException e) {
throw new IllegalStateException(e);
}