From d9dd9f3f6014d8a5ad6de36edb11dd753e5a60d2 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 2 Mar 2023 21:01:09 +0100 Subject: [PATCH] Add RegisteredType Reduce verbosity by introducing a private DTO to hold the combination of a Serializer and its associated classes. JIRA: CONTROLLER-2072 Change-Id: I9cdf32d6107740d5a07cfdb884bd4641c242450e Signed-off-by: Robert Varga --- .../utils/serializer/EntrySerializer.java | 6 +++++ .../io/atomix/utils/serializer/Namespace.java | 22 +++++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/third-party/atomix/storage/src/main/java/io/atomix/utils/serializer/EntrySerializer.java b/third-party/atomix/storage/src/main/java/io/atomix/utils/serializer/EntrySerializer.java index f0258047be..0508f1eee5 100644 --- a/third-party/atomix/storage/src/main/java/io/atomix/utils/serializer/EntrySerializer.java +++ b/third-party/atomix/storage/src/main/java/io/atomix/utils/serializer/EntrySerializer.java @@ -23,6 +23,7 @@ import com.esotericsoftware.kryo.Serializer; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; import com.esotericsoftware.kryo.serializers.JavaSerializer; +import com.google.common.base.MoreObjects; import io.atomix.storage.journal.JournalSerdes.EntrySerdes; import java.io.IOException; @@ -52,4 +53,9 @@ final class EntrySerializer extends Serializer { throw new KryoException(e); } } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this).addValue(serdes).toString(); + } } diff --git a/third-party/atomix/storage/src/main/java/io/atomix/utils/serializer/Namespace.java b/third-party/atomix/storage/src/main/java/io/atomix/utils/serializer/Namespace.java index 866068b83e..5e6814c635 100644 --- a/third-party/atomix/storage/src/main/java/io/atomix/utils/serializer/Namespace.java +++ b/third-party/atomix/storage/src/main/java/io/atomix/utils/serializer/Namespace.java @@ -36,8 +36,6 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; import org.objenesis.strategy.StdInstantiatorStrategy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -67,8 +65,7 @@ public final class Namespace implements JournalSerdes, KryoFactory, KryoPool { private final KryoOutputPool kryoOutputPool = new KryoOutputPool(); private final KryoInputPool kryoInputPool = new KryoInputPool(); - private final List[], EntrySerializer>> registeredTypes; - + private final List registeredTypes; private final ClassLoader classLoader; private final String friendlyName; @@ -80,7 +77,7 @@ public final class Namespace implements JournalSerdes, KryoFactory, KryoPool { * @param friendlyName friendly name for the namespace */ private Namespace( - final List[], EntrySerializer>> registeredTypes, + final List registeredTypes, final ClassLoader classLoader, final String friendlyName) { this.registeredTypes = List.copyOf(registeredTypes); @@ -203,8 +200,8 @@ public final class Namespace implements JournalSerdes, KryoFactory, KryoPool { new Kryo.DefaultInstantiatorStrategy(new StdInstantiatorStrategy())); int id = INITIAL_ID; - for (Entry[], EntrySerializer> entry : registeredTypes) { - register(kryo, entry.getKey(), entry.getValue(), id++); + for (RegisteredType registeredType : registeredTypes) { + register(kryo, registeredType.types(), registeredType.serializer(), id++); } return kryo; } @@ -287,13 +284,20 @@ public final class Namespace implements JournalSerdes, KryoFactory, KryoPool { return MoreObjects.toStringHelper(getClass()).add("registeredTypes", registeredTypes).toString(); } + private static record RegisteredType(EntrySerializer serializer, Class[] types) { + RegisteredType { + requireNonNull(serializer); + requireNonNull(types); + } + } + private static final class Builder implements JournalSerdes.Builder { - private final List[], EntrySerializer>> types = new ArrayList<>(); + private final List types = new ArrayList<>(); private ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); @Override public Builder register(final EntrySerdes serdes, final Class... classes) { - types.add(Map.entry(classes, new EntrySerializer<>(serdes))); + types.add(new RegisteredType(new EntrySerializer<>(serdes), classes)); return this; } -- 2.36.6