@Override public R read(JsonReader in) throws IOException { JsonElement jsonElement = Streams.parse(in); JsonElement labelJsonElement = jsonElement.getAsJsonObject().remove(typeFieldName); String label = (labelJsonElement == null ? null : labelJsonElement.getAsString()); @SuppressWarnings("unchecked") // registration requires that subtype extends T TypeAdapter<R> delegate = (TypeAdapter<R>) labelToDelegate.get(label); if (delegate == null) { throw new JsonParseException("cannot deserialize " + baseType + " subtype named " + label + "; did you forget to register a subtype?"); } return delegate.fromJsonTree(jsonElement); }
@Override public <T> T map(Object source, Class<T> targetType, Configuration configuration) { if(source == null){ return null; } try { return factory.call().getAdapter(targetType).fromJsonTree((JsonElement) source); } catch (Exception e){ throw new MappingException(e); } }
@Override public R read(JsonReader in) throws IOException { JsonElement jsonElement = Streams.parse(in); JsonElement labelJsonElement = jsonElement.getAsJsonObject().remove(typeFieldName); if (labelJsonElement == null) { throw new JsonParseException("cannot deserialize " + baseType + " because it does not define a field named " + typeFieldName); } String label = labelJsonElement.getAsString(); @SuppressWarnings("unchecked") // registration requires that subtype extends T TypeAdapter<R> delegate = (TypeAdapter<R>) labelToDelegate.get(label); if (delegate == null) { throw new JsonParseException("cannot deserialize " + baseType + " subtype named " + label + "; did you forget to register a subtype?"); } return delegate.fromJsonTree(jsonElement); }
private <S> S readValue(JsonObject jsonObject, TypeToken<S> defaultTypeToken) throws IOException { try { TypeToken<S> actualTypeToken; if (jsonObject.isJsonNull()) { return null; } else if (jsonObject.has(OBJECT_TYPE)) { String className = jsonObject.get(OBJECT_TYPE).getAsString(); Class<S> klazz = (Class<S>) Class.forName(className); actualTypeToken = TypeToken.get(klazz); } else if (defaultTypeToken != null) { actualTypeToken = defaultTypeToken; } else { throw new IOException("Could not determine TypeToken."); } TypeAdapter<S> delegate = this.gson.getDelegateAdapter(this.factory, actualTypeToken); S value = delegate.fromJsonTree(jsonObject.get(OBJECT_DATA)); return value; } catch (ClassNotFoundException cnfe) { throw new IOException(cnfe); } }
return delegate.fromJsonTree(jsonElement);
@Override public <T> T map(Object source, TypeRef<T> targetType, Configuration configuration) { if(source == null){ return null; } try { return (T) factory.call().getAdapter(TypeToken.get(targetType.getType())).fromJsonTree((JsonElement) source); } catch (Exception e){ throw new MappingException(e); } } }
@Override public <T> T map(Object source, Class<T> targetType, Configuration configuration) { if(source == null){ return null; } try { return factory.call().getAdapter(targetType).fromJsonTree((JsonElement) source); } catch (Exception e){ throw new MappingException(e); } }
@Override public <T> T map(Object source, TypeRef<T> targetType, Configuration configuration) { if(source == null){ return null; } try { return (T) factory.call().getAdapter(TypeToken.get(targetType.getType())).fromJsonTree((JsonElement) source); } catch (Exception e){ throw new MappingException(e); } } }
public T read(JsonElement element) throws IOException { return this.adapter.fromJsonTree(element); }
void read(Graph graph) throws IOException { if (graph.nextCreate != null) { throw new IllegalStateException("Unexpected recursive call to read() for " + id); } graph.nextCreate = this; value = typeAdapter.fromJsonTree(element); if (value == null) { throw new IllegalStateException("non-null value deserialized to null: " + element); } } }
void read(Graph graph) throws IOException { if (graph.nextCreate != null) { throw new IllegalStateException("Unexpected recursive call to read() for " + id); } graph.nextCreate = this; value = typeAdapter.fromJsonTree(element); if (value == null) { throw new IllegalStateException("non-null value deserialized to null: " + element); } } }
@Override public T read(JsonReader in) throws IOException { JsonObject json = new JsonParser().parse(in).getAsJsonObject(); if (!json.has(KIND)) { throw new IllegalArgumentException("Invalid json. Property kind wasn't specified"); } String kind = json.get(KIND).getAsString(); return getDelegateAdapter(kind).fromJsonTree(json); }
@Override public R read(JsonReader in) throws IOException { JsonElement jsonElement = Streams.parse(in); JsonElement labelJsonElement = jsonElement.getAsJsonObject().remove(typeFieldName); if (labelJsonElement == null) { throw new JsonParseException("cannot deserialize " + baseType + " because it does not define a field named " + typeFieldName); } String label = labelJsonElement.getAsString(); @SuppressWarnings("unchecked") // registration requires that subtype extends T TypeAdapter<R> delegate = (TypeAdapter<R>) labelToDelegate.get(label); if (delegate == null) { throw new JsonParseException("cannot deserialize " + baseType + " subtype named " + label + "; did you forget to register a subtype?"); } return delegate.fromJsonTree(jsonElement); }
@Override public Xor<L, R> read(JsonReader in) throws IOException { JsonElement json = TypeAdapters.JSON_ELEMENT.read(in); try { R value = rightAdapter.fromJsonTree(json); return Xor.right(value); } catch (Throwable e) { L value = leftAdapter.fromJsonTree(json); return Xor.left(value); } }
@Override public <T> T map(Object source, Class<T> targetType, Configuration configuration) { if(source == null){ return null; } try { return factory.call().getAdapter(targetType).fromJsonTree((JsonElement) source); } catch (Exception e){ throw new MappingException(e); } }
@Override public R read(JsonReader in) throws IOException { JsonElement jsonElement = Streams.parse(in); TypeAdapter<R> adapter = getAdapterFor(jsonElement); return adapter == null ? null : adapter.fromJsonTree(jsonElement); } }
/** * Override this to define how this is deserialized in {@code deserialize} to * its type. */ protected T read(JsonReader in, TypeAdapter<JsonElement> elementAdapter, TypeAdapter<T> delegate) throws IOException { JsonElement tree = elementAdapter.read(in); afterRead(tree); return delegate.fromJsonTree(tree); }
@Override public C read(JsonReader in) throws IOException { JsonElement tree = elementAdapter.read(in); afterRead(tree); return delegate.fromJsonTree(tree); } };
@Override public <T> T map(Object source, TypeRef<T> targetType, Configuration configuration) { if(source == null){ return null; } try { return (T) factory.call().getAdapter(TypeToken.get(targetType.getType())).fromJsonTree((JsonElement) source); } catch (Exception e){ throw new MappingException(e); } } }
@Override public Xor<SaltError, R> read(JsonReader in) throws IOException { JsonElement json = TypeAdapters.JSON_ELEMENT.read(in); try { R value = innerAdapter.fromJsonTree(json); return Xor.right(value); } catch (Throwable e) { Optional<SaltError> saltError = extractErrorString(json).flatMap(SaltErrorUtils::deriveError); return Xor.left(saltError.orElse(new JsonParsingError(json, e))); } }