@SuppressWarnings({ "rawtypes", "unchecked" }) @Override public TileData<T> deserialize(TileIndex index, InputStream stream) throws IOException { InputStream compressionStream; switch (_codec) { case BZIP: compressionStream = new BZipInputStreamWrapper(new BZip2CompressorInputStream(stream)); break; case GZIP: compressionStream = new GzipCompressorInputStream(stream); break; case DEFLATE: default: compressionStream = new InflaterInputStream(stream); break; } Input input = new Input(compressionStream); try { Object data = kryo().readClassAndObject(input); if (data instanceof TileData) return (TileData) data; else return null; } finally { compressionStream.close(); input.close(); } }