diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/serialization/CodecScanner.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/serialization/CodecScanner.java | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/CodecScanner.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/CodecScanner.java index 1adb15047f..635b5ad755 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/CodecScanner.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/CodecScanner.java @@ -122,15 +122,14 @@ public class CodecScanner { HashSet<Class<? extends ObjectCodec<?>>> registered = new HashSet<>(); for (Class<? extends CodecRegisterer<?>> registererType : registerers) { Class<? extends ObjectCodec<?>> objectCodecType = getObjectCodecType(registererType); - Preconditions.checkState( - !registered.contains(objectCodecType), - "%s has multiple associated CodecRegisterer definitions!", - objectCodecType); registered.add(objectCodecType); Constructor<CodecRegisterer<?>> constructor = (Constructor<CodecRegisterer<?>>) registererType.getDeclaredConstructor(); constructor.setAccessible(true); - constructor.newInstance().register(builder); + CodecRegisterer<?> registerer = constructor.newInstance(); + for (ObjectCodec<?> codec : registerer.getCodecsToRegister()) { + builder.add(codec); + } } return registered; } |