public Object doApply()

in jetcache-core/src/main/java/com/alicp/jetcache/support/KryoValueDecoder.java [22:49]


    public Object doApply(byte[] buffer) {
        ByteArrayInputStream in;
        if (useIdentityNumber) {
            in = new ByteArrayInputStream(buffer, 4, buffer.length - 4);
        } else {
            in = new ByteArrayInputStream(buffer);
        }
        Input input = new Input(in);
        KryoValueEncoder.KryoCache kryoCache = null;
        try {
            kryoCache =  KryoValueEncoder.kryoCacheObjectPool.borrowObject();
            Kryo kryo = kryoCache.getKryo();
            ClassLoader classLoader = KryoValueDecoder.class.getClassLoader();
            Thread t = Thread.currentThread();
            if (t != null) {
                ClassLoader ctxClassLoader = t.getContextClassLoader();
                if (ctxClassLoader != null) {
                    classLoader = ctxClassLoader;
                }
            }
            kryo.setClassLoader(classLoader);
            return kryo.readClassAndObject(input);
        }finally {
            if(kryoCache != null){
                KryoValueEncoder.kryoCacheObjectPool.returnObject(kryoCache);
            }
        }
    }