Skip to content

Commit 4785d75

Browse files
authored
#923 Add helper method to register serializers for java.util.ImmutableCollections (#933)
1 parent bb10a0b commit 4785d75

File tree

2 files changed

+33
-7
lines changed

2 files changed

+33
-7
lines changed

src/com/esotericsoftware/kryo/serializers/ImmutableCollectionsSerializers.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,15 @@ public static void addDefaultSerializers (Kryo kryo) {
4141
}
4242
}
4343

44+
/** Creates new serializers for all types of {@link java.util.ImmutableCollections}s and registers them.
45+
*
46+
* @param kryo the {@link Kryo} instance to register the serializers on. */
47+
public static void registerSerializers (Kryo kryo) {
48+
JdkImmutableListSerializer.registerSerializers(kryo);
49+
JdkImmutableMapSerializer.registerSerializers(kryo);
50+
JdkImmutableSetSerializer.registerSerializers(kryo);
51+
}
52+
4453
static class JdkImmutableListSerializer extends CollectionSerializer<List<Object>> {
4554

4655
private JdkImmutableListSerializer () {
@@ -79,6 +88,14 @@ static void addDefaultSerializers (Kryo kryo) {
7988
kryo.addDefaultSerializer(List.of(1, 2, 3, 4).getClass(), serializer);
8089
kryo.addDefaultSerializer(List.of(1, 2, 3, 4).subList(0, 2).getClass(), serializer);
8190
}
91+
92+
static void registerSerializers (Kryo kryo) {
93+
final JdkImmutableListSerializer serializer = new JdkImmutableListSerializer();
94+
kryo.register(List.of().getClass(), serializer);
95+
kryo.register(List.of(1).getClass(), serializer);
96+
kryo.register(List.of(1, 2, 3, 4).getClass(), serializer);
97+
kryo.register(List.of(1, 2, 3, 4).subList(0, 2).getClass(), serializer);
98+
}
8299
}
83100

84101
static class JdkImmutableMapSerializer extends MapSerializer<Map<Object, Object>> {
@@ -119,6 +136,13 @@ static void addDefaultSerializers (Kryo kryo) {
119136
kryo.addDefaultSerializer(Map.of(1, 2).getClass(), serializer);
120137
kryo.addDefaultSerializer(Map.of(1, 2, 3, 4).getClass(), serializer);
121138
}
139+
140+
static void registerSerializers (Kryo kryo) {
141+
final JdkImmutableMapSerializer serializer = new JdkImmutableMapSerializer();
142+
kryo.register(Map.of().getClass(), serializer);
143+
kryo.register(Map.of(1, 2).getClass(), serializer);
144+
kryo.register(Map.of(1, 2, 3, 4).getClass(), serializer);
145+
}
122146
}
123147

124148
static class JdkImmutableSetSerializer extends CollectionSerializer<Set<Object>> {
@@ -158,6 +182,13 @@ static void addDefaultSerializers (Kryo kryo) {
158182
kryo.addDefaultSerializer(Set.of(1).getClass(), serializer);
159183
kryo.addDefaultSerializer(Set.of(1, 2, 3, 4).getClass(), serializer);
160184
}
185+
186+
static void registerSerializers (Kryo kryo) {
187+
final JdkImmutableSetSerializer serializer = new JdkImmutableSetSerializer();
188+
kryo.register(Set.of().getClass(), serializer);
189+
kryo.register(Set.of(1).getClass(), serializer);
190+
kryo.register(Set.of(1, 2, 3, 4).getClass(), serializer);
191+
}
161192
}
162193

163194
}

test-jdk11/com/esotericsoftware/kryo/serializers/ImmutableCollectionsSerializersTest.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,8 @@ class ImmutableCollectionsSerializersTest extends KryoTestCase {
3939
@BeforeEach
4040
public void setUp () throws Exception {
4141
super.setUp();
42-
kryo.register(Class.forName("java.util.ImmutableCollections$List12"));
43-
kryo.register(Class.forName("java.util.ImmutableCollections$ListN"));
44-
kryo.register(Class.forName("java.util.ImmutableCollections$SubList"));
45-
kryo.register(Class.forName("java.util.ImmutableCollections$Map1"));
46-
kryo.register(Class.forName("java.util.ImmutableCollections$MapN"));
47-
kryo.register(Class.forName("java.util.ImmutableCollections$Set12"));
48-
kryo.register(Class.forName("java.util.ImmutableCollections$SetN"));
42+
43+
ImmutableCollectionsSerializers.registerSerializers(kryo);
4944
kryo.register(HashMap.class);
5045
kryo.register(TestClass.class);
5146
}

0 commit comments

Comments
 (0)