private static Map<Type, GsonSerDerAdapter<?>> registerAdapters() { Map<Type, GsonSerDerAdapter<?>> adapters = new HashMap<>(); adapters.put(Datum.class, new DatumAdapter()); adapters.put(Type.class, new TypeAdapter()); return adapters; }
@Override public Datum deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { JsonObject jsonObject = json.getAsJsonObject(); String typeName = CommonGsonHelper.getOrDie(jsonObject, "type").getAsString(); TajoDataTypes.Type type = TajoDataTypes.Type.valueOf(typeName); switch (type) { case DATE: return new DateDatum(CommonGsonHelper.getOrDie(jsonObject, "value").getAsInt()); case TIME: return new TimeDatum(CommonGsonHelper.getOrDie(jsonObject, "value").getAsLong()); case TIMESTAMP: return new TimestampDatum(CommonGsonHelper.getOrDie(jsonObject, "value").getAsLong()); case INTERVAL: String[] values = CommonGsonHelper.getOrDie(jsonObject, "value").getAsString().split(","); return new IntervalDatum(Integer.parseInt(values[0]), Long.parseLong(values[1])); case ANY: return new AnyDatum(deserialize(CommonGsonHelper.getOrDie(jsonObject, "actual"), typeOfT, context)); default: return context.deserialize(CommonGsonHelper.getOrDie(jsonObject, "body"), DatumFactory.getDatumClass(TajoDataTypes.Type.valueOf(typeName))); } }
@Override public JsonElement serialize(Datum src, Type typeOfSrc, JsonSerializationContext context) { JsonObject jsonObj = new JsonObject(); jsonObj.addProperty("type", src.type().name()); switch (src.type()) { case DATE: jsonObj.addProperty("value", src.asInt4()); break; case TIME: jsonObj.addProperty("value", src.asInt8()); break; case TIMESTAMP: jsonObj.addProperty("value", src.asInt8()); break; case INTERVAL: IntervalDatum interval = (IntervalDatum)src; jsonObj.addProperty("value", interval.getMonths() + "," + interval.getMilliSeconds()); break; case ANY: jsonObj.add("actual", serialize(((AnyDatum) src).getActual(), typeOfSrc, context)); break; default: jsonObj.add("body", context.serialize(src)); } return jsonObj; } }
@Override public Datum deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { JsonObject jsonObject = json.getAsJsonObject(); String typeStr = CommonGsonHelper.getOrDie(jsonObject, "type").getAsString(); org.apache.tajo.type.Type type = TypeStringEncoder.decode(typeStr); switch (type.kind()) { case DATE: return new DateDatum(CommonGsonHelper.getOrDie(jsonObject, "value").getAsInt()); case TIME: return new TimeDatum(CommonGsonHelper.getOrDie(jsonObject, "value").getAsLong()); case TIMESTAMP: return new TimestampDatum(CommonGsonHelper.getOrDie(jsonObject, "value").getAsLong()); case INTERVAL: String[] values = CommonGsonHelper.getOrDie(jsonObject, "value").getAsString().split(","); return new IntervalDatum(Integer.parseInt(values[0]), Long.parseLong(values[1])); case ANY: return new AnyDatum(deserialize(CommonGsonHelper.getOrDie(jsonObject, "actual"), typeOfT, context)); default: return context.deserialize(CommonGsonHelper.getOrDie(jsonObject, "body"), DatumFactory.getDatumClass(TajoDataTypes.Type.valueOf(type.kind().name()))); } }
@Override public JsonElement serialize(Datum src, Type typeOfSrc, JsonSerializationContext context) { JsonObject jsonObj = new JsonObject(); jsonObj.addProperty("type", TypeStringEncoder.encode(src.type())); switch (src.kind()) { case DATE: jsonObj.addProperty("value", src.asInt4()); break; case TIME: jsonObj.addProperty("value", src.asInt8()); break; case TIMESTAMP: jsonObj.addProperty("value", src.asInt8()); break; case INTERVAL: IntervalDatum interval = (IntervalDatum)src; jsonObj.addProperty("value", interval.getMonths() + "," + interval.getMilliSeconds()); break; case ANY: jsonObj.add("actual", serialize(((AnyDatum) src).getActual(), typeOfSrc, context)); break; default: jsonObj.add("body", context.serialize(src)); } return jsonObj; } }
private static Map<Type, GsonSerDerAdapter> registerAdapters() { Map<Type, GsonSerDerAdapter> adapters = TUtil.newHashMap(); adapters.put(Datum.class, new DatumAdapter()); return adapters; }
private static Map<Type, GsonSerDerAdapter<?>> registerAdapters() { Map<Type, GsonSerDerAdapter<?>> adapters = new HashMap<>(); adapters.put(Class.class, new ClassNameSerializer()); adapters.put(Path.class, new PathSerializer()); adapters.put(TableMeta.class, new TableMetaAdapter()); adapters.put(Function.class, new FunctionAdapter()); adapters.put(Datum.class, new DatumAdapter()); adapters.put(DataType.class, new DataTypeAdapter()); adapters.put(Schema.class, new SchemaAdapter()); adapters.put(org.apache.tajo.type.Type.class, new TypeAdapter()); return adapters; }
private static Map<Type, GsonSerDerAdapter> registerAdapters() { Map<Type, GsonSerDerAdapter> adapters = TUtil.newHashMap(); adapters.put(Class.class, new ClassNameSerializer()); adapters.put(Path.class, new PathSerializer()); adapters.put(TableMeta.class, new TableMetaAdapter()); adapters.put(Function.class, new FunctionAdapter()); adapters.put(Datum.class, new DatumAdapter()); adapters.put(DataType.class, new DataTypeAdapter()); return adapters; }
private static Map<Type, GsonSerDerAdapter> registerAdapters() { Map<Type, GsonSerDerAdapter> adapters = TUtil.newHashMap(); adapters.put(Path.class, new PathSerializer()); adapters.put(Class.class, new ClassNameSerializer()); adapters.put(LogicalNode.class, new LogicalNodeAdapter()); adapters.put(EvalNode.class, new EvalNodeAdapter()); adapters.put(TableMeta.class, new TableMetaAdapter()); adapters.put(Function.class, new FunctionAdapter()); adapters.put(GeneralFunction.class, new FunctionAdapter()); adapters.put(AggFunction.class, new FunctionAdapter()); adapters.put(Datum.class, new DatumAdapter()); adapters.put(DataType.class, new DataTypeAdapter()); adapters.put(TimeZone.class, new TimeZoneGsonSerdeAdapter()); return adapters; }
private static Map<Type, GsonSerDerAdapter> registerAdapters() { Map<Type, GsonSerDerAdapter> adapters = TUtil.newHashMap(); adapters.put(Path.class, new PathSerializer()); adapters.put(Class.class, new ClassNameSerializer()); adapters.put(LogicalNode.class, new LogicalNodeAdapter()); adapters.put(EvalNode.class, new EvalNodeAdapter()); adapters.put(TableMeta.class, new TableMetaAdapter()); adapters.put(Function.class, new FunctionAdapter()); adapters.put(GeneralFunction.class, new FunctionAdapter()); adapters.put(AggFunction.class, new FunctionAdapter()); adapters.put(Datum.class, new DatumAdapter()); adapters.put(DataType.class, new DataTypeAdapter()); adapters.put(TimeZone.class, new TimeZoneGsonSerdeAdapter()); return adapters; }
public static Map<Type, GsonSerDerAdapter<?>> registerAdapters() { Map<Type, GsonSerDerAdapter<?>> adapters = new HashMap<>(); adapters.put(Path.class, new PathSerializer()); adapters.put(Class.class, new ClassNameSerializer()); adapters.put(LogicalNode.class, new LogicalNodeAdapter()); adapters.put(EvalNode.class, new EvalNodeAdapter()); adapters.put(TableMeta.class, new TableMetaAdapter()); adapters.put(Function.class, new FunctionAdapter()); adapters.put(GeneralFunction.class, new FunctionAdapter()); adapters.put(AggFunction.class, new FunctionAdapter()); adapters.put(Datum.class, new DatumAdapter()); adapters.put(DataType.class, new DataTypeAdapter()); adapters.put(TimeZone.class, new TimeZoneGsonSerdeAdapter()); adapters.put(org.apache.tajo.type.Type.class, new TypeAdapter()); adapters.put(Schema.class, new SchemaAdapter()); return adapters; }
private Map<Type, GsonSerDerAdapter<?>> registerTypeAdapterMap() { Map<Type, GsonSerDerAdapter<?>> adapters = TUtil.newHashMap(); adapters.put(Path.class, new PathSerializer()); adapters.put(Class.class, new ClassNameSerializer()); adapters.put(LogicalNode.class, new LogicalNodeAdapter()); adapters.put(EvalNode.class, new EvalNodeAdapter()); adapters.put(TableMeta.class, new TableMetaAdapter()); adapters.put(Function.class, new FunctionAdapter()); adapters.put(GeneralFunction.class, new FunctionAdapter()); adapters.put(AggFunction.class, new FunctionAdapter()); adapters.put(Datum.class, new DatumAdapter()); adapters.put(DataType.class, new DataTypeAdapter()); adapters.put(TimeZone.class, new TimeZoneGsonSerdeAdapter()); return adapters; }