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;
throw new KryoException(e);
}
}
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this).addValue(serdes).toString();
+ }
}
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;
private final KryoOutputPool kryoOutputPool = new KryoOutputPool();
private final KryoInputPool kryoInputPool = new KryoInputPool();
- private final List<Entry<Class<?>[], EntrySerializer<?>>> registeredTypes;
-
+ private final List<RegisteredType> registeredTypes;
private final ClassLoader classLoader;
private final String friendlyName;
* @param friendlyName friendly name for the namespace
*/
private Namespace(
- final List<Entry<Class<?>[], EntrySerializer<?>>> registeredTypes,
+ final List<RegisteredType> registeredTypes,
final ClassLoader classLoader,
final String friendlyName) {
this.registeredTypes = List.copyOf(registeredTypes);
new Kryo.DefaultInstantiatorStrategy(new StdInstantiatorStrategy()));
int id = INITIAL_ID;
- for (Entry<Class<?>[], EntrySerializer<?>> entry : registeredTypes) {
- register(kryo, entry.getKey(), entry.getValue(), id++);
+ for (RegisteredType registeredType : registeredTypes) {
+ register(kryo, registeredType.types(), registeredType.serializer(), id++);
}
return kryo;
}
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<Entry<Class<?>[], EntrySerializer<?>>> types = new ArrayList<>();
+ private final List<RegisteredType> 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;
}