@VisibleForTesting public <P extends Message> P fromJson(JsonElement json, Class<P> clazz) throws SerializationException { return getSerializer(clazz).fromJson(json, null, gson); } }
JsonElement toGson(MessageLite proto, RawStringData data, Gson gson) throws SerializationException { Preconditions.checkState(protoClass.isInstance(proto)); D dto = newDto(); dto.setPB(protoClass.cast(proto)); return dto.toGson(data, gson); }
/** Adds a binding between a proto class and a DTO message class. */ private <P extends Message, D extends ProtoWrapper<P> & GsonSerializable> void add( Class<P> protoClass, Class<D> dtoClass) { ProtoImplSerializer<P, D> serializer = ProtoImplSerializer.of(protoClass, dtoClass); byClass.put(protoClass, serializer); byName.put(protoClass.getSimpleName(), serializer); }
/** * Deserializes a proto from JSON. Only protos whose classes have been * registered can be deserialized. * * @throws SerializationException if no class called {@code type} has been * registered. */ public Message fromJson(JsonElement json, String type) throws SerializationException { return getSerializer(type).fromJson(json, null, gson); }
/** * Serializes a proto to JSON. Only protos whose classes have been registered * will be serialized. * * @throws SerializationException if the class of {@code message} has not been * registered. */ public <P extends Message>JsonElement toJson(P message) throws SerializationException { return getSerializer(message.getClass()).toGson(message, null, gson); }
P fromJson(JsonElement json, RawStringData data, Gson gson) throws SerializationException { D dto = newDto(); try { dto.fromGson(json, gson, data); } catch (GsonException e) { throw new SerializationException(e); } return dto.getPB(); } }
static <P extends Message, D extends ProtoWrapper<P> & GsonSerializable> ProtoImplSerializer<P, D> of( Class<P> protoClass, Class<D> dtoClass) { return new ProtoImplSerializer<P, D>(protoClass, dtoClass); }