@Override public T deserialize(final byte[] bytes) { return pool.run(new KryoCallback<T>() { public T execute(Kryo kryo) { ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); Input input = new Input(byteArrayInputStream); return (T) kryo.readClassAndObject(input); } }); }
@Override public void returnKryo(Kryo kryo) { pool.release(kryo); } }
@Override public Kryo getKryo() { return pool.borrow(); }
@Override public void returnKryo(Kryo kryo) { pool.release(kryo); } }
@Override public Kryo getKryo() { return pool.borrow(); }
@Override public byte[] serialize(final T object) { return pool.run(new KryoCallback<byte[]>() { public byte[] execute(Kryo kryo) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); Output output = new Output(byteArrayOutputStream); kryo.writeClassAndObject(output, object); output.flush(); return byteArrayOutputStream.toByteArray(); } }); }
/** * Release kryo instance back to the pool. * * @param kryo - kryo instance to be released */ public static void releaseKryo(Kryo kryo) { kryoPool.release(kryo); }
@Override public Kryo borrow() { return kryoPool.borrow(); }
@Override public T clone(final T object) { return pool.run(new KryoCallback<T>() { public T execute(Kryo kryo) { return kryo.copy(object); } }); } }
@Override public void release(Kryo kryo) { kryoPool.release(kryo); }
/** * By default, kryo pool uses ConcurrentLinkedQueue which is unbounded. To facilitate reuse of * kryo object call releaseKryo() after done using the kryo instance. The class loader for the * kryo instance will be set to current thread's context class loader. * * @return kryo instance */ public static Kryo borrowKryo() { Kryo kryo = kryoPool.borrow(); kryo.setClassLoader(Thread.currentThread().getContextClassLoader()); return kryo; }
@Override public <T> T run(KryoCallback<T> callback) { return kryoPool.run(callback); }
@Override public void returnKryo(Kryo kryo) { pool.release(kryo); } }
@Override public Kryo getKryo() { return pool.borrow(); }
@Override public Object readFrom(final Class<Object> type, final Type genericType, final Annotation[] annotations, final MediaType mediaType, final MultivaluedMap<String, String> httpHeaders, final InputStream entityStream) throws IOException, WebApplicationException { final Input input = new Input(entityStream); return kryoPool.run(new KryoCallback() { public Object execute(Kryo kryo) { return kryo.readObject(input, type); } }); }