@Override public Object read(Object reuse, Decoder in) throws IOException { if (written == null) // same schema return Json.readObject(in); // use a resolver to adapt alternate version of Json schema if (resolver == null) resolver = DecoderFactory.get().resolvingDecoder(written, SCHEMA, null); resolver.configure(in); Object result = Json.readObject(resolver); resolver.drain(); return result; } }
@Override public Object read(Object reuse, Decoder in) throws IOException { if (written == null) // same schema return Json.readObject(in); // use a resolver to adapt alternate version of Json schema if (resolver == null) resolver = DecoderFactory.get().resolvingDecoder(written, SCHEMA, null); resolver.configure(in); Object result = Json.readObject(resolver); resolver.drain(); return result; } }
/** Gets a resolving decoder for use by this GenericDatumReader. * Unstable API. * Currently uses a thread local cache to prevent constructing the * resolvers too often, because that is very expensive. */ protected final ResolvingDecoder getResolver(Schema actual, Schema expected) throws IOException { Thread currThread = Thread.currentThread(); ResolvingDecoder resolver; if (currThread == creator && creatorResolver != null) { return creatorResolver; } Map<Schema,ResolvingDecoder> cache = RESOLVER_CACHE.get().get(actual); if (cache == null) { cache = new WeakIdentityHashMap<Schema,ResolvingDecoder>(); RESOLVER_CACHE.get().put(actual, cache); } resolver = cache.get(expected); if (resolver == null) { resolver = DecoderFactory.get().resolvingDecoder( Schema.applyAliases(actual, expected), expected, null); cache.put(expected, resolver); } if (currThread == creator){ creatorResolver = resolver; } return resolver; }
/** Gets a resolving decoder for use by this GenericDatumReader. * Unstable API. * Currently uses a thread local cache to prevent constructing the * resolvers too often, because that is very expensive. */ protected final ResolvingDecoder getResolver(Schema actual, Schema expected) throws IOException { Thread currThread = Thread.currentThread(); ResolvingDecoder resolver; if (currThread == creator && creatorResolver != null) { return creatorResolver; } Map<Schema,ResolvingDecoder> cache = RESOLVER_CACHE.get().get(actual); if (cache == null) { cache = new WeakIdentityHashMap<>(); RESOLVER_CACHE.get().put(actual, cache); } resolver = cache.get(expected); if (resolver == null) { resolver = DecoderFactory.get().resolvingDecoder( Schema.applyAliases(actual, expected), expected, null); cache.put(expected, resolver); } if (currThread == creator){ creatorResolver = resolver; } return resolver; }
@Override public JsonNode read(JsonNode reuse, Decoder in) throws IOException { if (written == null) // same schema return Json.read(in); // use a resolver to adapt alternate version of Json schema if (resolver == null) resolver = DecoderFactory.get().resolvingDecoder(written, SCHEMA, null); resolver.configure(in); JsonNode result = Json.read(resolver); resolver.drain(); return result; } }
private GenericRecord serializeWithWriterThenDeserializeWithReader(Schema writerSchema, GenericRecord datum, Schema readerSchema) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); Encoder encoder = EncoderFactory.get().binaryEncoder(baos, null); DatumWriter<Object> datumWriter = new GenericDatumWriter<>(writerSchema); datumWriter.write(datum, encoder); encoder.flush(); byte[] bytes = baos.toByteArray(); Decoder decoder = DecoderFactory.get().resolvingDecoder( writerSchema, readerSchema, DecoderFactory.get().binaryDecoder(bytes, null)); DatumReader<Object> datumReader = new GenericDatumReader<>(readerSchema); return (GenericRecord)datumReader.read(null, decoder); }
new Object[]{datum, writerSchema, readerSchema}); final byte[] bytes = baos.toByteArray(); final Decoder decoder = DecoderFactory.get().resolvingDecoder( writerSchema, readerSchema, DecoderFactory.get().binaryDecoder(bytes, null));
protected ResolvingDecoder createResolver(Schema writerSchema, Schema readerSchema) throws IOException { return DecoderFactory.get().resolvingDecoder( Schema.applyAliases(writerSchema, readerSchema), readerSchema, null); }
private ResolvingDecoder newResolver() { try { return DecoderFactory.get().resolvingDecoder(fileSchema, readSchema, null); } catch (IOException e) { throw new RuntimeIOException(e); } }
private ResolvingDecoder newResolver() { try { return DecoderFactory.get().resolvingDecoder(fileSchema, readSchema, null); } catch (IOException e) { throw new RuntimeIOException(e); } }
protected ResolvingDecoder createResolver(Schema writerSchema, Schema readerSchema) throws IOException { return DecoderFactory.get().resolvingDecoder( Schema.applyAliases(writerSchema, readerSchema), readerSchema, null); }
private ResolvingDecoder newResolver() { try { return DecoderFactory.get().resolvingDecoder(fileSchema, readSchema, null); } catch (IOException e) { throw new RuntimeIOException(e); } }
protected ResolvingDecoder createResolver(Schema writerSchema, Schema readerSchema) throws IOException { return DecoderFactory.get().resolvingDecoder( Schema.applyAliases(writerSchema, readerSchema), readerSchema, null); }
@Override public Object read(Object reuse, Decoder in) throws IOException { if (written == null) // same schema return Json.readObject(in); // use a resolver to adapt alternate version of Json schema if (resolver == null) resolver = DecoderFactory.get().resolvingDecoder(written, SCHEMA, null); resolver.configure(in); Object result = Json.readObject(resolver); resolver.drain(); return result; } }
/** Gets a resolving decoder for use by this GenericDatumReader. * Unstable API. * Currently uses a thread local cache to prevent constructing the * resolvers too often, because that is very expensive. */ protected final ResolvingDecoder getResolver(Schema actual, Schema expected) throws IOException { Thread currThread = Thread.currentThread(); ResolvingDecoder resolver; if (currThread == creator && creatorResolver != null) { return creatorResolver; } Map<Schema,ResolvingDecoder> cache = RESOLVER_CACHE.get().get(actual); if (cache == null) { cache = new WeakIdentityHashMap<Schema,ResolvingDecoder>(); RESOLVER_CACHE.get().put(actual, cache); } resolver = cache.get(expected); if (resolver == null) { resolver = DecoderFactory.get().resolvingDecoder( Schema.applyAliases(actual, expected), expected, null); cache.put(expected, resolver); } if (currThread == creator){ creatorResolver = resolver; } return resolver; }
/** Gets a resolving decoder for use by this GenericDatumReader. * Unstable API. * Currently uses a thread local cache to prevent constructing the * resolvers too often, because that is very expensive. */ protected final ResolvingDecoder getResolver(Schema actual, Schema expected) throws IOException { Thread currThread = Thread.currentThread(); ResolvingDecoder resolver; if (currThread == creator && creatorResolver != null) { return creatorResolver; } Map<Schema,ResolvingDecoder> cache = RESOLVER_CACHE.get().get(actual); if (cache == null) { cache = new WeakIdentityHashMap<Schema,ResolvingDecoder>(); RESOLVER_CACHE.get().put(actual, cache); } resolver = cache.get(expected); if (resolver == null) { resolver = DecoderFactory.get().resolvingDecoder( Schema.applyAliases(actual, expected), expected, null); cache.put(expected, resolver); } if (currThread == creator){ creatorResolver = resolver; } return resolver; }
@Override public JsonNode read(JsonNode reuse, Decoder in) throws IOException { if (written == null) // same schema return Json.read(in); // use a resolver to adapt alternate version of Json schema if (resolver == null) resolver = DecoderFactory.get().resolvingDecoder(written, SCHEMA, null); resolver.configure(in); JsonNode result = Json.read(resolver); resolver.drain(); return result; } }
@Override public JsonNode read(JsonNode reuse, Decoder in) throws IOException { if (written == null) // same schema return Json.read(in); // use a resolver to adapt alternate version of Json schema if (resolver == null) resolver = DecoderFactory.get().resolvingDecoder(written, SCHEMA, null); resolver.configure(in); JsonNode result = Json.read(resolver); resolver.drain(); return result; } }