From a39cc41363a5642384d79834101bcc696319f736 Mon Sep 17 00:00:00 2001 From: Nikita Date: Fri, 12 Jun 2015 11:58:07 +0300 Subject: [PATCH] KryoCodec classes registration ability added. #166 --- src/main/java/org/redisson/codec/KryoCodec.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/redisson/codec/KryoCodec.java b/src/main/java/org/redisson/codec/KryoCodec.java index 78afdd448..5dbeeabf4 100755 --- a/src/main/java/org/redisson/codec/KryoCodec.java +++ b/src/main/java/org/redisson/codec/KryoCodec.java @@ -19,6 +19,8 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.nio.ByteBuffer; import java.nio.charset.Charset; +import java.util.Collections; +import java.util.List; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; @@ -39,6 +41,11 @@ public class KryoCodec implements RedissonCodec { public static class KryoPoolImpl implements KryoPool { private final Queue objects = new ConcurrentLinkedQueue(); + private final List> classes; + + public KryoPoolImpl(List> classes) { + this.classes = classes; + } public Kryo get() { Kryo kryo; @@ -60,6 +67,9 @@ public class KryoCodec implements RedissonCodec { protected Kryo createInstance() { Kryo kryo = new Kryo(); kryo.setReferences(false); + for (Class clazz : classes) { + kryo.register(clazz); + } return kryo; } @@ -78,9 +88,14 @@ public class KryoCodec implements RedissonCodec { private final KryoPool kryoPool; public KryoCodec() { - this(new KryoPoolImpl()); + this(new KryoPoolImpl(Collections.>emptyList())); } + public KryoCodec(List> classes) { + this(new KryoPoolImpl(classes)); + } + + public KryoCodec(KryoPool kryoPool) { this.kryoPool = kryoPool; }