diff --git a/oap-application/oap-application/src/main/java/oap/application/remote/KryoConsts.java b/oap-application/oap-application/src/main/java/oap/application/remote/KryoConsts.java index 1f4dceb32..eb87c04ab 100644 --- a/oap-application/oap-application/src/main/java/oap/application/remote/KryoConsts.java +++ b/oap-application/oap-application/src/main/java/oap/application/remote/KryoConsts.java @@ -4,6 +4,32 @@ import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; import com.esotericsoftware.kryo.util.DefaultInstantiatorStrategy; +import de.javakaffee.kryoserializers.ArraysAsListSerializer; +import de.javakaffee.kryoserializers.CollectionsEmptyListSerializer; +import de.javakaffee.kryoserializers.CollectionsEmptyMapSerializer; +import de.javakaffee.kryoserializers.CollectionsEmptySetSerializer; +import de.javakaffee.kryoserializers.CollectionsSingletonListSerializer; +import de.javakaffee.kryoserializers.CollectionsSingletonMapSerializer; +import de.javakaffee.kryoserializers.CollectionsSingletonSetSerializer; +import de.javakaffee.kryoserializers.GregorianCalendarSerializer; +import de.javakaffee.kryoserializers.JdkProxySerializer; +import de.javakaffee.kryoserializers.SynchronizedCollectionsSerializer; +import de.javakaffee.kryoserializers.UnmodifiableCollectionsSerializer; +import de.javakaffee.kryoserializers.guava.ArrayListMultimapSerializer; +import de.javakaffee.kryoserializers.guava.ArrayTableSerializer; +import de.javakaffee.kryoserializers.guava.HashBasedTableSerializer; +import de.javakaffee.kryoserializers.guava.HashMultimapSerializer; +import de.javakaffee.kryoserializers.guava.ImmutableListSerializer; +import de.javakaffee.kryoserializers.guava.ImmutableMapSerializer; +import de.javakaffee.kryoserializers.guava.ImmutableMultimapSerializer; +import de.javakaffee.kryoserializers.guava.ImmutableSetSerializer; +import de.javakaffee.kryoserializers.guava.ImmutableTableSerializer; +import de.javakaffee.kryoserializers.guava.LinkedHashMultimapSerializer; +import de.javakaffee.kryoserializers.guava.LinkedListMultimapSerializer; +import de.javakaffee.kryoserializers.guava.ReverseListSerializer; +import de.javakaffee.kryoserializers.guava.TreeBasedTableSerializer; +import de.javakaffee.kryoserializers.guava.TreeMultimapSerializer; +import de.javakaffee.kryoserializers.guava.UnmodifiableNavigableSetSerializer; import de.javakaffee.kryoserializers.jodatime.JodaDateTimeSerializer; import de.javakaffee.kryoserializers.jodatime.JodaLocalDateSerializer; import de.javakaffee.kryoserializers.jodatime.JodaLocalDateTimeSerializer; @@ -14,6 +40,10 @@ import org.objenesis.strategy.SerializingInstantiatorStrategy; import java.io.ByteArrayOutputStream; +import java.lang.reflect.InvocationHandler; +import java.util.Arrays; +import java.util.Collections; +import java.util.GregorianCalendar; import java.util.concurrent.ConcurrentLinkedDeque; @SuppressWarnings( "checkstyle:AbstractClassName" ) @@ -26,11 +56,44 @@ private static Kryo newInstance() { kryo.setReferences( true ); kryo.setInstantiatorStrategy( new DefaultInstantiatorStrategy( new SerializingInstantiatorStrategy() ) ); + + // joda kryo.register( DateTime.class, new JodaDateTimeSerializer() ); kryo.register( LocalDate.class, new JodaLocalDateSerializer() ); kryo.register( LocalDateTime.class, new JodaLocalDateTimeSerializer() ); kryo.register( LocalDateTime.class, new JodaLocalTimeSerializer() ); + // java + kryo.register( Arrays.asList( "" ).getClass(), new ArraysAsListSerializer() ); + kryo.register( Collections.EMPTY_LIST.getClass(), new CollectionsEmptyListSerializer() ); + kryo.register( Collections.EMPTY_MAP.getClass(), new CollectionsEmptyMapSerializer() ); + kryo.register( Collections.EMPTY_SET.getClass(), new CollectionsEmptySetSerializer() ); + kryo.register( Collections.singletonList( "" ).getClass(), new CollectionsSingletonListSerializer() ); + kryo.register( Collections.singleton( "" ).getClass(), new CollectionsSingletonSetSerializer() ); + kryo.register( Collections.singletonMap( "", "" ).getClass(), new CollectionsSingletonMapSerializer() ); + kryo.register( GregorianCalendar.class, new GregorianCalendarSerializer() ); + kryo.register( InvocationHandler.class, new JdkProxySerializer() ); + UnmodifiableCollectionsSerializer.registerSerializers( kryo ); + SynchronizedCollectionsSerializer.registerSerializers( kryo ); + + // guava + ImmutableListSerializer.registerSerializers( kryo ); + ImmutableSetSerializer.registerSerializers( kryo ); + ImmutableMapSerializer.registerSerializers( kryo ); + ImmutableMultimapSerializer.registerSerializers( kryo ); + ImmutableTableSerializer.registerSerializers( kryo ); + ReverseListSerializer.registerSerializers( kryo ); + UnmodifiableNavigableSetSerializer.registerSerializers( kryo ); + + ArrayListMultimapSerializer.registerSerializers( kryo ); + HashMultimapSerializer.registerSerializers( kryo ); + LinkedHashMultimapSerializer.registerSerializers( kryo ); + LinkedListMultimapSerializer.registerSerializers( kryo ); + TreeMultimapSerializer.registerSerializers( kryo ); + ArrayTableSerializer.registerSerializers( kryo ); + HashBasedTableSerializer.registerSerializers( kryo ); + TreeBasedTableSerializer.registerSerializers( kryo ); + return kryo; } diff --git a/pom.xml b/pom.xml index 6f639b3b4..1914647d4 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ - 25.0.11 + 25.0.12 22.0.1 25.0.0