protected Object doApply()

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


    protected Object doApply(byte[] buffer) throws Exception {
        int[] indexHolder = new int[1];
        indexHolder[0] = isUseIdentityNumber() ? 4 : 0;
        short objCount = readShort(buffer, indexHolder[0]);
        indexHolder[0] = indexHolder[0] + 2;
        if (objCount < 0) {
            return null;
        }
        Object obj = readObject(buffer, indexHolder);
        if (obj == null) {
            return null;
        }
        if (obj instanceof CacheValueHolder) {
            CacheValueHolder h = (CacheValueHolder) obj;
            h.setValue(readObject(buffer, indexHolder));
            return h;
        } else if (obj instanceof CacheMessage) {
            CacheMessage cm = (CacheMessage) obj;
            if (objCount > 1) {
                Object[] keys = new Object[objCount - 1];
                for (int i = 0; i < objCount - 1; i++) {
                    keys[i] = readObject(buffer, indexHolder);
                }
                cm.setKeys(keys);
            }
            return cm;
        } else {
            return obj;
        }
    }