Skip to content

Custom Kryo serializer for unmodificable collections #46

@llaros

Description

@llaros

Hello,

I've read #8 and therefore placed subzero-serializers.properties file with UnmodifiableCollectionsSerializer
as its content.

Project dependencies

                  <dependency>
			<groupId>info.jerrinot</groupId>
			<artifactId>subzero-all</artifactId>
			<version>0.10</version>
		</dependency>
		<dependency>
			<groupId>de.javakaffee</groupId>
			<artifactId>kryo-serializers</artifactId>
			<version>0.45</version> <!-- tried also with 0.49 same problem -->
		</dependency>

hazelcast.xml with following element

    <serialization>
        <serializers>
            <global-serializer override-java-serialization="true">info.jerrinot.subzero.Serializer</global-serializer>
        </serializers>
    </serialization>

But got following exception on hz node startup:

Caused by: java.lang.IllegalStateException: Serializer UnmodifiableCollectionsSerializer does not have expected method 'registerSerializers()': 
obh-cache-hz-cluster_1                    |     at info.jerrinot.subzero.internal.PropertyUserSerializer.addNewSpecialSerializer(PropertyUserSerializer.java:90)
obh-cache-hz-cluster_1                    |     at info.jerrinot.subzero.internal.PropertyUserSerializer.readLineAndRegister(PropertyUserSerializer.java:73)
obh-cache-hz-cluster_1                    |     at info.jerrinot.subzero.internal.PropertyUserSerializer.initCustomSerializers(PropertyUserSerializer.java:54)
obh-cache-hz-cluster_1                    |     at info.jerrinot.subzero.internal.PropertyUserSerializer.<init>(PropertyUserSerializer.java:41)
obh-cache-hz-cluster_1                    |     at info.jerrinot.subzero.Serializer.<init>(Serializer.java:10)

I've decompiled UnmodifiableCollectionsSerializer and assured that it has

 public static void registerSerializers(Kryo kryo) {
        UnmodifiableCollectionsSerializer serializer = new UnmodifiableCollectionsSerializer();
        UnmodifiableCollectionsSerializer.UnmodifiableCollection.values();
        UnmodifiableCollectionsSerializer.UnmodifiableCollection[] var2 = UnmodifiableCollectionsSerializer.UnmodifiableCollection.values();
        int var3 = var2.length;

        for(int var4 = 0; var4 < var3; ++var4) {
            UnmodifiableCollectionsSerializer.UnmodifiableCollection item = var2[var4];
            kryo.register(item.type, serializer);
        }

    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions