diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/parquet/deserialization/SimpleGroupDeserializer.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/parquet/deserialization/SimpleGroupDeserializer.java index 749274f3e..8b2d92d44 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/parquet/deserialization/SimpleGroupDeserializer.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/parquet/deserialization/SimpleGroupDeserializer.java @@ -8,7 +8,7 @@ import io.odpf.dagger.common.serde.DaggerDeserializer; import io.odpf.dagger.common.serde.parquet.SimpleGroupValidation; import io.odpf.dagger.common.serde.proto.deserialization.ProtoType; -import io.odpf.dagger.common.serde.proto.protohandler.RowFactory; +import io.odpf.dagger.common.serde.typehandler.RowFactory; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.types.Row; import org.apache.parquet.example.data.simple.SimpleGroup; diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/deserialization/ProtoDeserializer.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/deserialization/ProtoDeserializer.java index a6590936a..8b2a0f501 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/deserialization/ProtoDeserializer.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/deserialization/ProtoDeserializer.java @@ -11,7 +11,7 @@ import io.odpf.dagger.common.core.StencilClientOrchestrator; import io.odpf.dagger.common.exceptions.DescriptorNotFoundException; import io.odpf.dagger.common.exceptions.serde.DaggerDeserializationException; -import io.odpf.dagger.common.serde.proto.protohandler.RowFactory; +import io.odpf.dagger.common.serde.typehandler.RowFactory; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/deserialization/ProtoType.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/deserialization/ProtoType.java index b4bad0ef9..5e084ddc6 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/deserialization/ProtoType.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/deserialization/ProtoType.java @@ -8,7 +8,7 @@ import io.odpf.dagger.common.core.StencilClientOrchestrator; import io.odpf.dagger.common.exceptions.DescriptorNotFoundException; import io.odpf.dagger.common.serde.DaggerInternalTypeInformation; -import io.odpf.dagger.common.serde.proto.protohandler.TypeInformationFactory; +import io.odpf.dagger.common.serde.typehandler.TypeInformationFactory; import java.io.Serializable; diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/ProtoHandlerFactory.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/ProtoHandlerFactory.java deleted file mode 100644 index 9776495ed..000000000 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/ProtoHandlerFactory.java +++ /dev/null @@ -1,48 +0,0 @@ -package io.odpf.dagger.common.serde.proto.protohandler; - -import com.google.protobuf.Descriptors; - -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * The factory class for Proto handler. - */ -public class ProtoHandlerFactory { - private static Map protoHandlerMap = new ConcurrentHashMap<>(); - - /** - * Gets proto handler. - * - * @param fieldDescriptor the field descriptor - * @return the proto handler - */ - public static ProtoHandler getProtoHandler(final Descriptors.FieldDescriptor fieldDescriptor) { - return protoHandlerMap.computeIfAbsent(fieldDescriptor.getFullName(), - k -> getSpecificHandlers(fieldDescriptor).stream().filter(ProtoHandler::canHandle) - .findFirst().orElseGet(() -> new PrimitiveProtoHandler(fieldDescriptor))); - } - - /** - * Clear proto handler map. - */ - protected static void clearProtoHandlerMap() { - protoHandlerMap.clear(); - } - - private static List getSpecificHandlers(Descriptors.FieldDescriptor fieldDescriptor) { - return Arrays.asList( - new MapProtoHandler(fieldDescriptor), - new TimestampProtoHandler(fieldDescriptor), - new EnumProtoHandler(fieldDescriptor), - new StructMessageProtoHandler(fieldDescriptor), - new RepeatedStructMessageProtoHandler(fieldDescriptor), - new RepeatedPrimitiveProtoHandler(fieldDescriptor), - new RepeatedMessageProtoHandler(fieldDescriptor), - new RepeatedEnumProtoHandler(fieldDescriptor), - new MessageProtoHandler(fieldDescriptor) - ); - } -} diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/PrimitiveTypeHandlerFactory.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/PrimitiveTypeHandlerFactory.java deleted file mode 100644 index 9adbcabbe..000000000 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/PrimitiveTypeHandlerFactory.java +++ /dev/null @@ -1,40 +0,0 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; - -import io.odpf.dagger.common.exceptions.serde.DataTypeNotSupportedException; -import com.google.protobuf.Descriptors; - -import java.util.Arrays; -import java.util.List; -import java.util.Optional; - -/** - * The factory class for Primitive type handler. - */ -public class PrimitiveTypeHandlerFactory { - /** - * Gets type handler. - * - * @param fieldDescriptor the field descriptor - * @return the type handler - */ - public static PrimitiveTypeHandler getTypeHandler(Descriptors.FieldDescriptor fieldDescriptor) { - Optional filteredTypeHandlers = - getSpecificHandlers(fieldDescriptor) - .stream() - .filter(PrimitiveTypeHandler::canHandle) - .findFirst(); - return filteredTypeHandlers.orElseThrow(() -> new DataTypeNotSupportedException("Data type " + fieldDescriptor.getJavaType() + " not supported in primitive type handlers")); - } - - private static List getSpecificHandlers(Descriptors.FieldDescriptor fieldDescriptor) { - return Arrays.asList( - new IntegerPrimitiveTypeHandler(fieldDescriptor), - new BooleanPrimitiveTypeHandler(fieldDescriptor), - new DoublePrimitiveTypeHandler(fieldDescriptor), - new FloatPrimitiveTypeHandler(fieldDescriptor), - new LongPrimitiveTypeHandler(fieldDescriptor), - new StringPrimitiveTypeHandler(fieldDescriptor), - new ByteStringPrimitiveTypeHandler(fieldDescriptor) - ); - } -} diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/serialization/ProtoSerializer.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/serialization/ProtoSerializer.java index 15b863b8a..7c5ea6c85 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/serialization/ProtoSerializer.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/serialization/ProtoSerializer.java @@ -10,8 +10,8 @@ import io.odpf.dagger.common.exceptions.DescriptorNotFoundException; import io.odpf.dagger.common.exceptions.serde.DaggerSerializationException; import io.odpf.dagger.common.exceptions.serde.InvalidColumnMappingException; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandler; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandlerFactory; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; import org.apache.kafka.clients.producer.ProducerRecord; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -137,10 +137,10 @@ private DynamicMessage.Builder populateBuilder(DynamicMessage.Builder builder, D if (fieldDescriptor == null) { return builder; } - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(fieldDescriptor); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(fieldDescriptor); if (data != null) { try { - builder = protoHandler.transformToProtoBuilder(builder, data); + builder = typeHandler.transformToProtoBuilder(builder, data); } catch (IllegalArgumentException e) { String protoType = fieldDescriptor.getType().toString(); if (fieldDescriptor.isRepeated()) { diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/PrimitiveProtoHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/PrimitiveTypeHandler.java similarity index 65% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/PrimitiveProtoHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/PrimitiveTypeHandler.java index 8efea007d..0ca4bb6da 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/PrimitiveProtoHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/PrimitiveTypeHandler.java @@ -1,10 +1,10 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler; import org.apache.flink.api.common.typeinfo.TypeInformation; import io.odpf.dagger.common.exceptions.serde.InvalidDataTypeException; -import io.odpf.dagger.common.serde.proto.protohandler.typehandler.PrimitiveTypeHandlerFactory; -import io.odpf.dagger.common.serde.proto.protohandler.typehandler.PrimitiveTypeHandler; +import io.odpf.dagger.common.serde.typehandler.primitive.PrimitiveHandlerFactory; +import io.odpf.dagger.common.serde.typehandler.primitive.PrimitiveHandler; import com.google.protobuf.Descriptors; import com.google.protobuf.DynamicMessage; import org.apache.parquet.example.data.simple.SimpleGroup; @@ -12,7 +12,7 @@ /** * The type Primitive proto handler. */ -public class PrimitiveProtoHandler implements ProtoHandler { +public class PrimitiveTypeHandler implements TypeHandler { private Descriptors.FieldDescriptor fieldDescriptor; /** @@ -20,7 +20,7 @@ public class PrimitiveProtoHandler implements ProtoHandler { * * @param fieldDescriptor the field descriptor */ - public PrimitiveProtoHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public PrimitiveTypeHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } @@ -40,9 +40,9 @@ public Object transformFromPostProcessor(Object field) { } private Object transform(Object field) { - PrimitiveTypeHandler primitiveTypeHandler = PrimitiveTypeHandlerFactory.getTypeHandler(fieldDescriptor); + PrimitiveHandler primitiveHandler = PrimitiveHandlerFactory.getTypeHandler(fieldDescriptor); try { - return primitiveTypeHandler.parseObject(field); + return primitiveHandler.parseObject(field); } catch (NumberFormatException e) { String errMessage = String.format("type mismatch of field: %s, expecting %s type, actual type %s", fieldDescriptor.getName(), fieldDescriptor.getType(), field.getClass()); throw new InvalidDataTypeException(errMessage); @@ -56,8 +56,8 @@ public Object transformFromProto(Object field) { @Override public Object transformFromParquet(SimpleGroup simpleGroup) { - PrimitiveTypeHandler primitiveTypeHandler = PrimitiveTypeHandlerFactory.getTypeHandler(fieldDescriptor); - return primitiveTypeHandler.parseSimpleGroup(simpleGroup); + PrimitiveHandler primitiveHandler = PrimitiveHandlerFactory.getTypeHandler(fieldDescriptor); + return primitiveHandler.parseSimpleGroup(simpleGroup); } @Override @@ -67,8 +67,8 @@ public Object transformToJson(Object field) { @Override public TypeInformation getTypeInformation() { - PrimitiveTypeHandler primitiveTypeHandler = PrimitiveTypeHandlerFactory.getTypeHandler(fieldDescriptor); - return primitiveTypeHandler.getTypeInformation(); + PrimitiveHandler primitiveHandler = PrimitiveHandlerFactory.getTypeHandler(fieldDescriptor); + return primitiveHandler.getTypeInformation(); } } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RowFactory.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/RowFactory.java similarity index 76% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RowFactory.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/RowFactory.java index e567b920d..99d3e92b4 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RowFactory.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/RowFactory.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler; import org.apache.flink.types.Row; @@ -28,9 +28,9 @@ public static Row createRow(Map inputMap, Descriptors.Descriptor return row; } for (FieldDescriptor fieldDescriptor : descriptorFields) { - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(fieldDescriptor); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(fieldDescriptor); if (inputMap.get(fieldDescriptor.getName()) != null) { - row.setField(fieldDescriptor.getIndex(), protoHandler.transformFromPostProcessor(inputMap.get(fieldDescriptor.getName()))); + row.setField(fieldDescriptor.getIndex(), typeHandler.transformFromPostProcessor(inputMap.get(fieldDescriptor.getName()))); } } return row; @@ -47,8 +47,8 @@ public static Row createRow(DynamicMessage proto, int extraColumns) { List descriptorFields = proto.getDescriptorForType().getFields(); Row row = new Row(descriptorFields.size() + extraColumns); for (FieldDescriptor fieldDescriptor : descriptorFields) { - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(fieldDescriptor); - row.setField(fieldDescriptor.getIndex(), protoHandler.transformFromProto(proto.getField(fieldDescriptor))); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(fieldDescriptor); + row.setField(fieldDescriptor.getIndex(), typeHandler.transformFromProto(proto.getField(fieldDescriptor))); } return row; } @@ -57,8 +57,8 @@ public static Row createRow(Descriptors.Descriptor descriptor, SimpleGroup simpl List descriptorFields = descriptor.getFields(); Row row = new Row(descriptorFields.size() + extraColumns); for (FieldDescriptor fieldDescriptor : descriptorFields) { - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(fieldDescriptor); - row.setField(fieldDescriptor.getIndex(), protoHandler.transformFromParquet(simpleGroup)); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(fieldDescriptor); + row.setField(fieldDescriptor.getIndex(), typeHandler.transformFromParquet(simpleGroup)); } return row; } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/ProtoHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/TypeHandler.java similarity index 94% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/ProtoHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/TypeHandler.java index 89c529775..f0947df39 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/ProtoHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/TypeHandler.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler; import org.apache.flink.api.common.typeinfo.TypeInformation; @@ -8,7 +8,7 @@ /** * The interface Proto handler. */ -public interface ProtoHandler { +public interface TypeHandler { /** * Can handle boolean. * diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/TypeHandlerFactory.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/TypeHandlerFactory.java new file mode 100644 index 000000000..ef31ff706 --- /dev/null +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/TypeHandlerFactory.java @@ -0,0 +1,57 @@ +package io.odpf.dagger.common.serde.typehandler; + +import com.google.protobuf.Descriptors; +import io.odpf.dagger.common.serde.typehandler.complex.EnumHandler; +import io.odpf.dagger.common.serde.typehandler.complex.MapHandler; +import io.odpf.dagger.common.serde.typehandler.complex.MessageHandler; +import io.odpf.dagger.common.serde.typehandler.complex.StructMessageHandler; +import io.odpf.dagger.common.serde.typehandler.complex.TimestampHandler; +import io.odpf.dagger.common.serde.typehandler.repeated.RepeatedEnumHandler; +import io.odpf.dagger.common.serde.typehandler.repeated.RepeatedMessageHandler; +import io.odpf.dagger.common.serde.typehandler.repeated.RepeatedPrimitiveHandler; +import io.odpf.dagger.common.serde.typehandler.repeated.RepeatedStructMessageHandler; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * The factory class for Type handler. + */ +public class TypeHandlerFactory { + private static Map typeHandlerMap = new ConcurrentHashMap<>(); + + /** + * Gets type handler. + * + * @param fieldDescriptor the field descriptor + * @return the type handler + */ + public static TypeHandler getTypeHandler(final Descriptors.FieldDescriptor fieldDescriptor) { + return typeHandlerMap.computeIfAbsent(fieldDescriptor.getFullName(), + k -> getSpecificHandlers(fieldDescriptor).stream().filter(TypeHandler::canHandle) + .findFirst().orElseGet(() -> new PrimitiveTypeHandler(fieldDescriptor))); + } + + /** + * Clear type handler map. + */ + protected static void clearTypeHandlerMap() { + typeHandlerMap.clear(); + } + + private static List getSpecificHandlers(Descriptors.FieldDescriptor fieldDescriptor) { + return Arrays.asList( + new MapHandler(fieldDescriptor), + new TimestampHandler(fieldDescriptor), + new EnumHandler(fieldDescriptor), + new StructMessageHandler(fieldDescriptor), + new RepeatedStructMessageHandler(fieldDescriptor), + new RepeatedPrimitiveHandler(fieldDescriptor), + new RepeatedMessageHandler(fieldDescriptor), + new RepeatedEnumHandler(fieldDescriptor), + new MessageHandler(fieldDescriptor) + ); + } +} diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/TypeInformationFactory.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/TypeInformationFactory.java similarity index 86% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/TypeInformationFactory.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/TypeInformationFactory.java index c44a57665..7272887a0 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/TypeInformationFactory.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/TypeInformationFactory.java @@ -1,12 +1,11 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler; +import com.google.protobuf.Descriptors; +import io.odpf.dagger.common.exceptions.DescriptorNotFoundException; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; import org.apache.flink.types.Row; -import com.google.protobuf.Descriptors; -import io.odpf.dagger.common.exceptions.DescriptorNotFoundException; - /** * The factory class for Type information. */ @@ -29,7 +28,7 @@ public static TypeInformation getRowType(Descriptors.Descriptor descriptor) TypeInformation[] fieldTypes = descriptor .getFields() .stream() - .map(fieldDescriptor -> ProtoHandlerFactory.getProtoHandler(fieldDescriptor).getTypeInformation()) + .map(fieldDescriptor -> TypeHandlerFactory.getTypeHandler(fieldDescriptor).getTypeInformation()) .toArray(TypeInformation[]::new); return Types.ROW_NAMED(fieldNames, fieldTypes); } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/EnumProtoHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/EnumHandler.java similarity index 93% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/EnumProtoHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/EnumHandler.java index 8ef643ca0..1ec8ef44e 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/EnumProtoHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/EnumHandler.java @@ -1,6 +1,7 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.complex; import io.odpf.dagger.common.serde.parquet.SimpleGroupValidation; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; @@ -12,7 +13,7 @@ /** * The type Enum proto handler. */ -public class EnumProtoHandler implements ProtoHandler { +public class EnumHandler implements TypeHandler { private Descriptors.FieldDescriptor fieldDescriptor; /** @@ -20,7 +21,7 @@ public class EnumProtoHandler implements ProtoHandler { * * @param fieldDescriptor the field descriptor */ - public EnumProtoHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public EnumHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/MapProtoHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/MapHandler.java similarity index 92% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/MapProtoHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/MapHandler.java index a86cc4bb7..3524a58ce 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/MapProtoHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/MapHandler.java @@ -1,9 +1,12 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.complex; import com.google.protobuf.Descriptors; import com.google.protobuf.DynamicMessage; import com.google.protobuf.MapEntry; import com.google.protobuf.WireFormat; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; +import io.odpf.dagger.common.serde.typehandler.RowFactory; +import io.odpf.dagger.common.serde.typehandler.TypeInformationFactory; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; import org.apache.flink.types.Row; @@ -17,7 +20,7 @@ /** * The type Map proto handler. */ -public class MapProtoHandler implements ProtoHandler { +public class MapHandler implements TypeHandler { private Descriptors.FieldDescriptor fieldDescriptor; @@ -26,7 +29,7 @@ public class MapProtoHandler implements ProtoHandler { * * @param fieldDescriptor the field descriptor */ - public MapProtoHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public MapHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/MessageProtoHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/MessageHandler.java similarity index 82% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/MessageProtoHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/MessageHandler.java index d6e84e076..f21d1be0f 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/MessageProtoHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/MessageHandler.java @@ -1,5 +1,9 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.complex; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; +import io.odpf.dagger.common.serde.typehandler.RowFactory; +import io.odpf.dagger.common.serde.typehandler.TypeInformationFactory; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.formats.json.JsonRowSerializationSchema; import org.apache.flink.types.Row; @@ -17,7 +21,7 @@ /** * The type Message proto handler. */ -public class MessageProtoHandler implements ProtoHandler { +public class MessageHandler implements TypeHandler { private FieldDescriptor fieldDescriptor; private JsonRowSerializationSchema jsonRowSerializationSchema; @@ -26,7 +30,7 @@ public class MessageProtoHandler implements ProtoHandler { * * @param fieldDescriptor the field descriptor */ - public MessageProtoHandler(FieldDescriptor fieldDescriptor) { + public MessageHandler(FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } @@ -48,9 +52,9 @@ public Builder transformToProtoBuilder(Builder builder, Object field) { for (FieldDescriptor nestedFieldDescriptor : nestedFieldDescriptors) { int index = nestedFieldDescriptor.getIndex(); if (index < rowElement.getArity()) { - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(nestedFieldDescriptor); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(nestedFieldDescriptor); if (rowElement.getField(index) != null) { - protoHandler.transformToProtoBuilder(elementBuilder, rowElement.getField(index)); + typeHandler.transformToProtoBuilder(elementBuilder, rowElement.getField(index)); } } } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/StructMessageProtoHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/StructMessageHandler.java similarity index 85% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/StructMessageProtoHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/StructMessageHandler.java index bb22b3717..5f307f75a 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/StructMessageProtoHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/StructMessageHandler.java @@ -1,5 +1,6 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.complex; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; @@ -10,7 +11,7 @@ /** * The type Struct message proto handler. */ -public class StructMessageProtoHandler implements ProtoHandler { +public class StructMessageHandler implements TypeHandler { private Descriptors.FieldDescriptor fieldDescriptor; /** @@ -18,7 +19,7 @@ public class StructMessageProtoHandler implements ProtoHandler { * * @param fieldDescriptor the field descriptor */ - public StructMessageProtoHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public StructMessageHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/TimestampProtoHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/TimestampHandler.java similarity index 93% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/TimestampProtoHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/TimestampHandler.java index 321790c70..7ac62ccc0 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/TimestampProtoHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/complex/TimestampHandler.java @@ -1,7 +1,10 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.complex; import com.google.protobuf.Timestamp; import io.odpf.dagger.common.serde.parquet.SimpleGroupValidation; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; +import io.odpf.dagger.common.serde.typehandler.RowFactory; +import io.odpf.dagger.common.serde.typehandler.TypeInformationFactory; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.types.Row; @@ -19,7 +22,7 @@ /** * The type Timestamp proto handler. */ -public class TimestampProtoHandler implements ProtoHandler { +public class TimestampHandler implements TypeHandler { private static final int SECOND_TO_MS_FACTOR = 1000; private static final long DEFAULT_SECONDS_VALUE = 0L; private static final int DEFAULT_NANOS_VALUE = 0; @@ -32,7 +35,7 @@ public class TimestampProtoHandler implements ProtoHandler { * * @param fieldDescriptor the field descriptor */ - public TimestampProtoHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public TimestampHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/BooleanPrimitiveTypeHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/BooleanHandler.java similarity index 89% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/BooleanPrimitiveTypeHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/BooleanHandler.java index 4d79c2f53..3184be536 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/BooleanPrimitiveTypeHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/BooleanHandler.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import com.google.common.primitives.Booleans; import com.google.protobuf.Descriptors; @@ -13,7 +13,7 @@ /** * The type Boolean primitive type handler. */ -public class BooleanPrimitiveTypeHandler implements PrimitiveTypeHandler { +public class BooleanHandler implements PrimitiveHandler { private Descriptors.FieldDescriptor fieldDescriptor; /** @@ -21,7 +21,7 @@ public class BooleanPrimitiveTypeHandler implements PrimitiveTypeHandler { * * @param fieldDescriptor the field descriptor */ - public BooleanPrimitiveTypeHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public BooleanHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/ByteStringPrimitiveTypeHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/ByteStringHandler.java similarity index 89% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/ByteStringPrimitiveTypeHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/ByteStringHandler.java index 958f075fe..29413fc1f 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/ByteStringPrimitiveTypeHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/ByteStringHandler.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import io.odpf.dagger.common.serde.parquet.SimpleGroupValidation; import org.apache.flink.api.common.typeinfo.TypeInformation; @@ -15,7 +15,7 @@ /** * The type Byte string primitive type handler. */ -public class ByteStringPrimitiveTypeHandler implements PrimitiveTypeHandler { +public class ByteStringHandler implements PrimitiveHandler { private Descriptors.FieldDescriptor fieldDescriptor; /** @@ -23,7 +23,7 @@ public class ByteStringPrimitiveTypeHandler implements PrimitiveTypeHandler { * * @param fieldDescriptor the field descriptor */ - public ByteStringPrimitiveTypeHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public ByteStringHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/DoublePrimitiveTypeHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/DoubleHandler.java similarity index 89% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/DoublePrimitiveTypeHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/DoubleHandler.java index 4cc0c2d07..ef6644e9d 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/DoublePrimitiveTypeHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/DoubleHandler.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import com.google.common.primitives.Doubles; import com.google.protobuf.Descriptors; @@ -13,7 +13,7 @@ /** * The type Double primitive type handler. */ -public class DoublePrimitiveTypeHandler implements PrimitiveTypeHandler { +public class DoubleHandler implements PrimitiveHandler { private Descriptors.FieldDescriptor fieldDescriptor; /** @@ -21,7 +21,7 @@ public class DoublePrimitiveTypeHandler implements PrimitiveTypeHandler { * * @param fieldDescriptor the field descriptor */ - public DoublePrimitiveTypeHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public DoubleHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/FloatPrimitiveTypeHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/FloatHandler.java similarity index 89% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/FloatPrimitiveTypeHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/FloatHandler.java index 9f42fb7d2..0b7f54b04 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/FloatPrimitiveTypeHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/FloatHandler.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import com.google.common.primitives.Floats; import com.google.protobuf.Descriptors; @@ -13,7 +13,7 @@ /** * The type Float primitive type handler. */ -public class FloatPrimitiveTypeHandler implements PrimitiveTypeHandler { +public class FloatHandler implements PrimitiveHandler { private Descriptors.FieldDescriptor fieldDescriptor; /** @@ -21,7 +21,7 @@ public class FloatPrimitiveTypeHandler implements PrimitiveTypeHandler { * * @param fieldDescriptor the field descriptor */ - public FloatPrimitiveTypeHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public FloatHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/IntegerPrimitiveTypeHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/IntegerHandler.java similarity index 89% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/IntegerPrimitiveTypeHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/IntegerHandler.java index 1fbc1931c..6fdf41db8 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/IntegerPrimitiveTypeHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/IntegerHandler.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import com.google.common.primitives.Ints; import com.google.protobuf.Descriptors; @@ -13,7 +13,7 @@ /** * The type Integer primitive type handler. */ -public class IntegerPrimitiveTypeHandler implements PrimitiveTypeHandler { +public class IntegerHandler implements PrimitiveHandler { private Descriptors.FieldDescriptor fieldDescriptor; /** @@ -21,7 +21,7 @@ public class IntegerPrimitiveTypeHandler implements PrimitiveTypeHandler { * * @param fieldDescriptor the field descriptor */ - public IntegerPrimitiveTypeHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public IntegerHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/LongPrimitiveTypeHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/LongHandler.java similarity index 89% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/LongPrimitiveTypeHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/LongHandler.java index 4ee15d02a..464a99dcb 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/LongPrimitiveTypeHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/LongHandler.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import com.google.protobuf.Descriptors; import com.google.protobuf.Descriptors.FieldDescriptor.JavaType; @@ -13,7 +13,7 @@ /** * The type Long primitive type handler. */ -public class LongPrimitiveTypeHandler implements PrimitiveTypeHandler { +public class LongHandler implements PrimitiveHandler { private Descriptors.FieldDescriptor fieldDescriptor; /** @@ -21,7 +21,7 @@ public class LongPrimitiveTypeHandler implements PrimitiveTypeHandler { * * @param fieldDescriptor the field descriptor */ - public LongPrimitiveTypeHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public LongHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/PrimitiveTypeHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/PrimitiveHandler.java similarity index 93% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/PrimitiveTypeHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/PrimitiveHandler.java index 071905389..b9080a208 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/PrimitiveTypeHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/PrimitiveHandler.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.parquet.example.data.simple.SimpleGroup; @@ -6,7 +6,7 @@ /** * The interface Primitive type handler. */ -public interface PrimitiveTypeHandler { +public interface PrimitiveHandler { /** * this method check if it can handle the data type or not. * diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/PrimitiveHandlerFactory.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/PrimitiveHandlerFactory.java new file mode 100644 index 000000000..bccedcd94 --- /dev/null +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/PrimitiveHandlerFactory.java @@ -0,0 +1,40 @@ +package io.odpf.dagger.common.serde.typehandler.primitive; + +import io.odpf.dagger.common.exceptions.serde.DataTypeNotSupportedException; +import com.google.protobuf.Descriptors; + +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +/** + * The factory class for Primitive type handler. + */ +public class PrimitiveHandlerFactory { + /** + * Gets type handler. + * + * @param fieldDescriptor the field descriptor + * @return the type handler + */ + public static PrimitiveHandler getTypeHandler(Descriptors.FieldDescriptor fieldDescriptor) { + Optional filteredTypeHandlers = + getSpecificHandlers(fieldDescriptor) + .stream() + .filter(PrimitiveHandler::canHandle) + .findFirst(); + return filteredTypeHandlers.orElseThrow(() -> new DataTypeNotSupportedException("Data type " + fieldDescriptor.getJavaType() + " not supported in primitive type handlers")); + } + + private static List getSpecificHandlers(Descriptors.FieldDescriptor fieldDescriptor) { + return Arrays.asList( + new IntegerHandler(fieldDescriptor), + new BooleanHandler(fieldDescriptor), + new DoubleHandler(fieldDescriptor), + new FloatHandler(fieldDescriptor), + new LongHandler(fieldDescriptor), + new StringHandler(fieldDescriptor), + new ByteStringHandler(fieldDescriptor) + ); + } +} diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/StringPrimitiveTypeHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/StringHandler.java similarity index 89% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/StringPrimitiveTypeHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/StringHandler.java index 91021f419..6482d3411 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/StringPrimitiveTypeHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/primitive/StringHandler.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import com.google.protobuf.Descriptors; import com.google.protobuf.Descriptors.FieldDescriptor.JavaType; @@ -14,7 +14,7 @@ /** * The type String primitive type handler. */ -public class StringPrimitiveTypeHandler implements PrimitiveTypeHandler { +public class StringHandler implements PrimitiveHandler { private Descriptors.FieldDescriptor fieldDescriptor; /** @@ -22,7 +22,7 @@ public class StringPrimitiveTypeHandler implements PrimitiveTypeHandler { * * @param fieldDescriptor the field descriptor */ - public StringPrimitiveTypeHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public StringHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedEnumProtoHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedEnumHandler.java similarity index 89% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedEnumProtoHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedEnumHandler.java index e14a948ef..5fecaf5d6 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedEnumProtoHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedEnumHandler.java @@ -1,5 +1,6 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.repeated; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; import org.apache.flink.api.java.typeutils.ObjectArrayTypeInfo; @@ -18,7 +19,7 @@ /** * The type Repeated enum proto handler. */ -public class RepeatedEnumProtoHandler implements ProtoHandler { +public class RepeatedEnumHandler implements TypeHandler { private Descriptors.FieldDescriptor fieldDescriptor; private static final Gson GSON = new Gson(); @@ -27,7 +28,7 @@ public class RepeatedEnumProtoHandler implements ProtoHandler { * * @param fieldDescriptor the field descriptor */ - public RepeatedEnumProtoHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public RepeatedEnumHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedMessageProtoHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedMessageHandler.java similarity index 87% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedMessageProtoHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedMessageHandler.java index c10938b2b..cfb0187b6 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedMessageProtoHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedMessageHandler.java @@ -1,5 +1,9 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.repeated; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; +import io.odpf.dagger.common.serde.typehandler.RowFactory; +import io.odpf.dagger.common.serde.typehandler.TypeInformationFactory; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; import org.apache.flink.formats.json.JsonRowSerializationSchema; @@ -21,7 +25,7 @@ /** * The type Repeated message proto handler. */ -public class RepeatedMessageProtoHandler implements ProtoHandler { +public class RepeatedMessageHandler implements TypeHandler { private JsonRowSerializationSchema jsonRowSerializationSchema; private FieldDescriptor fieldDescriptor; @@ -30,7 +34,7 @@ public class RepeatedMessageProtoHandler implements ProtoHandler { * * @param fieldDescriptor the field descriptor */ - public RepeatedMessageProtoHandler(FieldDescriptor fieldDescriptor) { + public RepeatedMessageHandler(FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } @@ -115,8 +119,8 @@ private void handleNestedField(Builder elementBuilder, List nes int index = nestedFieldDescriptor.getIndex(); if (index < row.getArity()) { - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(nestedFieldDescriptor); - protoHandler.transformToProtoBuilder(elementBuilder, row.getField(index)); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(nestedFieldDescriptor); + typeHandler.transformToProtoBuilder(elementBuilder, row.getField(index)); } } } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedPrimitiveProtoHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedPrimitiveHandler.java similarity index 69% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedPrimitiveProtoHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedPrimitiveHandler.java index e0472a1dd..88944c3db 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedPrimitiveProtoHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedPrimitiveHandler.java @@ -1,9 +1,11 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.repeated; +import io.odpf.dagger.common.serde.typehandler.PrimitiveTypeHandler; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; import org.apache.flink.api.common.typeinfo.TypeInformation; -import io.odpf.dagger.common.serde.proto.protohandler.typehandler.PrimitiveTypeHandlerFactory; -import io.odpf.dagger.common.serde.proto.protohandler.typehandler.PrimitiveTypeHandler; +import io.odpf.dagger.common.serde.typehandler.primitive.PrimitiveHandlerFactory; +import io.odpf.dagger.common.serde.typehandler.primitive.PrimitiveHandler; import com.google.gson.Gson; import com.google.protobuf.Descriptors.FieldDescriptor; import com.google.protobuf.DynamicMessage; @@ -19,7 +21,7 @@ /** * The type Repeated primitive proto handler. */ -public class RepeatedPrimitiveProtoHandler implements ProtoHandler { +public class RepeatedPrimitiveHandler implements TypeHandler { private final FieldDescriptor fieldDescriptor; private static final Gson GSON = new Gson(); @@ -28,7 +30,7 @@ public class RepeatedPrimitiveProtoHandler implements ProtoHandler { * * @param fieldDescriptor the field descriptor */ - public RepeatedPrimitiveProtoHandler(FieldDescriptor fieldDescriptor) { + public RepeatedPrimitiveHandler(FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } @@ -53,9 +55,9 @@ public Object transformFromPostProcessor(Object field) { ArrayList outputValues = new ArrayList<>(); if (field != null) { List inputValues = (List) field; - PrimitiveProtoHandler primitiveProtoHandler = new PrimitiveProtoHandler(fieldDescriptor); + PrimitiveTypeHandler primitiveTypeHandler = new PrimitiveTypeHandler(fieldDescriptor); for (Object inputField : inputValues) { - outputValues.add(primitiveProtoHandler.transformFromPostProcessor(inputField)); + outputValues.add(primitiveTypeHandler.transformFromPostProcessor(inputField)); } } return outputValues; @@ -63,8 +65,8 @@ public Object transformFromPostProcessor(Object field) { @Override public Object transformFromProto(Object field) { - PrimitiveTypeHandler primitiveTypeHandler = PrimitiveTypeHandlerFactory.getTypeHandler(fieldDescriptor); - return primitiveTypeHandler.getArray(field); + PrimitiveHandler primitiveHandler = PrimitiveHandlerFactory.getTypeHandler(fieldDescriptor); + return primitiveHandler.getArray(field); } @Override @@ -79,6 +81,6 @@ public Object transformToJson(Object field) { @Override public TypeInformation getTypeInformation() { - return PrimitiveTypeHandlerFactory.getTypeHandler(fieldDescriptor).getArrayType(); + return PrimitiveHandlerFactory.getTypeHandler(fieldDescriptor).getArrayType(); } } diff --git a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedStructMessageProtoHandler.java b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedStructMessageHandler.java similarity index 84% rename from dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedStructMessageProtoHandler.java rename to dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedStructMessageHandler.java index 58e3ef425..4521c3054 100644 --- a/dagger-common/src/main/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedStructMessageProtoHandler.java +++ b/dagger-common/src/main/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedStructMessageHandler.java @@ -1,5 +1,6 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.repeated; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; @@ -10,7 +11,7 @@ /** * The type Repeated struct message proto handler. */ -public class RepeatedStructMessageProtoHandler implements ProtoHandler { +public class RepeatedStructMessageHandler implements TypeHandler { private Descriptors.FieldDescriptor fieldDescriptor; /** @@ -18,7 +19,7 @@ public class RepeatedStructMessageProtoHandler implements ProtoHandler { * * @param fieldDescriptor the field descriptor */ - public RepeatedStructMessageProtoHandler(Descriptors.FieldDescriptor fieldDescriptor) { + public RepeatedStructMessageHandler(Descriptors.FieldDescriptor fieldDescriptor) { this.fieldDescriptor = fieldDescriptor; } diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/ProtoHandlerFactoryTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/ProtoHandlerFactoryTest.java deleted file mode 100644 index b860f9ff5..000000000 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/ProtoHandlerFactoryTest.java +++ /dev/null @@ -1,126 +0,0 @@ -package io.odpf.dagger.common.serde.proto.protohandler; - -import com.google.protobuf.Descriptors; -import io.odpf.dagger.consumer.TestBookingLogMessage; -import io.odpf.dagger.consumer.TestFeedbackLogMessage; -import io.odpf.dagger.consumer.TestNestedRepeatedMessage; -import io.odpf.dagger.consumer.TestRepeatedEnumMessage; -import org.junit.Before; -import org.junit.Test; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; - -import static org.junit.Assert.assertEquals; - -public class ProtoHandlerFactoryTest { - @Before - public void setup() { - ProtoHandlerFactory.clearProtoHandlerMap(); - } - - @Test - public void shouldReturnMapProtoHandlerIfMapFieldDescriptorPassed() { - Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(mapFieldDescriptor); - assertEquals(MapProtoHandler.class, protoHandler.getClass()); - } - - @Test - public void shouldReturnTimestampProtoHandlerIfTimestampFieldDescriptorPassed() { - Descriptors.FieldDescriptor timestampFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("event_timestamp"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(timestampFieldDescriptor); - assertEquals(TimestampProtoHandler.class, protoHandler.getClass()); - } - - @Test - public void shouldReturnEnumProtoHandlerIfEnumFieldDescriptorPassed() { - Descriptors.FieldDescriptor enumFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("service_type"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(enumFieldDescriptor); - assertEquals(EnumProtoHandler.class, protoHandler.getClass()); - } - - @Test - public void shouldReturnRepeatedProtoHandlerIfRepeatedFieldDescriptorPassed() { - Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("meta_array"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(repeatedFieldDescriptor); - assertEquals(RepeatedPrimitiveProtoHandler.class, protoHandler.getClass()); - } - - @Test - public void shouldReturnRepeatedMessageProtoHandlerIfRepeatedMessageFieldDescriptorPassed() { - Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestFeedbackLogMessage.getDescriptor().findFieldByName("reason"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(repeatedMessageFieldDescriptor); - assertEquals(RepeatedMessageProtoHandler.class, protoHandler.getClass()); - } - - @Test - public void shouldReturnRepeatedEnumProtoHandlerIfRepeatedEnumFieldDescriptorPassed() { - Descriptors.FieldDescriptor repeatedEnumFieldDescriptor = TestRepeatedEnumMessage.getDescriptor().findFieldByName("test_enums"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(repeatedEnumFieldDescriptor); - assertEquals(RepeatedEnumProtoHandler.class, protoHandler.getClass()); - } - - @Test - public void shouldReturnRepeatedStructProtoHandlerIfRepeatedStructFieldDescriptorPassed() { - Descriptors.FieldDescriptor repeatedStructFieldDescriptor = TestNestedRepeatedMessage.getDescriptor().findFieldByName("metadata"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(repeatedStructFieldDescriptor); - assertEquals(RepeatedStructMessageProtoHandler.class, protoHandler.getClass()); - } - - @Test - public void shouldReturnStructProtoHandlerIfStructFieldDescriptorPassed() { - Descriptors.FieldDescriptor structFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("profile_data"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(structFieldDescriptor); - assertEquals(StructMessageProtoHandler.class, protoHandler.getClass()); - } - - @Test - public void shouldReturnMessageProtoHandlerIfMessageFieldDescriptorPassed() { - Descriptors.FieldDescriptor messageFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("payment_option_metadata"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(messageFieldDescriptor); - assertEquals(MessageProtoHandler.class, protoHandler.getClass()); - } - - @Test - public void shouldReturnDefaultProtoHandlerIfPrimitiveFieldDescriptorPassed() { - Descriptors.FieldDescriptor primitiveFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(primitiveFieldDescriptor); - assertEquals(PrimitiveProtoHandler.class, protoHandler.getClass()); - } - - @Test - public void shouldReturnTheSameObjectWithMultipleThreads() throws InterruptedException { - ExecutorService e = Executors.newFixedThreadPool(100); - final ProtoHandler[] cache = {null}; - for (int i = 0; i < 1000; i++) { - e.submit(() -> { - Descriptors.FieldDescriptor primitiveFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(primitiveFieldDescriptor); - assertEquals(PrimitiveProtoHandler.class, protoHandler.getClass()); - synchronized (cache) { - ProtoHandler oldHandler = cache[0]; - if (oldHandler != null) { - assertEquals(protoHandler, cache[0]); - } else { - // Only one thread will set this - cache[0] = protoHandler; - } - } - }); - } - e.shutdown(); - e.awaitTermination(10000, TimeUnit.MILLISECONDS); - } - - @Test - public void shouldReturnTheSameObjectWhenFactoryMethodIsCalledMultipleTimes() { - Descriptors.FieldDescriptor primitiveFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(primitiveFieldDescriptor); - assertEquals(PrimitiveProtoHandler.class, protoHandler.getClass()); - ProtoHandler newProtoHandler = ProtoHandlerFactory.getProtoHandler(primitiveFieldDescriptor); - assertEquals(PrimitiveProtoHandler.class, newProtoHandler.getClass()); - assertEquals(protoHandler, newProtoHandler); - } -} diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/PrimitiveProtoHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/PrimitiveTypeHandlerTest.java similarity index 67% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/PrimitiveProtoHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/PrimitiveTypeHandlerTest.java index 017c119f5..d055e4f2e 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/PrimitiveProtoHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/PrimitiveTypeHandlerTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler; import com.google.protobuf.ByteString; import io.odpf.dagger.consumer.TestMessageEnvelope; @@ -17,33 +17,33 @@ import static org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName.BINARY; import static org.junit.Assert.*; -public class PrimitiveProtoHandlerTest { +public class PrimitiveTypeHandlerTest { @Test public void shouldReturnTrueForAnyDataType() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - PrimitiveProtoHandler primitiveProtoHandler = new PrimitiveProtoHandler(fieldDescriptor); + PrimitiveTypeHandler primitiveTypeHandler = new PrimitiveTypeHandler(fieldDescriptor); - assertTrue(primitiveProtoHandler.canHandle()); + assertTrue(primitiveTypeHandler.canHandle()); } @Test public void shouldReturnSameBuilderWithoutSettingFieldIfNullFieldIsPassed() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - PrimitiveProtoHandler primitiveProtoHandler = new PrimitiveProtoHandler(fieldDescriptor); + PrimitiveTypeHandler primitiveTypeHandler = new PrimitiveTypeHandler(fieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(fieldDescriptor.getContainingType()); - DynamicMessage.Builder returnedBuilder = primitiveProtoHandler.transformToProtoBuilder(builder, null); + DynamicMessage.Builder returnedBuilder = primitiveTypeHandler.transformToProtoBuilder(builder, null); assertEquals("", returnedBuilder.getField(fieldDescriptor)); } @Test public void shouldSetFieldPassedInTheBuilder() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - PrimitiveProtoHandler primitiveProtoHandler = new PrimitiveProtoHandler(fieldDescriptor); + PrimitiveTypeHandler primitiveTypeHandler = new PrimitiveTypeHandler(fieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(fieldDescriptor.getContainingType()); - DynamicMessage.Builder returnedBuilder = primitiveProtoHandler.transformToProtoBuilder(builder, "123"); + DynamicMessage.Builder returnedBuilder = primitiveTypeHandler.transformToProtoBuilder(builder, "123"); assertEquals("123", returnedBuilder.getField(fieldDescriptor)); } @@ -51,45 +51,45 @@ public void shouldSetFieldPassedInTheBuilder() { public void shouldReturnIntegerValueForIntegerTypeFieldDescriptorIfIntegerIsPassedForPostProcessorTransform() { Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("cancel_reason_id"); - PrimitiveProtoHandler primitiveProtoHandler = new PrimitiveProtoHandler(fieldDescriptor); + PrimitiveTypeHandler primitiveTypeHandler = new PrimitiveTypeHandler(fieldDescriptor); - assertEquals(1, primitiveProtoHandler.transformFromPostProcessor(1)); + assertEquals(1, primitiveTypeHandler.transformFromPostProcessor(1)); } @Test public void shouldReturnIntegerValueForIntegerTypeFieldDescriptorIfIntegerIsPassedAsStringForPostProcessorTransform() { Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("cancel_reason_id"); - PrimitiveProtoHandler primitiveProtoHandler = new PrimitiveProtoHandler(fieldDescriptor); + PrimitiveTypeHandler primitiveTypeHandler = new PrimitiveTypeHandler(fieldDescriptor); - assertEquals(1, primitiveProtoHandler.transformFromPostProcessor("1")); + assertEquals(1, primitiveTypeHandler.transformFromPostProcessor("1")); } @Test public void shouldReturnStringValueForStringTypeFieldDescriptorIfStringIsPassedForPostProcessorTransform() { Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor stringFieldDescriptor = descriptor.findFieldByName("order_number"); - PrimitiveProtoHandler primitiveProtoHandler = new PrimitiveProtoHandler(stringFieldDescriptor); + PrimitiveTypeHandler primitiveTypeHandler = new PrimitiveTypeHandler(stringFieldDescriptor); - assertEquals("123", primitiveProtoHandler.transformFromPostProcessor("123")); + assertEquals("123", primitiveTypeHandler.transformFromPostProcessor("123")); } @Test public void shouldReturnStringValueForStringTypeFieldDescriptorIfStringIsNotPassedForPostProcessorTransform() { Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor stringFieldDescriptor = descriptor.findFieldByName("order_number"); - PrimitiveProtoHandler primitiveProtoHandler = new PrimitiveProtoHandler(stringFieldDescriptor); + PrimitiveTypeHandler primitiveTypeHandler = new PrimitiveTypeHandler(stringFieldDescriptor); - assertEquals("123", primitiveProtoHandler.transformFromPostProcessor(123)); + assertEquals("123", primitiveTypeHandler.transformFromPostProcessor(123)); } @Test public void shouldThrowInvalidDataTypeExceptionInCaseOfTypeMismatchForPostProcessorTransform() { Descriptors.FieldDescriptor floatFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("total_customer_discount"); - PrimitiveProtoHandler primitiveProtoHandler = new PrimitiveProtoHandler(floatFieldDescriptor); + PrimitiveTypeHandler primitiveTypeHandler = new PrimitiveTypeHandler(floatFieldDescriptor); InvalidDataTypeException exception = Assert.assertThrows(InvalidDataTypeException.class, - () -> primitiveProtoHandler.transformFromPostProcessor("stringValue")); + () -> primitiveTypeHandler.transformFromPostProcessor("stringValue")); assertEquals("type mismatch of field: total_customer_discount, expecting FLOAT type, actual type class java.lang.String", exception.getMessage()); } @@ -97,24 +97,24 @@ public void shouldThrowInvalidDataTypeExceptionInCaseOfTypeMismatchForPostProces public void shouldReturnSameValueForTransformFromKafka() { Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor stringFieldDescriptor = descriptor.findFieldByName("order_number"); - PrimitiveProtoHandler primitiveProtoHandler = new PrimitiveProtoHandler(stringFieldDescriptor); + PrimitiveTypeHandler primitiveTypeHandler = new PrimitiveTypeHandler(stringFieldDescriptor); - assertEquals(123, primitiveProtoHandler.transformFromProto(123)); - assertEquals("123", primitiveProtoHandler.transformFromProto("123")); + assertEquals(123, primitiveTypeHandler.transformFromProto(123)); + assertEquals("123", primitiveTypeHandler.transformFromProto("123")); } @Test public void shouldReturnTypeInformation() { Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor stringFieldDescriptor = descriptor.findFieldByName("order_number"); - PrimitiveProtoHandler primitiveProtoHandler = new PrimitiveProtoHandler(stringFieldDescriptor); - assertEquals(Types.STRING, primitiveProtoHandler.getTypeInformation()); + PrimitiveTypeHandler primitiveTypeHandler = new PrimitiveTypeHandler(stringFieldDescriptor); + assertEquals(Types.STRING, primitiveTypeHandler.getTypeInformation()); } @Test public void shouldConvertPrimitiveStringToJsonString() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - Object value = new PrimitiveProtoHandler(fieldDescriptor).transformToJson("123"); + Object value = new PrimitiveTypeHandler(fieldDescriptor).transformToJson("123"); assertEquals("123", value); } @@ -129,9 +129,9 @@ public void shouldReturnParsedValueForTransformFromParquet() { .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); simpleGroup.add("log_key", Binary.fromConstantByteArray(expectedByteString.toByteArray())); - PrimitiveProtoHandler primitiveProtoHandler = new PrimitiveProtoHandler(fieldDescriptor); + PrimitiveTypeHandler primitiveTypeHandler = new PrimitiveTypeHandler(fieldDescriptor); - ByteString actualByteString = (ByteString) primitiveProtoHandler.transformFromParquet(simpleGroup); + ByteString actualByteString = (ByteString) primitiveTypeHandler.transformFromParquet(simpleGroup); assertEquals(expectedByteString, actualByteString); } diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RowFactoryTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/RowFactoryTest.java similarity index 97% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RowFactoryTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/RowFactoryTest.java index 1a15d11bb..4976d11ae 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RowFactoryTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/RowFactoryTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler; import io.odpf.dagger.consumer.TestPrimitiveMessage; import io.odpf.dagger.consumer.TestReason; @@ -113,7 +113,7 @@ public void shouldBeAbleToCreateAValidCopyOfTheRowCreated() throws InvalidProtoc ArrayList> typeInformations = new ArrayList<>(); ExecutionConfig config = new ExecutionConfig(); TestBookingLogMessage.getDescriptor().getFields().forEach(fieldDescriptor -> { - typeInformations.add(ProtoHandlerFactory.getProtoHandler(fieldDescriptor).getTypeInformation()); + typeInformations.add(TypeHandlerFactory.getTypeHandler(fieldDescriptor).getTypeInformation()); }); ArrayList> typeSerializers = new ArrayList<>(); typeInformations.forEach(rowTypeInformation -> { @@ -202,7 +202,7 @@ public void shouldBeAbleToCreateAValidCopyOfTheRowCreatedFromSimpleGroup() { ArrayList> typeInformations = new ArrayList<>(); ExecutionConfig config = new ExecutionConfig(); TestReason.getDescriptor().getFields().forEach(fieldDescriptor -> { - typeInformations.add(ProtoHandlerFactory.getProtoHandler(fieldDescriptor).getTypeInformation()); + typeInformations.add(TypeHandlerFactory.getTypeHandler(fieldDescriptor).getTypeInformation()); }); ArrayList> typeSerializers = new ArrayList<>(); typeInformations.forEach(rowTypeInformation -> { diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/TypeHandlerFactoryTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/TypeHandlerFactoryTest.java new file mode 100644 index 000000000..0cd7a5e1e --- /dev/null +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/TypeHandlerFactoryTest.java @@ -0,0 +1,135 @@ +package io.odpf.dagger.common.serde.typehandler; + +import com.google.protobuf.Descriptors; +import io.odpf.dagger.common.serde.typehandler.complex.EnumHandler; +import io.odpf.dagger.common.serde.typehandler.complex.MapHandler; +import io.odpf.dagger.common.serde.typehandler.complex.MessageHandler; +import io.odpf.dagger.common.serde.typehandler.complex.StructMessageHandler; +import io.odpf.dagger.common.serde.typehandler.complex.TimestampHandler; +import io.odpf.dagger.common.serde.typehandler.repeated.RepeatedEnumHandler; +import io.odpf.dagger.common.serde.typehandler.repeated.RepeatedMessageHandler; +import io.odpf.dagger.common.serde.typehandler.repeated.RepeatedPrimitiveHandler; +import io.odpf.dagger.common.serde.typehandler.repeated.RepeatedStructMessageHandler; +import io.odpf.dagger.consumer.TestBookingLogMessage; +import io.odpf.dagger.consumer.TestFeedbackLogMessage; +import io.odpf.dagger.consumer.TestNestedRepeatedMessage; +import io.odpf.dagger.consumer.TestRepeatedEnumMessage; +import org.junit.Before; +import org.junit.Test; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +import static org.junit.Assert.assertEquals; + +public class TypeHandlerFactoryTest { + @Before + public void setup() { + TypeHandlerFactory.clearTypeHandlerMap(); + } + + @Test + public void shouldReturnMapHandlerIfMapFieldDescriptorPassed() { + Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(mapFieldDescriptor); + assertEquals(MapHandler.class, typeHandler.getClass()); + } + + @Test + public void shouldReturnTimestampHandlerIfTimestampFieldDescriptorPassed() { + Descriptors.FieldDescriptor timestampFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("event_timestamp"); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(timestampFieldDescriptor); + assertEquals(TimestampHandler.class, typeHandler.getClass()); + } + + @Test + public void shouldReturnEnumHandlerIfEnumFieldDescriptorPassed() { + Descriptors.FieldDescriptor enumFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("service_type"); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(enumFieldDescriptor); + assertEquals(EnumHandler.class, typeHandler.getClass()); + } + + @Test + public void shouldReturnRepeatedHandlerIfRepeatedFieldDescriptorPassed() { + Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("meta_array"); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(repeatedFieldDescriptor); + assertEquals(RepeatedPrimitiveHandler.class, typeHandler.getClass()); + } + + @Test + public void shouldReturnRepeatedMessageHandlerIfRepeatedMessageFieldDescriptorPassed() { + Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestFeedbackLogMessage.getDescriptor().findFieldByName("reason"); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(repeatedMessageFieldDescriptor); + assertEquals(RepeatedMessageHandler.class, typeHandler.getClass()); + } + + @Test + public void shouldReturnRepeatedEnumHandlerIfRepeatedEnumFieldDescriptorPassed() { + Descriptors.FieldDescriptor repeatedEnumFieldDescriptor = TestRepeatedEnumMessage.getDescriptor().findFieldByName("test_enums"); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(repeatedEnumFieldDescriptor); + assertEquals(RepeatedEnumHandler.class, typeHandler.getClass()); + } + + @Test + public void shouldReturnRepeatedStructHandlerIfRepeatedStructFieldDescriptorPassed() { + Descriptors.FieldDescriptor repeatedStructFieldDescriptor = TestNestedRepeatedMessage.getDescriptor().findFieldByName("metadata"); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(repeatedStructFieldDescriptor); + assertEquals(RepeatedStructMessageHandler.class, typeHandler.getClass()); + } + + @Test + public void shouldReturnStructHandlerIfStructFieldDescriptorPassed() { + Descriptors.FieldDescriptor structFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("profile_data"); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(structFieldDescriptor); + assertEquals(StructMessageHandler.class, typeHandler.getClass()); + } + + @Test + public void shouldReturnMessageHandlerIfMessageFieldDescriptorPassed() { + Descriptors.FieldDescriptor messageFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("payment_option_metadata"); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(messageFieldDescriptor); + assertEquals(MessageHandler.class, typeHandler.getClass()); + } + + @Test + public void shouldReturnDefaultHandlerIfPrimitiveFieldDescriptorPassed() { + Descriptors.FieldDescriptor primitiveFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(primitiveFieldDescriptor); + assertEquals(PrimitiveTypeHandler.class, typeHandler.getClass()); + } + + @Test + public void shouldReturnTheSameObjectWithMultipleThreads() throws InterruptedException { + ExecutorService e = Executors.newFixedThreadPool(100); + final TypeHandler[] cache = {null}; + for (int i = 0; i < 1000; i++) { + e.submit(() -> { + Descriptors.FieldDescriptor primitiveFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(primitiveFieldDescriptor); + assertEquals(PrimitiveTypeHandler.class, typeHandler.getClass()); + synchronized (cache) { + TypeHandler oldHandler = cache[0]; + if (oldHandler != null) { + assertEquals(typeHandler, cache[0]); + } else { + // Only one thread will set this + cache[0] = typeHandler; + } + } + }); + } + e.shutdown(); + e.awaitTermination(10000, TimeUnit.MILLISECONDS); + } + + @Test + public void shouldReturnTheSameObjectWhenFactoryMethodIsCalledMultipleTimes() { + Descriptors.FieldDescriptor primitiveFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(primitiveFieldDescriptor); + assertEquals(PrimitiveTypeHandler.class, typeHandler.getClass()); + TypeHandler newTypeHandler = TypeHandlerFactory.getTypeHandler(primitiveFieldDescriptor); + assertEquals(PrimitiveTypeHandler.class, newTypeHandler.getClass()); + assertEquals(typeHandler, newTypeHandler); + } +} diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/TypeInformationFactoryTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/TypeInformationFactoryTest.java similarity index 96% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/TypeInformationFactoryTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/TypeInformationFactoryTest.java index 8dea75b4e..02f734a33 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/TypeInformationFactoryTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/TypeInformationFactoryTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.types.Row; diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/EnumProtoHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/EnumHandlerTest.java similarity index 71% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/EnumProtoHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/EnumHandlerTest.java index 957033270..502622321 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/EnumProtoHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/EnumHandlerTest.java @@ -1,7 +1,8 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.complex; import com.google.protobuf.Descriptors; import com.google.protobuf.DynamicMessage; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; import io.odpf.dagger.consumer.*; import io.odpf.dagger.common.exceptions.serde.EnumFieldNotFoundException; import org.apache.flink.api.common.typeinfo.Types; @@ -14,67 +15,67 @@ import static org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName.BINARY; import static org.junit.Assert.*; -public class EnumProtoHandlerTest { +public class EnumHandlerTest { @Test public void shouldReturnTrueIfEnumFieldDescriptorIsPassed() { Descriptors.FieldDescriptor enumFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("service_type"); - EnumProtoHandler enumProtoHandler = new EnumProtoHandler(enumFieldDescriptor); + EnumHandler enumHandler = new EnumHandler(enumFieldDescriptor); - assertTrue(enumProtoHandler.canHandle()); + assertTrue(enumHandler.canHandle()); } @Test public void shouldReturnFalseIfRepeatedEnumFieldDescriptorIsPassed() { Descriptors.FieldDescriptor repeatedEnumFieldDescriptor = TestRepeatedEnumMessage.getDescriptor().findFieldByName("test_enums"); - EnumProtoHandler enumProtoHandler = new EnumProtoHandler(repeatedEnumFieldDescriptor); + EnumHandler enumHandler = new EnumHandler(repeatedEnumFieldDescriptor); - assertFalse(enumProtoHandler.canHandle()); + assertFalse(enumHandler.canHandle()); } @Test public void shouldReturnFalseIfFieldDescriptorOtherThanEnumTypeIsPassed() { Descriptors.FieldDescriptor otherFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - EnumProtoHandler enumProtoHandler = new EnumProtoHandler(otherFieldDescriptor); + EnumHandler enumHandler = new EnumHandler(otherFieldDescriptor); - assertFalse(enumProtoHandler.canHandle()); + assertFalse(enumHandler.canHandle()); } @Test public void shouldReturnTheSameBuilderWithoutSettingIfCanNotHandle() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - EnumProtoHandler enumProtoHandler = new EnumProtoHandler(fieldDescriptor); + EnumHandler enumHandler = new EnumHandler(fieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(fieldDescriptor.getContainingType()); - assertEquals("", enumProtoHandler.transformToProtoBuilder(builder, 123).getField(fieldDescriptor)); + assertEquals("", enumHandler.transformToProtoBuilder(builder, 123).getField(fieldDescriptor)); } @Test public void shouldReturnTheSameBuilderWithoutSettingIfNullPassed() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - EnumProtoHandler enumProtoHandler = new EnumProtoHandler(fieldDescriptor); + EnumHandler enumHandler = new EnumHandler(fieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(fieldDescriptor.getContainingType()); - assertEquals("", enumProtoHandler.transformToProtoBuilder(builder, null).getField(fieldDescriptor)); + assertEquals("", enumHandler.transformToProtoBuilder(builder, null).getField(fieldDescriptor)); } @Test public void shouldSetTheFieldPassedInTheBuilderForEnumFieldTypeDescriptor() { Descriptors.FieldDescriptor enumFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("service_type"); - EnumProtoHandler enumProtoHandler = new EnumProtoHandler(enumFieldDescriptor); + EnumHandler enumHandler = new EnumHandler(enumFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(enumFieldDescriptor.getContainingType()); - DynamicMessage.Builder returnedBuilder = enumProtoHandler.transformToProtoBuilder(builder, "GO_RIDE"); + DynamicMessage.Builder returnedBuilder = enumHandler.transformToProtoBuilder(builder, "GO_RIDE"); assertEquals(TestServiceType.Enum.GO_RIDE.getValueDescriptor(), returnedBuilder.getField(enumFieldDescriptor)); } @Test public void shouldThrowExceptionIfFieldNotFoundInGivenEnumFieldTypeDescriptor() { Descriptors.FieldDescriptor enumFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("service_type"); - EnumProtoHandler enumProtoHandler = new EnumProtoHandler(enumFieldDescriptor); + EnumHandler enumHandler = new EnumHandler(enumFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(enumFieldDescriptor.getContainingType()); - EnumFieldNotFoundException exception = Assert.assertThrows(EnumFieldNotFoundException.class, () -> enumProtoHandler.transformToProtoBuilder(builder, "test")); + EnumFieldNotFoundException exception = Assert.assertThrows(EnumFieldNotFoundException.class, () -> enumHandler.transformToProtoBuilder(builder, "test")); assertEquals("field: test not found in io.odpf.dagger.consumer.TestBookingLogMessage.service_type", exception.getMessage()); } @@ -85,7 +86,7 @@ public void shouldReturnEnumStringGivenEnumStringForFieldDescriptorOfTypeEnum() Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("status"); - Object value = ProtoHandlerFactory.getProtoHandler(fieldDescriptor).transformFromPostProcessor(inputField); + Object value = TypeHandlerFactory.getTypeHandler(fieldDescriptor).transformFromPostProcessor(inputField); assertEquals("DRIVER_FOUND", value); } @@ -95,7 +96,7 @@ public void shouldReturnDefaultEnumStringIfNotFoundForFieldDescriptorOfTypeEnum( Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("status"); - Object value = ProtoHandlerFactory.getProtoHandler(fieldDescriptor).transformFromPostProcessor(null); + Object value = TypeHandlerFactory.getTypeHandler(fieldDescriptor).transformFromPostProcessor(null); assertEquals("UNKNOWN", value); } @@ -105,7 +106,7 @@ public void shouldReturnDefaultEnumStringIfInputIsAEnumPositionAndNotInTheProtoD Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("status"); - Object value = ProtoHandlerFactory.getProtoHandler(fieldDescriptor).transformFromPostProcessor(-1); + Object value = TypeHandlerFactory.getTypeHandler(fieldDescriptor).transformFromPostProcessor(-1); assertEquals("UNKNOWN", value); } @@ -115,7 +116,7 @@ public void shouldReturnDefaultEnumStringIfInputIsAStringAndNotInTheProtoDefinit Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("status"); - Object value = ProtoHandlerFactory.getProtoHandler(fieldDescriptor).transformFromPostProcessor("dummy"); + Object value = TypeHandlerFactory.getTypeHandler(fieldDescriptor).transformFromPostProcessor("dummy"); assertEquals("UNKNOWN", value); } @@ -125,7 +126,7 @@ public void shouldReturnDefaultEnumStringIfInputIsNullForFieldDescriptorOfTypeEn Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("status"); - Object value = ProtoHandlerFactory.getProtoHandler(fieldDescriptor).transformFromPostProcessor(null); + Object value = TypeHandlerFactory.getTypeHandler(fieldDescriptor).transformFromPostProcessor(null); assertEquals("UNKNOWN", value); } @@ -135,7 +136,7 @@ public void shouldReturnEnumStringGivenEnumPositionForFieldDescriptorOfTypeEnum( Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("status"); - Object value = ProtoHandlerFactory.getProtoHandler(fieldDescriptor).transformFromPostProcessor(2); + Object value = TypeHandlerFactory.getTypeHandler(fieldDescriptor).transformFromPostProcessor(2); assertEquals("DRIVER_FOUND", value); } @@ -144,22 +145,22 @@ public void shouldReturnEnumStringGivenEnumPositionForFieldDescriptorOfTypeEnum( public void shouldReturnTypeInformation() { Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("status"); - EnumProtoHandler enumProtoHandler = new EnumProtoHandler(fieldDescriptor); - assertEquals(Types.STRING, enumProtoHandler.getTypeInformation()); + EnumHandler enumHandler = new EnumHandler(fieldDescriptor); + assertEquals(Types.STRING, enumHandler.getTypeInformation()); } @Test public void shouldTransformValueForKafka() { Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("status"); - EnumProtoHandler enumProtoHandler = new EnumProtoHandler(fieldDescriptor); - assertEquals("DRIVER_FOUND", enumProtoHandler.transformFromProto("DRIVER_FOUND")); + EnumHandler enumHandler = new EnumHandler(fieldDescriptor); + assertEquals("DRIVER_FOUND", enumHandler.transformFromProto("DRIVER_FOUND")); } @Test public void shouldConvertEnumToJsonString() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("status"); - Object value = new EnumProtoHandler(fieldDescriptor).transformToJson("DRIVER_FOUND"); + Object value = new EnumHandler(fieldDescriptor).transformToJson("DRIVER_FOUND"); assertEquals("DRIVER_FOUND", value); } @@ -173,9 +174,9 @@ public void shouldReturnStringEnumValueWhenSimpleGroupIsPassed() { .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); simpleGroup.add("status", expectedEnum); - EnumProtoHandler enumProtoHandler = new EnumProtoHandler(fieldDescriptor); + EnumHandler enumHandler = new EnumHandler(fieldDescriptor); - Object actualEnum = enumProtoHandler.transformFromParquet(simpleGroup); + Object actualEnum = enumHandler.transformFromParquet(simpleGroup); assertEquals(expectedEnum, actualEnum); } @@ -183,9 +184,9 @@ public void shouldReturnStringEnumValueWhenSimpleGroupIsPassed() { @Test public void shouldReturnDefaultEnumStringWhenNullIsPassedToTransformFromParquet() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("status"); - EnumProtoHandler enumProtoHandler = new EnumProtoHandler(fieldDescriptor); + EnumHandler enumHandler = new EnumHandler(fieldDescriptor); - Object actualEnumValue = enumProtoHandler.transformFromParquet(null); + Object actualEnumValue = enumHandler.transformFromParquet(null); assertEquals("UNKNOWN", actualEnumValue); } @@ -198,9 +199,9 @@ public void shouldReturnDefaultEnumStringWhenEnumValueInsideSimpleGroupIsNotPres .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); simpleGroup.add("status", "NON_EXISTENT_ENUM"); - EnumProtoHandler enumProtoHandler = new EnumProtoHandler(fieldDescriptor); + EnumHandler enumHandler = new EnumHandler(fieldDescriptor); - Object actualEnum = enumProtoHandler.transformFromParquet(simpleGroup); + Object actualEnum = enumHandler.transformFromParquet(simpleGroup); assertEquals("UNKNOWN", actualEnum); } diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/MapProtoHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/MapHandlerTest.java similarity index 83% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/MapProtoHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/MapHandlerTest.java index 8769a1daa..41ded48e4 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/MapProtoHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/MapHandlerTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.complex; import org.apache.flink.api.common.typeinfo.Types; import org.apache.flink.types.Row; @@ -24,41 +24,41 @@ import static org.junit.Assert.*; -public class MapProtoHandlerTest { +public class MapHandlerTest { @Test public void shouldReturnTrueIfMapFieldDescriptorIsPassed() { Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); - assertTrue(mapProtoHandler.canHandle()); + assertTrue(mapHandler.canHandle()); } @Test public void shouldReturnFalseIfFieldDescriptorOtherThanMapTypeIsPassed() { Descriptors.FieldDescriptor otherFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(otherFieldDescriptor); + MapHandler mapHandler = new MapHandler(otherFieldDescriptor); - assertFalse(mapProtoHandler.canHandle()); + assertFalse(mapHandler.canHandle()); } @Test public void shouldReturnSameBuilderWithoutSettingFieldIfCannotHandle() { Descriptors.FieldDescriptor otherFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(otherFieldDescriptor); + MapHandler mapHandler = new MapHandler(otherFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(otherFieldDescriptor.getContainingType()); - DynamicMessage.Builder returnedBuilder = mapProtoHandler.transformToProtoBuilder(builder, "123"); + DynamicMessage.Builder returnedBuilder = mapHandler.transformToProtoBuilder(builder, "123"); assertEquals("", returnedBuilder.getField(otherFieldDescriptor)); } @Test public void shouldReturnSameBuilderWithoutSettingFieldIfNullPassed() { Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(mapFieldDescriptor.getContainingType()); - DynamicMessage.Builder returnedBuilder = mapProtoHandler.transformToProtoBuilder(builder, null); + DynamicMessage.Builder returnedBuilder = mapHandler.transformToProtoBuilder(builder, null); List entries = (List) returnedBuilder.getField(mapFieldDescriptor); assertEquals(0, entries.size()); } @@ -66,14 +66,14 @@ public void shouldReturnSameBuilderWithoutSettingFieldIfNullPassed() { @Test public void shouldSetMapFieldIfStringMapPassed() { Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(mapFieldDescriptor.getContainingType()); HashMap inputMap = new HashMap<>(); inputMap.put("a", "123"); inputMap.put("b", "456"); - DynamicMessage.Builder returnedBuilder = mapProtoHandler.transformToProtoBuilder(builder, inputMap); + DynamicMessage.Builder returnedBuilder = mapHandler.transformToProtoBuilder(builder, inputMap); List entries = (List) returnedBuilder.getField(mapFieldDescriptor); assertEquals(2, entries.size()); @@ -86,7 +86,7 @@ public void shouldSetMapFieldIfStringMapPassed() { @Test public void shouldSetMapFieldIfArrayofObjectsHavingRowsWithStringFieldsPassed() { Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(mapFieldDescriptor.getContainingType()); ArrayList inputRows = new ArrayList<>(); @@ -103,7 +103,7 @@ public void shouldSetMapFieldIfArrayofObjectsHavingRowsWithStringFieldsPassed() inputRows.add(inputRow1); inputRows.add(inputRow2); - DynamicMessage.Builder returnedBuilder = mapProtoHandler.transformToProtoBuilder(builder, inputRows.toArray()); + DynamicMessage.Builder returnedBuilder = mapHandler.transformToProtoBuilder(builder, inputRows.toArray()); List entries = (List) returnedBuilder.getField(mapFieldDescriptor); assertEquals(2, entries.size()); @@ -116,7 +116,7 @@ public void shouldSetMapFieldIfArrayofObjectsHavingRowsWithStringFieldsPassed() @Test public void shouldThrowExceptionIfRowsPassedAreNotOfArityTwo() { Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(mapFieldDescriptor.getContainingType()); ArrayList inputRows = new ArrayList<>(); @@ -124,19 +124,19 @@ public void shouldThrowExceptionIfRowsPassedAreNotOfArityTwo() { Row inputRow = new Row(3); inputRows.add(inputRow); IllegalArgumentException exception = Assert.assertThrows(IllegalArgumentException.class, - () -> mapProtoHandler.transformToProtoBuilder(builder, inputRows.toArray())); + () -> mapHandler.transformToProtoBuilder(builder, inputRows.toArray())); assertEquals("Row: +I[null, null, null] of size: 3 cannot be converted to map", exception.getMessage()); } @Test public void shouldReturnArrayOfRowHavingSameSizeAsInputMapForTransformForPostProcessor() { Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); HashMap inputMap = new HashMap<>(); inputMap.put("a", "123"); inputMap.put("b", "456"); - List outputValues = Arrays.asList((Object[]) mapProtoHandler.transformFromPostProcessor(inputMap)); + List outputValues = Arrays.asList((Object[]) mapHandler.transformFromPostProcessor(inputMap)); assertEquals(2, outputValues.size()); } @@ -144,12 +144,12 @@ public void shouldReturnArrayOfRowHavingSameSizeAsInputMapForTransformForPostPro @Test public void shouldReturnArrayOfRowHavingFieldsSetAsInputMapAndOfSizeTwoForTransformForPostProcessor() { Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); HashMap inputMap = new HashMap<>(); inputMap.put("a", "123"); inputMap.put("b", "456"); - List outputValues = Arrays.asList((Object[]) mapProtoHandler.transformFromPostProcessor(inputMap)); + List outputValues = Arrays.asList((Object[]) mapHandler.transformFromPostProcessor(inputMap)); assertEquals("a", ((Row) outputValues.get(0)).getField(0)); assertEquals("123", ((Row) outputValues.get(0)).getField(1)); @@ -162,8 +162,8 @@ public void shouldReturnArrayOfRowHavingFieldsSetAsInputMapAndOfSizeTwoForTransf @Test public void shouldReturnEmptyArrayOfRowIfNullPassedForTransformForPostProcessor() { Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); - List outputValues = Arrays.asList((Object[]) mapProtoHandler.transformFromPostProcessor(null)); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); + List outputValues = Arrays.asList((Object[]) mapHandler.transformFromPostProcessor(null)); assertEquals(0, outputValues.size()); } @@ -171,7 +171,7 @@ public void shouldReturnEmptyArrayOfRowIfNullPassedForTransformForPostProcessor( @Test public void shouldReturnArrayOfRowHavingSameSizeAsInputMapForTransformForKafka() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); MapEntry mapEntry = MapEntry .newDefaultInstance(mapFieldDescriptor.getMessageType(), WireFormat.FieldType.STRING, "", WireFormat.FieldType.STRING, ""); TestBookingLogMessage driverProfileFlattenLogMessage = TestBookingLogMessage @@ -182,7 +182,7 @@ public void shouldReturnArrayOfRowHavingSameSizeAsInputMapForTransformForKafka() DynamicMessage dynamicMessage = DynamicMessage.parseFrom(TestBookingLogMessage.getDescriptor(), driverProfileFlattenLogMessage.toByteArray()); - List outputValues = Arrays.asList((Object[]) mapProtoHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); + List outputValues = Arrays.asList((Object[]) mapHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); assertEquals(2, outputValues.size()); } @@ -190,7 +190,7 @@ public void shouldReturnArrayOfRowHavingSameSizeAsInputMapForTransformForKafka() @Test public void shouldReturnArrayOfRowHavingFieldsSetAsInputMapAndOfSizeTwoForTransformForKafka() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); MapEntry mapEntry = MapEntry .newDefaultInstance(mapFieldDescriptor.getMessageType(), WireFormat.FieldType.STRING, "", WireFormat.FieldType.STRING, ""); TestBookingLogMessage driverProfileFlattenLogMessage = TestBookingLogMessage @@ -201,7 +201,7 @@ public void shouldReturnArrayOfRowHavingFieldsSetAsInputMapAndOfSizeTwoForTransf DynamicMessage dynamicMessage = DynamicMessage.parseFrom(TestBookingLogMessage.getDescriptor(), driverProfileFlattenLogMessage.toByteArray()); - List outputValues = Arrays.asList((Object[]) mapProtoHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); + List outputValues = Arrays.asList((Object[]) mapHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); assertEquals("a", ((Row) outputValues.get(0)).getField(0)); assertEquals("123", ((Row) outputValues.get(0)).getField(1)); @@ -214,7 +214,7 @@ public void shouldReturnArrayOfRowHavingFieldsSetAsInputMapAndOfSizeTwoForTransf @Test public void shouldReturnArrayOfRowHavingSameSizeAsInputMapHavingComplexDataFieldsForTransformForKafka() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor mapFieldDescriptor = TestComplexMap.getDescriptor().findFieldByName("complex_map"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); Map complexMap = new HashMap<>(); complexMap.put(1, TestMessage.newBuilder().setOrderNumber("123").setOrderDetails("abc").build()); complexMap.put(2, TestMessage.newBuilder().setOrderNumber("456").setOrderDetails("efg").build()); @@ -222,7 +222,7 @@ public void shouldReturnArrayOfRowHavingSameSizeAsInputMapHavingComplexDataField DynamicMessage dynamicMessage = DynamicMessage.parseFrom(TestComplexMap.getDescriptor(), testComplexMap.toByteArray()); - List outputValues = Arrays.asList((Object[]) mapProtoHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); + List outputValues = Arrays.asList((Object[]) mapHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); assertEquals(2, outputValues.size()); } @@ -230,7 +230,7 @@ public void shouldReturnArrayOfRowHavingSameSizeAsInputMapHavingComplexDataField @Test public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFieldsAndOfSizeTwoForTransformForKafka() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor mapFieldDescriptor = TestComplexMap.getDescriptor().findFieldByName("complex_map"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); Map complexMap = new HashMap<>(); complexMap.put(1, TestMessage.newBuilder().setOrderNumber("123").setOrderDetails("abc").build()); complexMap.put(2, TestMessage.newBuilder().setOrderNumber("456").setOrderDetails("efg").build()); @@ -238,7 +238,7 @@ public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFie DynamicMessage dynamicMessage = DynamicMessage.parseFrom(TestComplexMap.getDescriptor(), testComplexMap.toByteArray()); - List outputValues = Arrays.asList((Object[]) mapProtoHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); + List outputValues = Arrays.asList((Object[]) mapHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); assertEquals(1, ((Row) outputValues.get(0)).getField(0)); assertEquals("123", ((Row) ((Row) outputValues.get(0)).getField(1)).getField(0)); @@ -255,14 +255,14 @@ public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFie @Test public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFieldsIfKeyIsSetAsDefaultProtoValueForTransformForKafka() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor mapFieldDescriptor = TestComplexMap.getDescriptor().findFieldByName("complex_map"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); Map complexMap = new HashMap<>(); complexMap.put(0, TestMessage.newBuilder().setOrderNumber("123").setOrderDetails("abc").build()); TestComplexMap testComplexMap = TestComplexMap.newBuilder().putAllComplexMap(complexMap).build(); DynamicMessage dynamicMessage = DynamicMessage.parseFrom(TestComplexMap.getDescriptor(), testComplexMap.toByteArray()); - List outputValues = Arrays.asList((Object[]) mapProtoHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); + List outputValues = Arrays.asList((Object[]) mapHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); assertEquals(0, ((Row) outputValues.get(0)).getField(0)); assertEquals("123", ((Row) ((Row) outputValues.get(0)).getField(1)).getField(0)); @@ -274,14 +274,14 @@ public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFie @Test public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFieldsIfValueIsDefaultForTransformForKafka() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor mapFieldDescriptor = TestComplexMap.getDescriptor().findFieldByName("complex_map"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); Map complexMap = new HashMap<>(); complexMap.put(1, TestMessage.getDefaultInstance()); TestComplexMap testComplexMap = TestComplexMap.newBuilder().putAllComplexMap(complexMap).build(); DynamicMessage dynamicMessage = DynamicMessage.parseFrom(TestComplexMap.getDescriptor(), testComplexMap.toByteArray()); - List outputValues = Arrays.asList((Object[]) mapProtoHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); + List outputValues = Arrays.asList((Object[]) mapHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); assertEquals(1, ((Row) outputValues.get(0)).getField(0)); assertEquals("", ((Row) ((Row) outputValues.get(0)).getField(1)).getField(0)); @@ -293,14 +293,14 @@ public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFie @Test public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFieldsIfKeyAndValueAreDefaultForTransformForKafka() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor mapFieldDescriptor = TestComplexMap.getDescriptor().findFieldByName("complex_map"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); Map complexMap = new HashMap<>(); complexMap.put(0, TestMessage.getDefaultInstance()); TestComplexMap testComplexMap = TestComplexMap.newBuilder().putAllComplexMap(complexMap).build(); DynamicMessage dynamicMessage = DynamicMessage.parseFrom(TestComplexMap.getDescriptor(), testComplexMap.toByteArray()); - List outputValues = Arrays.asList((Object[]) mapProtoHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); + List outputValues = Arrays.asList((Object[]) mapHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); assertEquals(0, ((Row) outputValues.get(0)).getField(0)); assertEquals("", ((Row) ((Row) outputValues.get(0)).getField(1)).getField(0)); @@ -312,14 +312,14 @@ public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFie @Test public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFieldsForDefaultInstanceForTransformForKafka() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor mapFieldDescriptor = TestComplexMap.getDescriptor().findFieldByName("complex_map"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); Map complexMap = new HashMap<>(); complexMap.put(0, TestMessage.newBuilder().setOrderNumber("").setOrderDetails("").build()); TestComplexMap testComplexMap = TestComplexMap.newBuilder().putAllComplexMap(complexMap).build(); DynamicMessage dynamicMessage = DynamicMessage.parseFrom(TestComplexMap.getDescriptor(), testComplexMap.toByteArray()); - List outputValues = Arrays.asList((Object[]) mapProtoHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); + List outputValues = Arrays.asList((Object[]) mapHandler.transformFromProto(dynamicMessage.getField(mapFieldDescriptor))); assertEquals(0, ((Row) outputValues.get(0)).getField(0)); assertEquals("", ((Row) ((Row) outputValues.get(0)).getField(1)).getField(0)); @@ -331,8 +331,8 @@ public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFie @Test public void shouldReturnEmptyArrayOfRowIfNullPassedForTransformForKafka() { Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); - List outputValues = Arrays.asList((Object[]) mapProtoHandler.transformFromPostProcessor(null)); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); + List outputValues = Arrays.asList((Object[]) mapHandler.transformFromPostProcessor(null)); assertEquals(0, outputValues.size()); } @@ -340,14 +340,14 @@ public void shouldReturnEmptyArrayOfRowIfNullPassedForTransformForKafka() { @Test public void shouldReturnTypeInformation() { Descriptors.FieldDescriptor mapFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - MapProtoHandler mapProtoHandler = new MapProtoHandler(mapFieldDescriptor); - assertEquals(Types.OBJECT_ARRAY(Types.ROW_NAMED(new String[]{"key", "value"}, Types.STRING, Types.STRING)), mapProtoHandler.getTypeInformation()); + MapHandler mapHandler = new MapHandler(mapFieldDescriptor); + assertEquals(Types.OBJECT_ARRAY(Types.ROW_NAMED(new String[]{"key", "value"}, Types.STRING, Types.STRING)), mapHandler.getTypeInformation()); } @Test public void shouldReturnNullWhenTransformFromParquetIsCalledWithAnyArgument() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - MapProtoHandler protoHandler = new MapProtoHandler(fieldDescriptor); + MapHandler protoHandler = new MapHandler(fieldDescriptor); GroupType parquetSchema = org.apache.parquet.schema.Types.requiredGroup() .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/MessageProtoHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/MessageHandlerTest.java similarity index 82% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/MessageProtoHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/MessageHandlerTest.java index d6d2c6eeb..e66ac404b 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/MessageProtoHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/MessageHandlerTest.java @@ -1,5 +1,6 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.complex; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; import org.apache.flink.types.Row; @@ -17,12 +18,12 @@ import static org.junit.Assert.*; -public class MessageProtoHandlerTest { +public class MessageHandlerTest { @Test public void shouldReturnTrueIfMessageFieldDescriptorIsPassed() { Descriptors.FieldDescriptor messageFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("payment_option_metadata"); - MessageProtoHandler messsageProtoHandler = new MessageProtoHandler(messageFieldDescriptor); + MessageHandler messsageProtoHandler = new MessageHandler(messageFieldDescriptor); assertTrue(messsageProtoHandler.canHandle()); } @@ -30,7 +31,7 @@ public void shouldReturnTrueIfMessageFieldDescriptorIsPassed() { @Test public void shouldReturnFalseIfFieldDescriptorOtherThanMessageTypeIsPassed() { Descriptors.FieldDescriptor otherFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - MessageProtoHandler messsageProtoHandler = new MessageProtoHandler(otherFieldDescriptor); + MessageHandler messsageProtoHandler = new MessageHandler(otherFieldDescriptor); assertFalse(messsageProtoHandler.canHandle()); } @@ -38,7 +39,7 @@ public void shouldReturnFalseIfFieldDescriptorOtherThanMessageTypeIsPassed() { @Test public void shouldReturnTheSameBuilderWithoutSettingFieldIfCanNotHandle() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - MessageProtoHandler messsageProtoHandler = new MessageProtoHandler(fieldDescriptor); + MessageHandler messsageProtoHandler = new MessageHandler(fieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(fieldDescriptor.getContainingType()); assertEquals(builder, messsageProtoHandler.transformToProtoBuilder(builder, 123)); @@ -48,7 +49,7 @@ public void shouldReturnTheSameBuilderWithoutSettingFieldIfCanNotHandle() { @Test public void shouldReturnTheSameBuilderWithoutSettingFieldIfNullPassed() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - MessageProtoHandler messsageProtoHandler = new MessageProtoHandler(fieldDescriptor); + MessageHandler messsageProtoHandler = new MessageHandler(fieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(fieldDescriptor.getContainingType()); DynamicMessage.Builder outputBuilder = messsageProtoHandler.transformToProtoBuilder(builder, null); @@ -59,13 +60,13 @@ public void shouldReturnTheSameBuilderWithoutSettingFieldIfNullPassed() { @Test public void shouldSetTheFieldsPassedInTheBuilderForMessageFieldTypeDescriptorIfAllFieldsPassed() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor messageFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("payment_option_metadata"); - MessageProtoHandler messageProtoHandler = new MessageProtoHandler(messageFieldDescriptor); + MessageHandler messageHandler = new MessageHandler(messageFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(messageFieldDescriptor.getContainingType()); Row inputRow = new Row(2); inputRow.setField(0, "test1"); inputRow.setField(1, "test2"); - DynamicMessage.Builder returnedBuilder = messageProtoHandler.transformToProtoBuilder(builder, inputRow); + DynamicMessage.Builder returnedBuilder = messageHandler.transformToProtoBuilder(builder, inputRow); TestPaymentOptionMetadata returnedValue = TestPaymentOptionMetadata.parseFrom(((DynamicMessage) returnedBuilder.getField(messageFieldDescriptor)).toByteArray()); @@ -77,12 +78,12 @@ public void shouldSetTheFieldsPassedInTheBuilderForMessageFieldTypeDescriptorIfA @Test public void shouldSetTheFieldsPassedInTheBuilderForMessageFieldTypeDescriptorIfAllFieldsAreNotPassed() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor messageFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("payment_option_metadata"); - MessageProtoHandler messageProtoHandler = new MessageProtoHandler(messageFieldDescriptor); + MessageHandler messageHandler = new MessageHandler(messageFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(messageFieldDescriptor.getContainingType()); Row inputRow = new Row(1); inputRow.setField(0, "test1"); - DynamicMessage.Builder returnedBuilder = messageProtoHandler.transformToProtoBuilder(builder, inputRow); + DynamicMessage.Builder returnedBuilder = messageHandler.transformToProtoBuilder(builder, inputRow); TestPaymentOptionMetadata returnedValue = TestPaymentOptionMetadata.parseFrom(((DynamicMessage) returnedBuilder.getField(messageFieldDescriptor)).toByteArray()); @@ -100,7 +101,7 @@ public void shouldReturnRowGivenAMapForFieldDescriptorOfTypeMessageIfAllValueAre Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("payment_option_metadata"); - Row value = (Row) ProtoHandlerFactory.getProtoHandler(fieldDescriptor).transformFromPostProcessor(inputValues); + Row value = (Row) TypeHandlerFactory.getTypeHandler(fieldDescriptor).transformFromPostProcessor(inputValues); assertEquals("test1", value.getField(0)); assertEquals("test2", value.getField(1)); @@ -114,7 +115,7 @@ public void shouldReturnRowGivenAMapForFieldDescriptorOfTypeMessageIfAllValueAre Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("payment_option_metadata"); - Row value = (Row) ProtoHandlerFactory.getProtoHandler(fieldDescriptor).transformFromPostProcessor(inputValues); + Row value = (Row) TypeHandlerFactory.getTypeHandler(fieldDescriptor).transformFromPostProcessor(inputValues); assertEquals("test1", value.getField(0)); assertEquals(null, value.getField(1)); @@ -128,7 +129,7 @@ public void shouldReturnEmptyRowIfNullPassedForTransformForPostProcessor() { Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("payment_option_metadata"); - Row value = (Row) ProtoHandlerFactory.getProtoHandler(fieldDescriptor).transformFromPostProcessor(null); + Row value = (Row) TypeHandlerFactory.getTypeHandler(fieldDescriptor).transformFromPostProcessor(null); assertEquals(2, value.getArity()); assertEquals(null, value.getField(0)); @@ -147,7 +148,7 @@ public void shouldReturnRowGivenAMapForFieldDescriptorOfTypeMessageIfAllValueAre Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("payment_option_metadata"); - Row value = (Row) new MessageProtoHandler(fieldDescriptor).transformFromProto(dynamicMessage.getField(fieldDescriptor)); + Row value = (Row) new MessageHandler(fieldDescriptor).transformFromProto(dynamicMessage.getField(fieldDescriptor)); assertEquals("test1", value.getField(0)); assertEquals("test2", value.getField(1)); @@ -165,7 +166,7 @@ public void shouldReturnRowGivenAMapForFieldDescriptorOfTypeMessageIfAllValueAre Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("payment_option_metadata"); - Row value = (Row) new MessageProtoHandler(fieldDescriptor).transformFromProto(dynamicMessage.getField(fieldDescriptor)); + Row value = (Row) new MessageHandler(fieldDescriptor).transformFromProto(dynamicMessage.getField(fieldDescriptor)); assertEquals("test1", value.getField(0)); assertEquals("", value.getField(1)); @@ -175,7 +176,7 @@ public void shouldReturnRowGivenAMapForFieldDescriptorOfTypeMessageIfAllValueAre public void shouldReturnTypeInformation() { Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("payment_option_metadata"); - TypeInformation actualTypeInformation = new MessageProtoHandler(fieldDescriptor).getTypeInformation(); + TypeInformation actualTypeInformation = new MessageHandler(fieldDescriptor).getTypeInformation(); TypeInformation expectedTypeInformation = Types.ROW_NAMED(new String[]{"masked_card", "network"}, Types.STRING, Types.STRING); assertEquals(expectedTypeInformation, actualTypeInformation); } @@ -189,7 +190,7 @@ public void shouldConvertComplexRowDataToJsonString() { inputRow.setField(0, "test1"); inputRow.setField(1, "test2"); - Object value = new MessageProtoHandler(fieldDescriptor).transformToJson(inputRow); + Object value = new MessageHandler(fieldDescriptor).transformToJson(inputRow); assertEquals("{\"masked_card\":\"test1\",\"network\":\"test2\"}", String.valueOf(value)); } @@ -197,7 +198,7 @@ public void shouldConvertComplexRowDataToJsonString() { @Test public void shouldReturnNullWhenTransformFromParquetIsCalledWithAnyArgument() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("payment_option_metadata"); - MessageProtoHandler protoHandler = new MessageProtoHandler(fieldDescriptor); + MessageHandler protoHandler = new MessageHandler(fieldDescriptor); GroupType parquetSchema = org.apache.parquet.schema.Types.requiredGroup() .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/StructMessageProtoHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/StructMessageHandlerTest.java similarity index 65% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/StructMessageProtoHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/StructMessageHandlerTest.java index 267462cd0..b065a40e9 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/StructMessageProtoHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/StructMessageHandlerTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.complex; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; @@ -17,57 +17,57 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -public class StructMessageProtoHandlerTest { +public class StructMessageHandlerTest { @Test public void shouldReturnTrueForCanHandleForStructFieldDescriptor() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("profile_data"); - StructMessageProtoHandler structMessageProtoHandler = new StructMessageProtoHandler(fieldDescriptor); - assertTrue(structMessageProtoHandler.canHandle()); + StructMessageHandler structMessageHandler = new StructMessageHandler(fieldDescriptor); + assertTrue(structMessageHandler.canHandle()); } @Test public void shouldReturnFalseForCanHandleForRepeatedStructFieldDescriptor() { Descriptors.FieldDescriptor repeatedEnumFieldDescriptor = TestRepeatedEnumMessage.getDescriptor().findFieldByName("test_enums"); - StructMessageProtoHandler structMessageProtoHandler = new StructMessageProtoHandler(repeatedEnumFieldDescriptor); - assertFalse(structMessageProtoHandler.canHandle()); + StructMessageHandler structMessageHandler = new StructMessageHandler(repeatedEnumFieldDescriptor); + assertFalse(structMessageHandler.canHandle()); } @Test public void shouldReturnFalseForCanHandleForMessageFieldDescriptor() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("driver_pickup_location"); - StructMessageProtoHandler structMessageProtoHandler = new StructMessageProtoHandler(fieldDescriptor); - assertFalse(structMessageProtoHandler.canHandle()); + StructMessageHandler structMessageHandler = new StructMessageHandler(fieldDescriptor); + assertFalse(structMessageHandler.canHandle()); } @Test public void shouldReturnTheSameBuilderWithoutSettingAnyValue() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("profile_data"); - StructMessageProtoHandler structMessageProtoHandler = new StructMessageProtoHandler(fieldDescriptor); + StructMessageHandler structMessageHandler = new StructMessageHandler(fieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(fieldDescriptor.getContainingType()); assertEquals(DynamicMessage.getDefaultInstance(fieldDescriptor.getContainingType()).getAllFields().size(), - ((DynamicMessage) structMessageProtoHandler.transformToProtoBuilder(builder, 123).getField(fieldDescriptor)).getAllFields().size()); + ((DynamicMessage) structMessageHandler.transformToProtoBuilder(builder, 123).getField(fieldDescriptor)).getAllFields().size()); } @Test public void shouldReturnNullForTransformForPostProcessor() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("profile_data"); - StructMessageProtoHandler structMessageProtoHandler = new StructMessageProtoHandler(fieldDescriptor); - assertNull(structMessageProtoHandler.transformFromPostProcessor("test")); + StructMessageHandler structMessageHandler = new StructMessageHandler(fieldDescriptor); + assertNull(structMessageHandler.transformFromPostProcessor("test")); } @Test public void shouldReturnNullForTransformForKafka() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("profile_data"); - StructMessageProtoHandler structMessageProtoHandler = new StructMessageProtoHandler(fieldDescriptor); - assertNull(structMessageProtoHandler.transformFromProto("test")); + StructMessageHandler structMessageHandler = new StructMessageHandler(fieldDescriptor); + assertNull(structMessageHandler.transformFromProto("test")); } @Test public void shouldReturnTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("profile_data"); - StructMessageProtoHandler structMessageProtoHandler = new StructMessageProtoHandler(fieldDescriptor); - TypeInformation actualTypeInformation = structMessageProtoHandler.getTypeInformation(); + StructMessageHandler structMessageHandler = new StructMessageHandler(fieldDescriptor); + TypeInformation actualTypeInformation = structMessageHandler.getTypeInformation(); TypeInformation expectedTypeInformation = Types.ROW_NAMED(new String[]{}); assertEquals(expectedTypeInformation, actualTypeInformation); } @@ -75,7 +75,7 @@ public void shouldReturnTypeInformation() { @Test public void shouldReturnNullWhenTransformFromParquetIsCalledWithAnyArgument() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("profile_data"); - StructMessageProtoHandler protoHandler = new StructMessageProtoHandler(fieldDescriptor); + StructMessageHandler protoHandler = new StructMessageHandler(fieldDescriptor); GroupType parquetSchema = org.apache.parquet.schema.Types.requiredGroup() .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/TimestampProtoHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/TimestampHandlerTest.java similarity index 75% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/TimestampProtoHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/TimestampHandlerTest.java index 2dab74b0b..1566b97a1 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/TimestampProtoHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/complex/TimestampHandlerTest.java @@ -1,5 +1,7 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.complex; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; import org.apache.flink.types.Row; @@ -20,40 +22,40 @@ import static org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName.INT64; import static org.junit.Assert.*; -public class TimestampProtoHandlerTest { +public class TimestampHandlerTest { @Test public void shouldReturnTrueIfTimestampFieldDescriptorIsPassed() { Descriptors.FieldDescriptor timestampFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("event_timestamp"); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(timestampFieldDescriptor); + TimestampHandler timestampHandler = new TimestampHandler(timestampFieldDescriptor); - assertTrue(timestampProtoHandler.canHandle()); + assertTrue(timestampHandler.canHandle()); } @Test public void shouldReturnFalseIfFieldDescriptorOtherThanTimestampTypeIsPassed() { Descriptors.FieldDescriptor otherFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(otherFieldDescriptor); + TimestampHandler timestampHandler = new TimestampHandler(otherFieldDescriptor); - assertFalse(timestampProtoHandler.canHandle()); + assertFalse(timestampHandler.canHandle()); } @Test public void shouldReturnSameBuilderWithoutSettingFieldIfCannotHandle() { Descriptors.FieldDescriptor otherFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(otherFieldDescriptor); + TimestampHandler timestampHandler = new TimestampHandler(otherFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(otherFieldDescriptor.getContainingType()); - DynamicMessage.Builder returnedBuilder = timestampProtoHandler.transformToProtoBuilder(builder, "123"); + DynamicMessage.Builder returnedBuilder = timestampHandler.transformToProtoBuilder(builder, "123"); assertEquals("", returnedBuilder.getField(otherFieldDescriptor)); } @Test public void shouldReturnSameBuilderWithoutSettingFieldIfNullFieldIsPassed() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor timestampFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("event_timestamp"); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(timestampFieldDescriptor); + TimestampHandler timestampHandler = new TimestampHandler(timestampFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(timestampFieldDescriptor.getContainingType()); - DynamicMessage dynamicMessage = timestampProtoHandler.transformToProtoBuilder(builder, null).build(); + DynamicMessage dynamicMessage = timestampHandler.transformToProtoBuilder(builder, null).build(); TestBookingLogMessage bookingLogMessage = TestBookingLogMessage.parseFrom(dynamicMessage.toByteArray()); assertEquals(0L, bookingLogMessage.getEventTimestamp().getSeconds()); @@ -63,13 +65,13 @@ public void shouldReturnSameBuilderWithoutSettingFieldIfNullFieldIsPassed() thro @Test public void shouldSetTimestampIfInstanceOfJavaSqlTimestampPassed() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor timestampFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("event_timestamp"); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(timestampFieldDescriptor); + TimestampHandler timestampHandler = new TimestampHandler(timestampFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(timestampFieldDescriptor.getContainingType()); long milliSeconds = System.currentTimeMillis(); Timestamp inputTimestamp = new Timestamp(milliSeconds); - DynamicMessage dynamicMessage = timestampProtoHandler.transformToProtoBuilder(builder, inputTimestamp).build(); + DynamicMessage dynamicMessage = timestampHandler.transformToProtoBuilder(builder, inputTimestamp).build(); TestBookingLogMessage bookingLogMessage = TestBookingLogMessage.parseFrom(dynamicMessage.toByteArray()); assertEquals(milliSeconds / 1000, bookingLogMessage.getEventTimestamp().getSeconds()); @@ -79,7 +81,7 @@ public void shouldSetTimestampIfInstanceOfJavaSqlTimestampPassed() throws Invali @Test public void shouldSetTimestampIfInstanceOfLocalDateTimePassed() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor timestampFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("event_timestamp"); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(timestampFieldDescriptor); + TimestampHandler timestampHandler = new TimestampHandler(timestampFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(timestampFieldDescriptor.getContainingType()); long milliSeconds = System.currentTimeMillis(); @@ -87,7 +89,7 @@ public void shouldSetTimestampIfInstanceOfLocalDateTimePassed() throws InvalidPr Timestamp inputTimestamp = new Timestamp(milliSeconds); LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(milliSeconds), ZoneOffset.UTC); - DynamicMessage dynamicMessage = timestampProtoHandler.transformToProtoBuilder(builder, localDateTime).build(); + DynamicMessage dynamicMessage = timestampHandler.transformToProtoBuilder(builder, localDateTime).build(); TestBookingLogMessage bookingLogMessage = TestBookingLogMessage.parseFrom(dynamicMessage.toByteArray()); assertEquals(milliSeconds / 1000, bookingLogMessage.getEventTimestamp().getSeconds()); @@ -96,14 +98,14 @@ public void shouldSetTimestampIfInstanceOfLocalDateTimePassed() throws InvalidPr @Test public void shouldSetTimestampIfRowHavingTimestampIsPassed() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor timestampFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("event_timestamp"); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(timestampFieldDescriptor); + TimestampHandler timestampHandler = new TimestampHandler(timestampFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(timestampFieldDescriptor.getContainingType()); long seconds = System.currentTimeMillis() / 1000; int nanos = (int) (System.currentTimeMillis() * 1000000); Row inputRow = Row.of(seconds, nanos); - DynamicMessage dynamicMessage = timestampProtoHandler.transformToProtoBuilder(builder, inputRow).build(); + DynamicMessage dynamicMessage = timestampHandler.transformToProtoBuilder(builder, inputRow).build(); TestBookingLogMessage bookingLogMessage = TestBookingLogMessage.parseFrom(dynamicMessage.toByteArray()); assertEquals(seconds, bookingLogMessage.getEventTimestamp().getSeconds()); @@ -113,13 +115,13 @@ public void shouldSetTimestampIfRowHavingTimestampIsPassed() throws InvalidProto @Test public void shouldThrowExceptionIfRowOfArityOtherThanTwoIsPassed() { Descriptors.FieldDescriptor timestampFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("event_timestamp"); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(timestampFieldDescriptor); + TimestampHandler timestampHandler = new TimestampHandler(timestampFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(timestampFieldDescriptor.getContainingType()); Row inputRow = new Row(3); try { - timestampProtoHandler.transformToProtoBuilder(builder, inputRow).build(); + timestampHandler.transformToProtoBuilder(builder, inputRow).build(); } catch (Exception e) { assertEquals(IllegalArgumentException.class, e.getClass()); assertEquals("Row: +I[null, null, null] of size: 3 cannot be converted to timestamp", e.getMessage()); @@ -129,12 +131,12 @@ public void shouldThrowExceptionIfRowOfArityOtherThanTwoIsPassed() { @Test public void shouldSetTimestampIfInstanceOfNumberPassed() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor timestampFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("event_timestamp"); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(timestampFieldDescriptor); + TimestampHandler timestampHandler = new TimestampHandler(timestampFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(timestampFieldDescriptor.getContainingType()); long seconds = System.currentTimeMillis() / 1000; - DynamicMessage dynamicMessage = timestampProtoHandler.transformToProtoBuilder(builder, seconds).build(); + DynamicMessage dynamicMessage = timestampHandler.transformToProtoBuilder(builder, seconds).build(); TestBookingLogMessage bookingLogMessage = TestBookingLogMessage.parseFrom(dynamicMessage.toByteArray()); assertEquals(seconds, bookingLogMessage.getEventTimestamp().getSeconds()); @@ -144,12 +146,12 @@ public void shouldSetTimestampIfInstanceOfNumberPassed() throws InvalidProtocolB @Test public void shouldSetTimestampIfInstanceOfInstantPassed() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor timestampFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("event_timestamp"); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(timestampFieldDescriptor); + TimestampHandler timestampHandler = new TimestampHandler(timestampFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(timestampFieldDescriptor.getContainingType()); Instant instant = Instant.now(); - DynamicMessage dynamicMessage = timestampProtoHandler.transformToProtoBuilder(builder, instant).build(); + DynamicMessage dynamicMessage = timestampHandler.transformToProtoBuilder(builder, instant).build(); TestBookingLogMessage bookingLogMessage = TestBookingLogMessage.parseFrom(dynamicMessage.toByteArray()); assertEquals(instant.getEpochSecond(), bookingLogMessage.getEventTimestamp().getSeconds()); @@ -159,12 +161,12 @@ public void shouldSetTimestampIfInstanceOfInstantPassed() throws InvalidProtocol @Test public void shouldSetTimestampIfInstanceOfStringPassed() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor timestampFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("event_timestamp"); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(timestampFieldDescriptor); + TimestampHandler timestampHandler = new TimestampHandler(timestampFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(timestampFieldDescriptor.getContainingType()); String inputTimestamp = "2019-03-28T05:50:13Z"; - DynamicMessage dynamicMessage = timestampProtoHandler.transformToProtoBuilder(builder, inputTimestamp).build(); + DynamicMessage dynamicMessage = timestampHandler.transformToProtoBuilder(builder, inputTimestamp).build(); TestBookingLogMessage bookingLogMessage = TestBookingLogMessage.parseFrom(dynamicMessage.toByteArray()); assertEquals(1553752213, bookingLogMessage.getEventTimestamp().getSeconds()); @@ -178,9 +180,9 @@ public void shouldFetchTimeStampAsStringFromFieldForFieldDescriptorOfTypeTimeSta Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("booking_creation_time"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(fieldDescriptor); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(fieldDescriptor); - Object value = protoHandler.transformFromPostProcessor(strValue); + Object value = typeHandler.transformFromPostProcessor(strValue); assertEquals(strValue, value); } @@ -189,9 +191,9 @@ public void shouldReturnNullWhenTimeStampNotAvailableAndFieldDescriptorOfTypeTim Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("booking_creation_time"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(fieldDescriptor); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(fieldDescriptor); - Object value = protoHandler.transformFromPostProcessor(null); + Object value = typeHandler.transformFromPostProcessor(null); assertNull(value); } @@ -200,9 +202,9 @@ public void shouldHandleTimestampMessagesByReturningNullForNonParseableTimeStamp Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("event_timestamp"); - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(fieldDescriptor); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(fieldDescriptor); - Object value = protoHandler.transformFromPostProcessor("2"); + Object value = typeHandler.transformFromPostProcessor("2"); assertNull(value); } @@ -211,8 +213,8 @@ public void shouldHandleTimestampMessagesByReturningNullForNonParseableTimeStamp public void shouldReturnTypeInformation() { Descriptors.Descriptor descriptor = TestBookingLogMessage.getDescriptor(); Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName("event_timestamp"); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(fieldDescriptor); - TypeInformation actualTypeInformation = timestampProtoHandler.getTypeInformation(); + TimestampHandler timestampHandler = new TimestampHandler(fieldDescriptor); + TypeInformation actualTypeInformation = timestampHandler.getTypeInformation(); TypeInformation expectedTypeInformation = Types.ROW_NAMED(new String[]{"seconds", "nanos"}, Types.LONG, Types.INT); assertEquals(expectedTypeInformation, actualTypeInformation); } @@ -226,8 +228,8 @@ public void shouldTransformTimestampForDynamicMessageForKafka() throws InvalidPr .setEventTimestamp(com.google.protobuf.Timestamp.newBuilder().setSeconds(10L).setNanos(10).build()) .build(); DynamicMessage dynamicMessage = DynamicMessage.parseFrom(TestBookingLogMessage.getDescriptor(), bookingLogMessage.toByteArray()); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(fieldDescriptor); - Row row = (Row) timestampProtoHandler.transformFromProto(dynamicMessage.getField(fieldDescriptor)); + TimestampHandler timestampHandler = new TimestampHandler(fieldDescriptor); + Row row = (Row) timestampHandler.transformFromProto(dynamicMessage.getField(fieldDescriptor)); assertEquals(Row.of(10L, 10), row); } @@ -239,8 +241,8 @@ public void shouldSetDefaultValueForDynamicMessageForKafkaIfValuesNotSet() throw .newBuilder() .build(); DynamicMessage dynamicMessage = DynamicMessage.parseFrom(TestBookingLogMessage.getDescriptor(), bookingLogMessage.toByteArray()); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(fieldDescriptor); - Row row = (Row) timestampProtoHandler.transformFromProto(dynamicMessage.getField(fieldDescriptor)); + TimestampHandler timestampHandler = new TimestampHandler(fieldDescriptor); + Row row = (Row) timestampHandler.transformFromProto(dynamicMessage.getField(fieldDescriptor)); assertEquals(Row.of(0L, 0), row); } @@ -252,7 +254,7 @@ public void shouldConvertTimestampToJsonString() { Row inputRow = new Row(2); inputRow.setField(0, 1600083828L); - Object value = new TimestampProtoHandler(fieldDescriptor).transformToJson(inputRow); + Object value = new TimestampHandler(fieldDescriptor).transformToJson(inputRow); assertEquals("2020-09-14 11:43:48", String.valueOf(value)); } @@ -270,8 +272,8 @@ public void shouldTransformEpochInMillisFromSimpleGroup() { SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); simpleGroup.add("event_timestamp", sampleTimeInMillis); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(fieldDescriptor); - Row actualRow = (Row) timestampProtoHandler.transformFromParquet(simpleGroup); + TimestampHandler timestampHandler = new TimestampHandler(fieldDescriptor); + Row actualRow = (Row) timestampHandler.transformFromParquet(simpleGroup); assertEquals(expectedRow, actualRow); } @@ -279,9 +281,9 @@ public void shouldTransformEpochInMillisFromSimpleGroup() { @Test public void shouldReturnDefaultTimestampRowDuringTransformIfNullIsPassedToTransformFromParquet() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("event_timestamp"); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(fieldDescriptor); + TimestampHandler timestampHandler = new TimestampHandler(fieldDescriptor); - Row actualRow = (Row) timestampProtoHandler.transformFromParquet(null); + Row actualRow = (Row) timestampHandler.transformFromParquet(null); Row expectedRow = Row.of(0L, 0); assertEquals(expectedRow, actualRow); @@ -295,8 +297,8 @@ public void shouldReturnDefaultTimestampRowDuringTransformIfSimpleGroupDoesNotCo .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(fieldDescriptor); - Row actualRow = (Row) timestampProtoHandler.transformFromParquet(simpleGroup); + TimestampHandler timestampHandler = new TimestampHandler(fieldDescriptor); + Row actualRow = (Row) timestampHandler.transformFromParquet(simpleGroup); Row expectedRow = Row.of(0L, 0); assertEquals(expectedRow, actualRow); @@ -310,8 +312,8 @@ public void shouldReturnDefaultTimestampRowDuringTransformIfSimpleGroupDoesNotCo .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - TimestampProtoHandler timestampProtoHandler = new TimestampProtoHandler(fieldDescriptor); - Row actualRow = (Row) timestampProtoHandler.transformFromParquet(simpleGroup); + TimestampHandler timestampHandler = new TimestampHandler(fieldDescriptor); + Row actualRow = (Row) timestampHandler.transformFromParquet(simpleGroup); Row expectedRow = Row.of(0L, 0); assertEquals(expectedRow, actualRow); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/BooleanPrimitiveTypeHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/BooleanHandlerTest.java similarity index 70% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/BooleanPrimitiveTypeHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/BooleanHandlerTest.java index 2786eac82..a47cc9598 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/BooleanPrimitiveTypeHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/BooleanHandlerTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import org.apache.flink.api.common.typeinfo.Types; @@ -17,19 +17,19 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -public class BooleanPrimitiveTypeHandlerTest { +public class BooleanHandlerTest { @Test public void shouldHandleBooleanTypes() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("customer_dynamic_surge_enabled"); - BooleanPrimitiveTypeHandler booleanPrimitiveTypeHandler = new BooleanPrimitiveTypeHandler(fieldDescriptor); - assertTrue(booleanPrimitiveTypeHandler.canHandle()); + BooleanHandler booleanHandler = new BooleanHandler(fieldDescriptor); + assertTrue(booleanHandler.canHandle()); } @Test public void shouldNotHandleTypesOtherThanBoolean() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - BooleanPrimitiveTypeHandler booleanPrimitiveTypeHandler = new BooleanPrimitiveTypeHandler(fieldDescriptor); - assertFalse(booleanPrimitiveTypeHandler.canHandle()); + BooleanHandler booleanHandler = new BooleanHandler(fieldDescriptor); + assertFalse(booleanHandler.canHandle()); } @Test @@ -37,8 +37,8 @@ public void shouldFetchValueForFieldForFieldDescriptorOfTypeBool() { boolean actualValue = true; Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("customer_dynamic_surge_enabled"); - BooleanPrimitiveTypeHandler booleanPrimitiveTypeHandler = new BooleanPrimitiveTypeHandler(fieldDescriptor); - Object value = booleanPrimitiveTypeHandler.parseObject(actualValue); + BooleanHandler booleanHandler = new BooleanHandler(fieldDescriptor); + Object value = booleanHandler.parseObject(actualValue); assertEquals(actualValue, value); } @@ -49,8 +49,8 @@ public void shouldFetchParsedValueForFieldForFieldDescriptorOfTypeBool() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("customer_dynamic_surge_enabled"); - BooleanPrimitiveTypeHandler booleanPrimitiveTypeHandler = new BooleanPrimitiveTypeHandler(fieldDescriptor); - Object value = booleanPrimitiveTypeHandler.parseObject(String.valueOf(actualValue)); + BooleanHandler booleanHandler = new BooleanHandler(fieldDescriptor); + Object value = booleanHandler.parseObject(String.valueOf(actualValue)); assertEquals(actualValue, value); } @@ -59,8 +59,8 @@ public void shouldFetchParsedValueForFieldForFieldDescriptorOfTypeBool() { public void shouldFetchDefaultValueIfValueNotPresentForFieldDescriptorOfTypeBool() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("customer_dynamic_surge_enabled"); - BooleanPrimitiveTypeHandler booleanPrimitiveTypeHandler = new BooleanPrimitiveTypeHandler(fieldDescriptor); - Object value = booleanPrimitiveTypeHandler.parseObject(null); + BooleanHandler booleanHandler = new BooleanHandler(fieldDescriptor); + Object value = booleanHandler.parseObject(null); assertEquals(false, value); } @@ -69,24 +69,24 @@ public void shouldFetchDefaultValueIfValueNotPresentForFieldDescriptorOfTypeBool public void shouldReturnTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("customer_dynamic_surge_enabled"); - BooleanPrimitiveTypeHandler booleanPrimitiveTypeHandler = new BooleanPrimitiveTypeHandler(fieldDescriptor); - assertEquals(Types.BOOLEAN, booleanPrimitiveTypeHandler.getTypeInformation()); + BooleanHandler booleanHandler = new BooleanHandler(fieldDescriptor); + assertEquals(Types.BOOLEAN, booleanHandler.getTypeInformation()); } @Test public void shouldReturnArrayTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("customer_dynamic_surge_enabled"); - BooleanPrimitiveTypeHandler booleanPrimitiveTypeHandler = new BooleanPrimitiveTypeHandler(fieldDescriptor); - assertEquals(Types.PRIMITIVE_ARRAY(Types.BOOLEAN), booleanPrimitiveTypeHandler.getArrayType()); + BooleanHandler booleanHandler = new BooleanHandler(fieldDescriptor); + assertEquals(Types.PRIMITIVE_ARRAY(Types.BOOLEAN), booleanHandler.getArrayType()); } @Test public void shouldReturnArrayValues() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("customer_dynamic_surge_enabled"); - BooleanPrimitiveTypeHandler booleanPrimitiveTypeHandler = new BooleanPrimitiveTypeHandler(fieldDescriptor); + BooleanHandler booleanHandler = new BooleanHandler(fieldDescriptor); ArrayList inputValues = new ArrayList<>(Arrays.asList(true, false, false)); - Object actualValues = booleanPrimitiveTypeHandler.getArray(inputValues); + Object actualValues = booleanHandler.getArray(inputValues); assertArrayEquals(new boolean[]{true, false, false}, (boolean[]) actualValues); } @@ -95,8 +95,8 @@ public void shouldReturnArrayValues() { public void shouldReturnEmptyArrayOnNull() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("customer_dynamic_surge_enabled"); - BooleanPrimitiveTypeHandler booleanPrimitiveTypeHandler = new BooleanPrimitiveTypeHandler(fieldDescriptor); - Object actualValues = booleanPrimitiveTypeHandler.getArray(null); + BooleanHandler booleanHandler = new BooleanHandler(fieldDescriptor); + Object actualValues = booleanHandler.getArray(null); assertEquals(0, ((boolean[]) actualValues).length); } @@ -110,7 +110,7 @@ public void shouldFetchParsedValueForFieldOfTypeBoolInSimpleGroup() { SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); simpleGroup.add("customer_dynamic_surge_enabled", true); - BooleanPrimitiveTypeHandler booleanHandler = new BooleanPrimitiveTypeHandler(fieldDescriptor); + BooleanHandler booleanHandler = new BooleanHandler(fieldDescriptor); Object actualValue = booleanHandler.parseSimpleGroup(simpleGroup); assertEquals(true, actualValue); @@ -123,7 +123,7 @@ public void shouldFetchDefaultValueIfFieldNotPresentInSimpleGroup() { .required(BOOLEAN).named("some-other-field") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - BooleanPrimitiveTypeHandler booleanHandler = new BooleanPrimitiveTypeHandler(fieldDescriptor); + BooleanHandler booleanHandler = new BooleanHandler(fieldDescriptor); Object actualValue = booleanHandler.parseSimpleGroup(simpleGroup); @@ -138,7 +138,7 @@ public void shouldFetchDefaultValueIfFieldNotInitializedWithAValueInSimpleGroup( .required(BOOLEAN).named("customer_dynamic_surge_enabled") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - BooleanPrimitiveTypeHandler booleanHandler = new BooleanPrimitiveTypeHandler(fieldDescriptor); + BooleanHandler booleanHandler = new BooleanHandler(fieldDescriptor); Object actualValue = booleanHandler.parseSimpleGroup(simpleGroup); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/ByteStringPrimitiveTypeHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/ByteStringHandlerTest.java similarity index 71% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/ByteStringPrimitiveTypeHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/ByteStringHandlerTest.java index 0696f5225..cb5516a5e 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/ByteStringPrimitiveTypeHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/ByteStringHandlerTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; @@ -17,19 +17,19 @@ import static org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName.BINARY; import static org.junit.Assert.*; -public class ByteStringPrimitiveTypeHandlerTest { +public class ByteStringHandlerTest { @Test public void shouldHandleByteStringTypes() { Descriptors.FieldDescriptor fieldDescriptor = TestMessageEnvelope.getDescriptor().findFieldByName("log_key"); - ByteStringPrimitiveTypeHandler byteStringPrimitiveTypeHandler = new ByteStringPrimitiveTypeHandler(fieldDescriptor); - assertTrue(byteStringPrimitiveTypeHandler.canHandle()); + ByteStringHandler byteStringHandler = new ByteStringHandler(fieldDescriptor); + assertTrue(byteStringHandler.canHandle()); } @Test public void shouldNotHandleTypesOtherThanByteString() { Descriptors.FieldDescriptor fieldDescriptor = TestMessageEnvelope.getDescriptor().findFieldByName("topic"); - ByteStringPrimitiveTypeHandler byteStringPrimitiveTypeHandler = new ByteStringPrimitiveTypeHandler(fieldDescriptor); - assertFalse(byteStringPrimitiveTypeHandler.canHandle()); + ByteStringHandler byteStringHandler = new ByteStringHandler(fieldDescriptor); + assertFalse(byteStringHandler.canHandle()); } @Test @@ -37,8 +37,8 @@ public void shouldFetchValueForFieldForFieldDescriptorOfTypeByteString() { ByteString actualValue = ByteString.copyFromUtf8("test"); Descriptors.FieldDescriptor fieldDescriptor = TestMessageEnvelope.getDescriptor().findFieldByName("log_key"); - ByteStringPrimitiveTypeHandler byteStringPrimitiveTypeHandler = new ByteStringPrimitiveTypeHandler(fieldDescriptor); - Object value = byteStringPrimitiveTypeHandler.parseObject(actualValue); + ByteStringHandler byteStringHandler = new ByteStringHandler(fieldDescriptor); + Object value = byteStringHandler.parseObject(actualValue); assertEquals(actualValue, value); } @@ -46,31 +46,31 @@ public void shouldFetchValueForFieldForFieldDescriptorOfTypeByteString() { @Test public void shouldReturnTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestMessageEnvelope.getDescriptor().findFieldByName("log_key"); - ByteStringPrimitiveTypeHandler byteStringPrimitiveTypeHandler = new ByteStringPrimitiveTypeHandler(fieldDescriptor); - assertEquals(TypeInformation.of(ByteString.class), byteStringPrimitiveTypeHandler.getTypeInformation()); + ByteStringHandler byteStringHandler = new ByteStringHandler(fieldDescriptor); + assertEquals(TypeInformation.of(ByteString.class), byteStringHandler.getTypeInformation()); } @Test public void shouldReturnArrayTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestMessageEnvelope.getDescriptor().findFieldByName("log_key"); - ByteStringPrimitiveTypeHandler byteStringPrimitiveTypeHandler = new ByteStringPrimitiveTypeHandler(fieldDescriptor); - assertEquals(Types.OBJECT_ARRAY(TypeInformation.of(ByteString.class)), byteStringPrimitiveTypeHandler.getArrayType()); + ByteStringHandler byteStringHandler = new ByteStringHandler(fieldDescriptor); + assertEquals(Types.OBJECT_ARRAY(TypeInformation.of(ByteString.class)), byteStringHandler.getArrayType()); } @Test public void shouldReturnArrayValues() { Descriptors.FieldDescriptor fieldDescriptor = TestMessageEnvelope.getDescriptor().findFieldByName("log_key"); - ByteStringPrimitiveTypeHandler byteStringPrimitiveTypeHandler = new ByteStringPrimitiveTypeHandler(fieldDescriptor); + ByteStringHandler byteStringHandler = new ByteStringHandler(fieldDescriptor); ArrayList inputValues = new ArrayList<>(Arrays.asList(ByteString.copyFromUtf8("test1"), ByteString.copyFromUtf8("test2"))); - Object actualValues = byteStringPrimitiveTypeHandler.getArray(inputValues); + Object actualValues = byteStringHandler.getArray(inputValues); assertArrayEquals(inputValues.toArray(), (ByteString[]) actualValues); } @Test public void shouldReturnEmptyArrayOnNull() { Descriptors.FieldDescriptor fieldDescriptor = TestMessageEnvelope.getDescriptor().findFieldByName("log_key"); - ByteStringPrimitiveTypeHandler byteStringPrimitiveTypeHandler = new ByteStringPrimitiveTypeHandler(fieldDescriptor); - Object actualValues = byteStringPrimitiveTypeHandler.getArray(null); + ByteStringHandler byteStringHandler = new ByteStringHandler(fieldDescriptor); + Object actualValues = byteStringHandler.getArray(null); assertEquals(0, ((ByteString[]) actualValues).length); } @@ -84,7 +84,7 @@ public void shouldFetchUTF8EncodedByteStringForFieldOfTypeBinaryInSimpleGroup() .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); simpleGroup.add("log_key", Binary.fromConstantByteArray(expectedByteString.toByteArray())); - ByteStringPrimitiveTypeHandler byteStringHandler = new ByteStringPrimitiveTypeHandler(fieldDescriptor); + ByteStringHandler byteStringHandler = new ByteStringHandler(fieldDescriptor); Object actualValue = byteStringHandler.parseSimpleGroup(simpleGroup); @@ -98,7 +98,7 @@ public void shouldReturnNullIfFieldNotPresentInSimpleGroup() { .required(BINARY).named("some-other-field") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - ByteStringPrimitiveTypeHandler byteStringHandler = new ByteStringPrimitiveTypeHandler(fieldDescriptor); + ByteStringHandler byteStringHandler = new ByteStringHandler(fieldDescriptor); Object actualValue = byteStringHandler.parseSimpleGroup(simpleGroup); @@ -113,7 +113,7 @@ public void shouldReturnNullIfFieldNotInitializedWithAValueInSimpleGroup() { .required(BINARY).named("log_key") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - ByteStringPrimitiveTypeHandler byteStringHandler = new ByteStringPrimitiveTypeHandler(fieldDescriptor); + ByteStringHandler byteStringHandler = new ByteStringHandler(fieldDescriptor); Object actualValue = byteStringHandler.parseSimpleGroup(simpleGroup); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/DoublePrimitiveTypeHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/DoubleHandlerTest.java similarity index 68% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/DoublePrimitiveTypeHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/DoubleHandlerTest.java index 151074002..6892b4327 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/DoublePrimitiveTypeHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/DoubleHandlerTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import com.google.protobuf.Descriptors; import io.odpf.dagger.consumer.TestBookingLogMessage; @@ -13,20 +13,20 @@ import static org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName.DOUBLE; import static org.junit.Assert.*; -public class DoublePrimitiveTypeHandlerTest { +public class DoubleHandlerTest { @Test public void shouldHandleDoubleTypes() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cash_amount"); - DoublePrimitiveTypeHandler doublePrimitiveTypeHandler = new DoublePrimitiveTypeHandler(fieldDescriptor); - assertTrue(doublePrimitiveTypeHandler.canHandle()); + DoubleHandler doubleHandler = new DoubleHandler(fieldDescriptor); + assertTrue(doubleHandler.canHandle()); } @Test public void shouldNotHandleTypesOtherThanDouble() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - DoublePrimitiveTypeHandler doublePrimitiveTypeHandler = new DoublePrimitiveTypeHandler(fieldDescriptor); - assertFalse(doublePrimitiveTypeHandler.canHandle()); + DoubleHandler doubleHandler = new DoubleHandler(fieldDescriptor); + assertFalse(doubleHandler.canHandle()); } @Test @@ -34,8 +34,8 @@ public void shouldFetchValueForFieldForFieldDescriptorOfTypeDouble() { double actualValue = 2.0D; Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cash_amount"); - DoublePrimitiveTypeHandler doublePrimitiveTypeHandler = new DoublePrimitiveTypeHandler(fieldDescriptor); - Object value = doublePrimitiveTypeHandler.parseObject(actualValue); + DoubleHandler doubleHandler = new DoubleHandler(fieldDescriptor); + Object value = doubleHandler.parseObject(actualValue); assertEquals(actualValue, value); } @@ -45,8 +45,8 @@ public void shouldFetchParsedValueForFieldForFieldDescriptorOfTypeDouble() { double actualValue = 2.0D; Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cash_amount"); - DoublePrimitiveTypeHandler doublePrimitiveTypeHandler = new DoublePrimitiveTypeHandler(fieldDescriptor); - Object value = doublePrimitiveTypeHandler.parseObject(String.valueOf(actualValue)); + DoubleHandler doubleHandler = new DoubleHandler(fieldDescriptor); + Object value = doubleHandler.parseObject(String.valueOf(actualValue)); assertEquals(actualValue, value); } @@ -54,8 +54,8 @@ public void shouldFetchParsedValueForFieldForFieldDescriptorOfTypeDouble() { @Test public void shouldFetchDefaultValueIfValueNotPresentForFieldDescriptorOfTypeDouble() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cash_amount"); - DoublePrimitiveTypeHandler doublePrimitiveTypeHandler = new DoublePrimitiveTypeHandler(fieldDescriptor); - Object value = doublePrimitiveTypeHandler.parseObject(null); + DoubleHandler doubleHandler = new DoubleHandler(fieldDescriptor); + Object value = doubleHandler.parseObject(null); assertEquals(0.0D, value); } @@ -63,23 +63,23 @@ public void shouldFetchDefaultValueIfValueNotPresentForFieldDescriptorOfTypeDoub @Test public void shouldReturnTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cash_amount"); - DoublePrimitiveTypeHandler doublePrimitiveTypeHandler = new DoublePrimitiveTypeHandler(fieldDescriptor); - assertEquals(Types.DOUBLE, doublePrimitiveTypeHandler.getTypeInformation()); + DoubleHandler doubleHandler = new DoubleHandler(fieldDescriptor); + assertEquals(Types.DOUBLE, doubleHandler.getTypeInformation()); } @Test public void shouldReturnArrayTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cash_amount"); - DoublePrimitiveTypeHandler doublePrimitiveTypeHandler = new DoublePrimitiveTypeHandler(fieldDescriptor); - assertEquals(Types.PRIMITIVE_ARRAY(Types.DOUBLE), doublePrimitiveTypeHandler.getArrayType()); + DoubleHandler doubleHandler = new DoubleHandler(fieldDescriptor); + assertEquals(Types.PRIMITIVE_ARRAY(Types.DOUBLE), doubleHandler.getArrayType()); } @Test public void shouldReturnArrayValues() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cash_amount"); - DoublePrimitiveTypeHandler doublePrimitiveTypeHandler = new DoublePrimitiveTypeHandler(fieldDescriptor); + DoubleHandler doubleHandler = new DoubleHandler(fieldDescriptor); ArrayList inputValues = new ArrayList<>(Arrays.asList(1D, 2D, 3D)); - double[] actualValues = (double[]) doublePrimitiveTypeHandler.getArray(inputValues); + double[] actualValues = (double[]) doubleHandler.getArray(inputValues); assertTrue(Arrays.equals(new double[]{1D, 2D, 3D}, actualValues)); } @@ -87,8 +87,8 @@ public void shouldReturnArrayValues() { @Test public void shouldReturnEmptyArrayOnNull() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cash_amount"); - DoublePrimitiveTypeHandler doublePrimitiveTypeHandler = new DoublePrimitiveTypeHandler(fieldDescriptor); - Object actualValues = doublePrimitiveTypeHandler.getArray(null); + DoubleHandler doubleHandler = new DoubleHandler(fieldDescriptor); + Object actualValues = doubleHandler.getArray(null); assertEquals(0, ((double[]) actualValues).length); } @@ -102,7 +102,7 @@ public void shouldFetchParsedValueForFieldOfTypeDoubleInSimpleGroup() { SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); simpleGroup.add("cash_amount", 34.23D); - DoublePrimitiveTypeHandler doubleHandler = new DoublePrimitiveTypeHandler(fieldDescriptor); + DoubleHandler doubleHandler = new DoubleHandler(fieldDescriptor); Object actualValue = doubleHandler.parseSimpleGroup(simpleGroup); assertEquals(34.23D, actualValue); @@ -116,7 +116,7 @@ public void shouldFetchDefaultValueIfFieldNotPresentInSimpleGroup() { .required(DOUBLE).named("some-other-field") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - DoublePrimitiveTypeHandler doubleHandler = new DoublePrimitiveTypeHandler(fieldDescriptor); + DoubleHandler doubleHandler = new DoubleHandler(fieldDescriptor); Object actualValue = doubleHandler.parseSimpleGroup(simpleGroup); @@ -132,7 +132,7 @@ public void shouldFetchDefaultValueIfFieldNotInitializedWithAValueInSimpleGroup( .required(DOUBLE).named("cash_amount") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - DoublePrimitiveTypeHandler doubleHandler = new DoublePrimitiveTypeHandler(fieldDescriptor); + DoubleHandler doubleHandler = new DoubleHandler(fieldDescriptor); Object actualValue = doubleHandler.parseSimpleGroup(simpleGroup); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/FloatPrimitiveTypeHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/FloatHandlerTest.java similarity index 69% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/FloatPrimitiveTypeHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/FloatHandlerTest.java index 073e2d1d0..6ce746c2c 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/FloatPrimitiveTypeHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/FloatHandlerTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import org.apache.flink.api.common.typeinfo.Types; @@ -17,19 +17,19 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -public class FloatPrimitiveTypeHandlerTest { +public class FloatHandlerTest { @Test public void shouldHandleFloatTypes() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("amount_paid_by_cash"); - FloatPrimitiveTypeHandler floatPrimitiveTypeHandler = new FloatPrimitiveTypeHandler(fieldDescriptor); - assertTrue(floatPrimitiveTypeHandler.canHandle()); + FloatHandler floatHandler = new FloatHandler(fieldDescriptor); + assertTrue(floatHandler.canHandle()); } @Test public void shouldNotHandleTypesOtherThanFloat() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - FloatPrimitiveTypeHandler floatPrimitiveTypeHandler = new FloatPrimitiveTypeHandler(fieldDescriptor); - assertFalse(floatPrimitiveTypeHandler.canHandle()); + FloatHandler floatHandler = new FloatHandler(fieldDescriptor); + assertFalse(floatHandler.canHandle()); } @Test @@ -37,8 +37,8 @@ public void shouldFetchValueForFieldForFieldDescriptorOfTypeFloat() { float actualValue = 5.1f; Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("amount_paid_by_cash"); - FloatPrimitiveTypeHandler floatPrimitiveTypeHandler = new FloatPrimitiveTypeHandler(fieldDescriptor); - Object value = floatPrimitiveTypeHandler.parseObject(actualValue); + FloatHandler floatHandler = new FloatHandler(fieldDescriptor); + Object value = floatHandler.parseObject(actualValue); assertEquals(actualValue, value); } @@ -48,8 +48,8 @@ public void shouldFetchParsedValueForFieldForFieldDescriptorOfTypeFloat() { float actualValue = 5.1f; Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("amount_paid_by_cash"); - FloatPrimitiveTypeHandler floatPrimitiveTypeHandler = new FloatPrimitiveTypeHandler(fieldDescriptor); - Object value = floatPrimitiveTypeHandler.parseObject(String.valueOf(actualValue)); + FloatHandler floatHandler = new FloatHandler(fieldDescriptor); + Object value = floatHandler.parseObject(String.valueOf(actualValue)); assertEquals(actualValue, value); } @@ -57,8 +57,8 @@ public void shouldFetchParsedValueForFieldForFieldDescriptorOfTypeFloat() { @Test public void shouldFetchDefaultValueIfValueNotPresentForFieldDescriptorOfTypeFloat() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("amount_paid_by_cash"); - FloatPrimitiveTypeHandler floatPrimitiveTypeHandler = new FloatPrimitiveTypeHandler(fieldDescriptor); - Object value = floatPrimitiveTypeHandler.parseObject(null); + FloatHandler floatHandler = new FloatHandler(fieldDescriptor); + Object value = floatHandler.parseObject(null); assertEquals(0.0f, value); } @@ -66,23 +66,23 @@ public void shouldFetchDefaultValueIfValueNotPresentForFieldDescriptorOfTypeFloa @Test public void shouldReturnTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("amount_paid_by_cash"); - FloatPrimitiveTypeHandler floatPrimitiveTypeHandler = new FloatPrimitiveTypeHandler(fieldDescriptor); - assertEquals(Types.FLOAT, floatPrimitiveTypeHandler.getTypeInformation()); + FloatHandler floatHandler = new FloatHandler(fieldDescriptor); + assertEquals(Types.FLOAT, floatHandler.getTypeInformation()); } @Test public void shouldReturnArrayTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("amount_paid_by_cash"); - FloatPrimitiveTypeHandler floatPrimitiveTypeHandler = new FloatPrimitiveTypeHandler(fieldDescriptor); - assertEquals(Types.PRIMITIVE_ARRAY(Types.FLOAT), floatPrimitiveTypeHandler.getArrayType()); + FloatHandler floatHandler = new FloatHandler(fieldDescriptor); + assertEquals(Types.PRIMITIVE_ARRAY(Types.FLOAT), floatHandler.getArrayType()); } @Test public void shouldReturnArrayValues() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("amount_paid_by_cash"); - FloatPrimitiveTypeHandler floatPrimitiveTypeHandler = new FloatPrimitiveTypeHandler(fieldDescriptor); + FloatHandler floatHandler = new FloatHandler(fieldDescriptor); ArrayList inputValues = new ArrayList<>(Arrays.asList(1F, 2F, 3F)); - Object actualValues = floatPrimitiveTypeHandler.getArray(inputValues); + Object actualValues = floatHandler.getArray(inputValues); assertTrue(Arrays.equals(new float[]{1F, 2F, 3F}, (float[]) actualValues)); } @@ -90,8 +90,8 @@ public void shouldReturnArrayValues() { @Test public void shouldReturnEmptyArrayOnNull() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("amount_paid_by_cash"); - FloatPrimitiveTypeHandler floatPrimitiveTypeHandler = new FloatPrimitiveTypeHandler(fieldDescriptor); - Object actualValues = floatPrimitiveTypeHandler.getArray(null); + FloatHandler floatHandler = new FloatHandler(fieldDescriptor); + Object actualValues = floatHandler.getArray(null); assertEquals(0, ((float[]) actualValues).length); } @@ -104,7 +104,7 @@ public void shouldFetchParsedValueForFieldOfTypeFloatInSimpleGroup() { .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); simpleGroup.add("amount_paid_by_cash", 32.56F); - FloatPrimitiveTypeHandler floatHandler = new FloatPrimitiveTypeHandler(fieldDescriptor); + FloatHandler floatHandler = new FloatHandler(fieldDescriptor); Object actualValue = floatHandler.parseSimpleGroup(simpleGroup); @@ -118,7 +118,7 @@ public void shouldFetchDefaultValueIfFieldNotPresentInSimpleGroup() { .required(FLOAT).named("some-other-field") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - FloatPrimitiveTypeHandler floatHandler = new FloatPrimitiveTypeHandler(fieldDescriptor); + FloatHandler floatHandler = new FloatHandler(fieldDescriptor); Object actualValue = floatHandler.parseSimpleGroup(simpleGroup); @@ -134,7 +134,7 @@ public void shouldFetchDefaultValueIfFieldNotInitializedWithAValueInSimpleGroup( .required(FLOAT).named("amount_paid_by_cash") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - FloatPrimitiveTypeHandler floatHandler = new FloatPrimitiveTypeHandler(fieldDescriptor); + FloatHandler floatHandler = new FloatHandler(fieldDescriptor); Object actualValue = floatHandler.parseSimpleGroup(simpleGroup); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/IntegerPrimitiveTypeHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/IntegerHandlerTest.java similarity index 68% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/IntegerPrimitiveTypeHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/IntegerHandlerTest.java index e32d6613a..fee725f29 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/IntegerPrimitiveTypeHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/IntegerHandlerTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import org.apache.flink.api.common.typeinfo.Types; @@ -17,20 +17,20 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -public class IntegerPrimitiveTypeHandlerTest { +public class IntegerHandlerTest { @Test public void shouldHandleIntegerTypes() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cancel_reason_id"); - IntegerPrimitiveTypeHandler integerPrimitiveTypeHandler = new IntegerPrimitiveTypeHandler(fieldDescriptor); - assertTrue(integerPrimitiveTypeHandler.canHandle()); + IntegerHandler integerHandler = new IntegerHandler(fieldDescriptor); + assertTrue(integerHandler.canHandle()); } @Test public void shouldNotHandleTypesOtherThanInteger() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - IntegerPrimitiveTypeHandler integerPrimitiveTypeHandler = new IntegerPrimitiveTypeHandler(fieldDescriptor); - assertFalse(integerPrimitiveTypeHandler.canHandle()); + IntegerHandler integerHandler = new IntegerHandler(fieldDescriptor); + assertFalse(integerHandler.canHandle()); } @Test @@ -38,8 +38,8 @@ public void shouldFetchValueForFieldForFieldDescriptorOfTypeInteger() { int actualValue = 2; Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cancel_reason_id"); - IntegerPrimitiveTypeHandler integerPrimitiveTypeHandler = new IntegerPrimitiveTypeHandler(fieldDescriptor); - Object value = integerPrimitiveTypeHandler.parseObject(actualValue); + IntegerHandler integerHandler = new IntegerHandler(fieldDescriptor); + Object value = integerHandler.parseObject(actualValue); assertEquals(actualValue, value); } @@ -49,8 +49,8 @@ public void shouldFetchParsedValueForFieldForFieldDescriptorOfTypeInteger() { int actualValue = 2; Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cancel_reason_id"); - IntegerPrimitiveTypeHandler integerPrimitiveTypeHandler = new IntegerPrimitiveTypeHandler(fieldDescriptor); - Object value = integerPrimitiveTypeHandler.parseObject(String.valueOf(actualValue)); + IntegerHandler integerHandler = new IntegerHandler(fieldDescriptor); + Object value = integerHandler.parseObject(String.valueOf(actualValue)); assertEquals(actualValue, value); } @@ -58,8 +58,8 @@ public void shouldFetchParsedValueForFieldForFieldDescriptorOfTypeInteger() { @Test public void shouldFetchDefaultValueIfValueNotPresentForFieldDescriptorOfTypeInteger() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cancel_reason_id"); - IntegerPrimitiveTypeHandler integerPrimitiveTypeHandler = new IntegerPrimitiveTypeHandler(fieldDescriptor); - Object value = integerPrimitiveTypeHandler.parseObject(null); + IntegerHandler integerHandler = new IntegerHandler(fieldDescriptor); + Object value = integerHandler.parseObject(null); assertEquals(0, value); } @@ -67,23 +67,23 @@ public void shouldFetchDefaultValueIfValueNotPresentForFieldDescriptorOfTypeInte @Test public void shouldReturnTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cancel_reason_id"); - IntegerPrimitiveTypeHandler integerPrimitiveTypeHandler = new IntegerPrimitiveTypeHandler(fieldDescriptor); - assertEquals(Types.INT, integerPrimitiveTypeHandler.getTypeInformation()); + IntegerHandler integerHandler = new IntegerHandler(fieldDescriptor); + assertEquals(Types.INT, integerHandler.getTypeInformation()); } @Test public void shouldReturnArrayTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cancel_reason_id"); - IntegerPrimitiveTypeHandler integerPrimitiveTypeHandler = new IntegerPrimitiveTypeHandler(fieldDescriptor); - assertEquals(Types.PRIMITIVE_ARRAY(Types.INT), integerPrimitiveTypeHandler.getArrayType()); + IntegerHandler integerHandler = new IntegerHandler(fieldDescriptor); + assertEquals(Types.PRIMITIVE_ARRAY(Types.INT), integerHandler.getArrayType()); } @Test public void shouldReturnArrayValues() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cancel_reason_id"); - IntegerPrimitiveTypeHandler integerPrimitiveTypeHandler = new IntegerPrimitiveTypeHandler(fieldDescriptor); + IntegerHandler integerHandler = new IntegerHandler(fieldDescriptor); ArrayList inputValues = new ArrayList<>(Arrays.asList(1, 2, 3)); - Object actualValues = integerPrimitiveTypeHandler.getArray(inputValues); + Object actualValues = integerHandler.getArray(inputValues); assertArrayEquals(new int[]{1, 2, 3}, (int[]) actualValues); } @@ -91,8 +91,8 @@ public void shouldReturnArrayValues() { @Test public void shouldReturnEmptyArrayOnNull() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("cancel_reason_id"); - IntegerPrimitiveTypeHandler integerPrimitiveTypeHandler = new IntegerPrimitiveTypeHandler(fieldDescriptor); - Object actualValues = integerPrimitiveTypeHandler.getArray(null); + IntegerHandler integerHandler = new IntegerHandler(fieldDescriptor); + Object actualValues = integerHandler.getArray(null); assertEquals(0, ((int[]) actualValues).length); } @@ -107,7 +107,7 @@ public void shouldFetchParsedValueForFieldOfTypeIntegerInSimpleGroup() { SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); simpleGroup.add("cancel_reason_id", 34); - IntegerPrimitiveTypeHandler integerHandler = new IntegerPrimitiveTypeHandler(fieldDescriptor); + IntegerHandler integerHandler = new IntegerHandler(fieldDescriptor); Object actualValue = integerHandler.parseSimpleGroup(simpleGroup); assertEquals(34, actualValue); @@ -121,7 +121,7 @@ public void shouldFetchDefaultValueIfFieldNotPresentInSimpleGroup() { .required(INT32).named("some-other-field") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - IntegerPrimitiveTypeHandler integerHandler = new IntegerPrimitiveTypeHandler(fieldDescriptor); + IntegerHandler integerHandler = new IntegerHandler(fieldDescriptor); Object actualValue = integerHandler.parseSimpleGroup(simpleGroup); @@ -137,7 +137,7 @@ public void shouldFetchDefaultValueIfFieldNotInitializedWithAValueInSimpleGroup( .required(INT32).named("cancel_reason_id") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - IntegerPrimitiveTypeHandler integerHandler = new IntegerPrimitiveTypeHandler(fieldDescriptor); + IntegerHandler integerHandler = new IntegerHandler(fieldDescriptor); Object actualValue = integerHandler.parseSimpleGroup(simpleGroup); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/LongPrimitiveTypeHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/LongHandlerTest.java similarity index 69% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/LongPrimitiveTypeHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/LongHandlerTest.java index 5439255d8..1df43d99e 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/LongPrimitiveTypeHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/LongHandlerTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import org.apache.flink.api.common.typeinfo.Types; @@ -17,20 +17,20 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -public class LongPrimitiveTypeHandlerTest { +public class LongHandlerTest { @Test public void shouldHandleLongTypes() { Descriptors.FieldDescriptor fieldDescriptor = TestAggregatedSupplyMessage.getDescriptor().findFieldByName("s2_id"); - LongPrimitiveTypeHandler longPrimitiveTypeHandler = new LongPrimitiveTypeHandler(fieldDescriptor); - assertTrue(longPrimitiveTypeHandler.canHandle()); + LongHandler longHandler = new LongHandler(fieldDescriptor); + assertTrue(longHandler.canHandle()); } @Test public void shouldNotHandleTypesOtherThanLong() { Descriptors.FieldDescriptor fieldDescriptor = TestAggregatedSupplyMessage.getDescriptor().findFieldByName("vehicle_type"); - LongPrimitiveTypeHandler longPrimitiveTypeHandler = new LongPrimitiveTypeHandler(fieldDescriptor); - assertFalse(longPrimitiveTypeHandler.canHandle()); + LongHandler longHandler = new LongHandler(fieldDescriptor); + assertFalse(longHandler.canHandle()); } @Test @@ -38,8 +38,8 @@ public void shouldFetchValueForFieldForFieldDescriptorOfTypeLong() { long actualValue = 2L; Descriptors.FieldDescriptor fieldDescriptor = TestAggregatedSupplyMessage.getDescriptor().findFieldByName("s2_id"); - LongPrimitiveTypeHandler longPrimitiveTypeHandler = new LongPrimitiveTypeHandler(fieldDescriptor); - Object value = longPrimitiveTypeHandler.parseObject(actualValue); + LongHandler longHandler = new LongHandler(fieldDescriptor); + Object value = longHandler.parseObject(actualValue); assertEquals(actualValue, value); } @@ -49,8 +49,8 @@ public void shouldFetchParsedValueForFieldForFieldDescriptorOfTypeLong() { long actualValue = 2L; Descriptors.FieldDescriptor fieldDescriptor = TestAggregatedSupplyMessage.getDescriptor().findFieldByName("s2_id"); - LongPrimitiveTypeHandler longPrimitiveTypeHandler = new LongPrimitiveTypeHandler(fieldDescriptor); - Object value = longPrimitiveTypeHandler.parseObject(String.valueOf(actualValue)); + LongHandler longHandler = new LongHandler(fieldDescriptor); + Object value = longHandler.parseObject(String.valueOf(actualValue)); assertEquals(actualValue, value); } @@ -58,8 +58,8 @@ public void shouldFetchParsedValueForFieldForFieldDescriptorOfTypeLong() { @Test public void shouldFetchDefaultValueIfValueNotPresentForFieldDescriptorOfTypeLong() { Descriptors.FieldDescriptor fieldDescriptor = TestAggregatedSupplyMessage.getDescriptor().findFieldByName("s2_id"); - LongPrimitiveTypeHandler longPrimitiveTypeHandler = new LongPrimitiveTypeHandler(fieldDescriptor); - Object value = longPrimitiveTypeHandler.parseObject(null); + LongHandler longHandler = new LongHandler(fieldDescriptor); + Object value = longHandler.parseObject(null); assertEquals(0L, value); } @@ -67,31 +67,31 @@ public void shouldFetchDefaultValueIfValueNotPresentForFieldDescriptorOfTypeLong @Test public void shouldReturnTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestAggregatedSupplyMessage.getDescriptor().findFieldByName("s2_id"); - LongPrimitiveTypeHandler longPrimitiveTypeHandler = new LongPrimitiveTypeHandler(fieldDescriptor); - assertEquals(Types.LONG, longPrimitiveTypeHandler.getTypeInformation()); + LongHandler longHandler = new LongHandler(fieldDescriptor); + assertEquals(Types.LONG, longHandler.getTypeInformation()); } @Test public void shouldReturnArrayTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestAggregatedSupplyMessage.getDescriptor().findFieldByName("s2_id"); - LongPrimitiveTypeHandler longPrimitiveTypeHandler = new LongPrimitiveTypeHandler(fieldDescriptor); - assertEquals(Types.OBJECT_ARRAY(Types.LONG), longPrimitiveTypeHandler.getArrayType()); + LongHandler longHandler = new LongHandler(fieldDescriptor); + assertEquals(Types.OBJECT_ARRAY(Types.LONG), longHandler.getArrayType()); } @Test public void shouldReturnArrayValues() { Descriptors.FieldDescriptor fieldDescriptor = TestAggregatedSupplyMessage.getDescriptor().findFieldByName("s2_id"); - LongPrimitiveTypeHandler longPrimitiveTypeHandler = new LongPrimitiveTypeHandler(fieldDescriptor); + LongHandler longHandler = new LongHandler(fieldDescriptor); ArrayList inputValues = new ArrayList<>(Arrays.asList(1L, 2L, 3L)); - Object actualValues = longPrimitiveTypeHandler.getArray(inputValues); + Object actualValues = longHandler.getArray(inputValues); assertArrayEquals(inputValues.toArray(), (Long[]) actualValues); } @Test public void shouldReturnEmptyArrayOnNull() { Descriptors.FieldDescriptor fieldDescriptor = TestAggregatedSupplyMessage.getDescriptor().findFieldByName("s2_id"); - LongPrimitiveTypeHandler longPrimitiveTypeHandler = new LongPrimitiveTypeHandler(fieldDescriptor); - Object actualValues = longPrimitiveTypeHandler.getArray(null); + LongHandler longHandler = new LongHandler(fieldDescriptor); + Object actualValues = longHandler.getArray(null); assertEquals(0, ((Long[]) actualValues).length); } @@ -103,7 +103,7 @@ public void shouldFetchParsedValueForFieldOfTypeLongInSimpleGroup() { .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); simpleGroup.add("s2_id", 101828L); - LongPrimitiveTypeHandler longHandler = new LongPrimitiveTypeHandler(fieldDescriptor); + LongHandler longHandler = new LongHandler(fieldDescriptor); Object actualValue = longHandler.parseSimpleGroup(simpleGroup); @@ -118,7 +118,7 @@ public void shouldFetchDefaultValueIfFieldNotPresentInSimpleGroup() { .required(INT64).named("some-other-field") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - LongPrimitiveTypeHandler longHandler = new LongPrimitiveTypeHandler(fieldDescriptor); + LongHandler longHandler = new LongHandler(fieldDescriptor); Object actualValue = longHandler.parseSimpleGroup(simpleGroup); @@ -134,7 +134,7 @@ public void shouldFetchDefaultValueIfFieldNotInitializedWithAValueInSimpleGroup( .required(INT64).named("s2_id") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - LongPrimitiveTypeHandler longHandler = new LongPrimitiveTypeHandler(fieldDescriptor); + LongHandler longHandler = new LongHandler(fieldDescriptor); Object actualValue = longHandler.parseSimpleGroup(simpleGroup); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/PrimitiveTypeHandlerFactoryTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/PrimitiveHandlerFactoryTest.java similarity index 56% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/PrimitiveTypeHandlerFactoryTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/PrimitiveHandlerFactoryTest.java index a51eb6304..7a30f612c 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/PrimitiveTypeHandlerFactoryTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/PrimitiveHandlerFactoryTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import io.odpf.dagger.common.exceptions.serde.DataTypeNotSupportedException; import io.odpf.dagger.consumer.TestBookingLogMessage; @@ -8,61 +8,61 @@ import static org.junit.Assert.assertEquals; -public class PrimitiveTypeHandlerFactoryTest { +public class PrimitiveHandlerFactoryTest { @Test public void shouldReturnIntegerTypeHandlerForInteger() { - PrimitiveTypeHandler primitiveTypeHandler = PrimitiveTypeHandlerFactory + PrimitiveHandler primitiveHandler = PrimitiveHandlerFactory .getTypeHandler(TestBookingLogMessage.getDescriptor().findFieldByName("cancel_reason_id")); - assertEquals(IntegerPrimitiveTypeHandler.class, primitiveTypeHandler.getClass()); + assertEquals(IntegerHandler.class, primitiveHandler.getClass()); } @Test public void shouldReturnBooleanTypeHandlerForBoolean() { - PrimitiveTypeHandler primitiveTypeHandler = PrimitiveTypeHandlerFactory + PrimitiveHandler primitiveHandler = PrimitiveHandlerFactory .getTypeHandler(TestBookingLogMessage.getDescriptor().findFieldByName("customer_dynamic_surge_enabled")); - assertEquals(BooleanPrimitiveTypeHandler.class, primitiveTypeHandler.getClass()); + assertEquals(BooleanHandler.class, primitiveHandler.getClass()); } @Test public void shouldReturnDoubleTypeHandlerForDouble() { - PrimitiveTypeHandler primitiveTypeHandler = PrimitiveTypeHandlerFactory + PrimitiveHandler primitiveHandler = PrimitiveHandlerFactory .getTypeHandler(TestBookingLogMessage.getDescriptor().findFieldByName("cash_amount")); - assertEquals(DoublePrimitiveTypeHandler.class, primitiveTypeHandler.getClass()); + assertEquals(DoubleHandler.class, primitiveHandler.getClass()); } @Test public void shouldReturnFloatTypeHandlerForFloat() { - PrimitiveTypeHandler primitiveTypeHandler = PrimitiveTypeHandlerFactory + PrimitiveHandler primitiveHandler = PrimitiveHandlerFactory .getTypeHandler(TestBookingLogMessage.getDescriptor().findFieldByName("amount_paid_by_cash")); - assertEquals(FloatPrimitiveTypeHandler.class, primitiveTypeHandler.getClass()); + assertEquals(FloatHandler.class, primitiveHandler.getClass()); } @Test public void shouldReturnLongTypeHandlerForLong() { - PrimitiveTypeHandler primitiveTypeHandler = PrimitiveTypeHandlerFactory + PrimitiveHandler primitiveHandler = PrimitiveHandlerFactory .getTypeHandler(TestBookingLogMessage.getDescriptor().findFieldByName("customer_total_fare_without_surge")); - assertEquals(LongPrimitiveTypeHandler.class, primitiveTypeHandler.getClass()); + assertEquals(LongHandler.class, primitiveHandler.getClass()); } @Test public void shouldReturnStringTypeHandlerForString() { - PrimitiveTypeHandler primitiveTypeHandler = PrimitiveTypeHandlerFactory + PrimitiveHandler primitiveHandler = PrimitiveHandlerFactory .getTypeHandler(TestBookingLogMessage.getDescriptor().findFieldByName("order_number")); - assertEquals(StringPrimitiveTypeHandler.class, primitiveTypeHandler.getClass()); + assertEquals(StringHandler.class, primitiveHandler.getClass()); } @Test public void shouldReturnByteStringTypeHandlerForByteString() { - PrimitiveTypeHandler primitiveTypeHandler = PrimitiveTypeHandlerFactory + PrimitiveHandler primitiveHandler = PrimitiveHandlerFactory .getTypeHandler(TestMessageEnvelope.getDescriptor().findFieldByName("log_key")); - assertEquals(ByteStringPrimitiveTypeHandler.class, primitiveTypeHandler.getClass()); + assertEquals(ByteStringHandler.class, primitiveHandler.getClass()); } @Test public void shouldThrowExceptionIfTypeNotSupported() { DataTypeNotSupportedException exception = Assert.assertThrows(DataTypeNotSupportedException.class, - () -> PrimitiveTypeHandlerFactory.getTypeHandler(TestBookingLogMessage.getDescriptor().findFieldByName("status"))); + () -> PrimitiveHandlerFactory.getTypeHandler(TestBookingLogMessage.getDescriptor().findFieldByName("status"))); assertEquals("Data type ENUM not supported in primitive type handlers", exception.getMessage()); } } diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/StringPrimitiveTypeHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/StringHandlerTest.java similarity index 70% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/StringPrimitiveTypeHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/StringHandlerTest.java index bf2190881..2e5f749db 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/typehandler/StringPrimitiveTypeHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/primitive/StringHandlerTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler.typehandler; +package io.odpf.dagger.common.serde.typehandler.primitive; import org.apache.flink.api.common.typeinfo.Types; import org.apache.flink.api.java.typeutils.ObjectArrayTypeInfo; @@ -18,20 +18,20 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -public class StringPrimitiveTypeHandlerTest { +public class StringHandlerTest { @Test public void shouldHandleStringTypes() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - StringPrimitiveTypeHandler stringPrimitiveTypeHandler = new StringPrimitiveTypeHandler(fieldDescriptor); - assertTrue(stringPrimitiveTypeHandler.canHandle()); + StringHandler stringHandler = new StringHandler(fieldDescriptor); + assertTrue(stringHandler.canHandle()); } @Test public void shouldNotHandleTypesOtherThanString() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("service_type"); - StringPrimitiveTypeHandler stringPrimitiveTypeHandler = new StringPrimitiveTypeHandler(fieldDescriptor); - assertFalse(stringPrimitiveTypeHandler.canHandle()); + StringHandler stringHandler = new StringHandler(fieldDescriptor); + assertFalse(stringHandler.canHandle()); } @Test @@ -39,8 +39,8 @@ public void shouldFetchValueForFieldForFieldDescriptorOfTypeString() { String actualValue = "test"; Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - StringPrimitiveTypeHandler stringPrimitiveTypeHandler = new StringPrimitiveTypeHandler(fieldDescriptor); - Object value = stringPrimitiveTypeHandler.parseObject(actualValue); + StringHandler stringHandler = new StringHandler(fieldDescriptor); + Object value = stringHandler.parseObject(actualValue); assertEquals(actualValue, value); } @@ -50,8 +50,8 @@ public void shouldFetchParsedValueForFieldForFieldDescriptorOfTypeString() { Integer actualValue = 23; Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - StringPrimitiveTypeHandler stringPrimitiveTypeHandler = new StringPrimitiveTypeHandler(fieldDescriptor); - Object value = stringPrimitiveTypeHandler.parseObject(actualValue); + StringHandler stringHandler = new StringHandler(fieldDescriptor); + Object value = stringHandler.parseObject(actualValue); assertEquals("23", value); } @@ -59,8 +59,8 @@ public void shouldFetchParsedValueForFieldForFieldDescriptorOfTypeString() { @Test public void shouldFetchDefaultValueIfValueNotPresentForFieldDescriptorOfTypeString() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - StringPrimitiveTypeHandler stringPrimitiveTypeHandler = new StringPrimitiveTypeHandler(fieldDescriptor); - Object value = stringPrimitiveTypeHandler.parseObject(null); + StringHandler stringHandler = new StringHandler(fieldDescriptor); + Object value = stringHandler.parseObject(null); assertEquals("", value); } @@ -68,31 +68,31 @@ public void shouldFetchDefaultValueIfValueNotPresentForFieldDescriptorOfTypeStri @Test public void shouldReturnTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - StringPrimitiveTypeHandler stringPrimitiveTypeHandler = new StringPrimitiveTypeHandler(fieldDescriptor); - assertEquals(Types.STRING, stringPrimitiveTypeHandler.getTypeInformation()); + StringHandler stringHandler = new StringHandler(fieldDescriptor); + assertEquals(Types.STRING, stringHandler.getTypeInformation()); } @Test public void shouldReturnArrayTypeInformation() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - StringPrimitiveTypeHandler stringPrimitiveTypeHandler = new StringPrimitiveTypeHandler(fieldDescriptor); - assertEquals(ObjectArrayTypeInfo.getInfoFor(Types.STRING), stringPrimitiveTypeHandler.getArrayType()); + StringHandler stringHandler = new StringHandler(fieldDescriptor); + assertEquals(ObjectArrayTypeInfo.getInfoFor(Types.STRING), stringHandler.getArrayType()); } @Test public void shouldReturnArrayValues() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - StringPrimitiveTypeHandler stringPrimitiveTypeHandler = new StringPrimitiveTypeHandler(fieldDescriptor); + StringHandler stringHandler = new StringHandler(fieldDescriptor); ArrayList inputValues = new ArrayList<>(Arrays.asList("1", "2", "3")); - Object actualValues = stringPrimitiveTypeHandler.getArray(inputValues); + Object actualValues = stringHandler.getArray(inputValues); assertArrayEquals(inputValues.toArray(), (String[]) actualValues); } @Test public void shouldReturnEmptyArrayOnNull() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - StringPrimitiveTypeHandler stringPrimitiveTypeHandler = new StringPrimitiveTypeHandler(fieldDescriptor); - Object actualValues = stringPrimitiveTypeHandler.getArray(null); + StringHandler stringHandler = new StringHandler(fieldDescriptor); + Object actualValues = stringHandler.getArray(null); assertEquals(0, ((String[]) actualValues).length); } @@ -104,7 +104,7 @@ public void shouldFetchParsedValueForFieldOfTypeStringInSimpleGroup() { .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); simpleGroup.add("order_number", "some-value"); - StringPrimitiveTypeHandler stringHandler = new StringPrimitiveTypeHandler(fieldDescriptor); + StringHandler stringHandler = new StringHandler(fieldDescriptor); Object actualValue = stringHandler.parseSimpleGroup(simpleGroup); @@ -118,7 +118,7 @@ public void shouldFetchDefaultValueIfFieldNotPresentInSimpleGroup() { .required(BINARY).named("some-other-field") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - StringPrimitiveTypeHandler stringHandler = new StringPrimitiveTypeHandler(fieldDescriptor); + StringHandler stringHandler = new StringHandler(fieldDescriptor); Object actualValue = stringHandler.parseSimpleGroup(simpleGroup); @@ -133,7 +133,7 @@ public void shouldFetchDefaultValueIfFieldNotInitializedWithAValueInSimpleGroup( .required(BINARY).named("order_number") .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); - StringPrimitiveTypeHandler stringHandler = new StringPrimitiveTypeHandler(fieldDescriptor); + StringHandler stringHandler = new StringHandler(fieldDescriptor); Object actualValue = stringHandler.parseSimpleGroup(simpleGroup); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedEnumProtoHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedEnumHandlerTest.java similarity index 66% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedEnumProtoHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedEnumHandlerTest.java index d159f2a45..1ff507198 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedEnumProtoHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedEnumHandlerTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.repeated; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; @@ -19,45 +19,45 @@ import static org.junit.Assert.*; -public class RepeatedEnumProtoHandlerTest { +public class RepeatedEnumHandlerTest { @Test public void shouldReturnTrueIfRepeatedEnumFieldDescriptorIsPassed() { Descriptors.FieldDescriptor repeatedEnumFieldDescriptor = TestRepeatedEnumMessage.getDescriptor().findFieldByName("test_enums"); - RepeatedEnumProtoHandler repeatedEnumProtoHandler = new RepeatedEnumProtoHandler(repeatedEnumFieldDescriptor); + RepeatedEnumHandler repeatedEnumHandler = new RepeatedEnumHandler(repeatedEnumFieldDescriptor); - assertTrue(repeatedEnumProtoHandler.canHandle()); + assertTrue(repeatedEnumHandler.canHandle()); } @Test public void shouldReturnFalseIfEnumFieldDescriptorIsPassed() { Descriptors.FieldDescriptor enumFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("service_type"); - RepeatedEnumProtoHandler repeatedEnumProtoHandler = new RepeatedEnumProtoHandler(enumFieldDescriptor); + RepeatedEnumHandler repeatedEnumHandler = new RepeatedEnumHandler(enumFieldDescriptor); - assertFalse(repeatedEnumProtoHandler.canHandle()); + assertFalse(repeatedEnumHandler.canHandle()); } @Test public void shouldReturnFalseIfFieldDescriptorOtherThanRepeatedEnumTypeIsPassed() { Descriptors.FieldDescriptor otherFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - RepeatedEnumProtoHandler repeatedEnumProtoHandler = new RepeatedEnumProtoHandler(otherFieldDescriptor); + RepeatedEnumHandler repeatedEnumHandler = new RepeatedEnumHandler(otherFieldDescriptor); - assertFalse(repeatedEnumProtoHandler.canHandle()); + assertFalse(repeatedEnumHandler.canHandle()); } @Test public void shouldReturnTheSameBuilderWithoutSettingAnyValue() { Descriptors.FieldDescriptor repeatedEnumFieldDescriptor = TestRepeatedEnumMessage.getDescriptor().findFieldByName("test_enums"); - RepeatedEnumProtoHandler repeatedEnumProtoHandler = new RepeatedEnumProtoHandler(repeatedEnumFieldDescriptor); + RepeatedEnumHandler repeatedEnumHandler = new RepeatedEnumHandler(repeatedEnumFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(repeatedEnumFieldDescriptor.getContainingType()); - assertEquals(Collections.EMPTY_LIST, repeatedEnumProtoHandler.transformToProtoBuilder(builder, 123).getField(repeatedEnumFieldDescriptor)); + assertEquals(Collections.EMPTY_LIST, repeatedEnumHandler.transformToProtoBuilder(builder, 123).getField(repeatedEnumFieldDescriptor)); } @Test public void shouldReturnTypeInformation() { Descriptors.FieldDescriptor repeatedEnumFieldDescriptor = TestRepeatedEnumMessage.getDescriptor().findFieldByName("test_enums"); - RepeatedEnumProtoHandler repeatedEnumProtoHandler = new RepeatedEnumProtoHandler(repeatedEnumFieldDescriptor); - TypeInformation actualTypeInformation = repeatedEnumProtoHandler.getTypeInformation(); + RepeatedEnumHandler repeatedEnumHandler = new RepeatedEnumHandler(repeatedEnumFieldDescriptor); + TypeInformation actualTypeInformation = repeatedEnumHandler.getTypeInformation(); TypeInformation expectedTypeInformation = ObjectArrayTypeInfo.getInfoFor(Types.STRING); assertEquals(expectedTypeInformation, actualTypeInformation); } @@ -69,9 +69,9 @@ public void shouldTransformValueForPostProcessorAsStringArray() { inputValues.add("test2"); Descriptors.FieldDescriptor repeatedEnumFieldDescriptor = TestRepeatedEnumMessage.getDescriptor().findFieldByName("test_enums"); - RepeatedEnumProtoHandler repeatedEnumProtoHandler = new RepeatedEnumProtoHandler(repeatedEnumFieldDescriptor); + RepeatedEnumHandler repeatedEnumHandler = new RepeatedEnumHandler(repeatedEnumFieldDescriptor); - String[] outputValues = (String[]) repeatedEnumProtoHandler.transformFromPostProcessor(inputValues); + String[] outputValues = (String[]) repeatedEnumHandler.transformFromPostProcessor(inputValues); assertEquals(inputValues.get(0), outputValues[0]); assertEquals(inputValues.get(1), outputValues[1]); @@ -80,9 +80,9 @@ public void shouldTransformValueForPostProcessorAsStringArray() { @Test public void shouldTransformValueForPostProcessorAsEmptyStringArrayForNull() { Descriptors.FieldDescriptor repeatedEnumFieldDescriptor = TestRepeatedEnumMessage.getDescriptor().findFieldByName("test_enums"); - RepeatedEnumProtoHandler repeatedEnumProtoHandler = new RepeatedEnumProtoHandler(repeatedEnumFieldDescriptor); + RepeatedEnumHandler repeatedEnumHandler = new RepeatedEnumHandler(repeatedEnumFieldDescriptor); - String[] outputValues = (String[]) repeatedEnumProtoHandler.transformFromPostProcessor(null); + String[] outputValues = (String[]) repeatedEnumHandler.transformFromPostProcessor(null); assertEquals(0, outputValues.length); } @@ -93,9 +93,9 @@ public void shouldTransformValueForKafkaAsStringArray() throws InvalidProtocolBu DynamicMessage dynamicMessage = DynamicMessage.parseFrom(TestRepeatedEnumMessage.getDescriptor(), testRepeatedEnumMessage.toByteArray()); Descriptors.FieldDescriptor repeatedEnumFieldDescriptor = TestRepeatedEnumMessage.getDescriptor().findFieldByName("test_enums"); - RepeatedEnumProtoHandler repeatedEnumProtoHandler = new RepeatedEnumProtoHandler(repeatedEnumFieldDescriptor); + RepeatedEnumHandler repeatedEnumHandler = new RepeatedEnumHandler(repeatedEnumFieldDescriptor); - String[] outputValues = (String[]) repeatedEnumProtoHandler.transformFromProto(dynamicMessage.getField(repeatedEnumFieldDescriptor)); + String[] outputValues = (String[]) repeatedEnumHandler.transformFromProto(dynamicMessage.getField(repeatedEnumFieldDescriptor)); assertEquals("UNKNOWN", outputValues[0]); } @@ -103,9 +103,9 @@ public void shouldTransformValueForKafkaAsStringArray() throws InvalidProtocolBu @Test public void shouldTransformValueForKafkaAsEmptyStringArrayForNull() { Descriptors.FieldDescriptor repeatedEnumFieldDescriptor = TestRepeatedEnumMessage.getDescriptor().findFieldByName("test_enums"); - RepeatedEnumProtoHandler repeatedEnumProtoHandler = new RepeatedEnumProtoHandler(repeatedEnumFieldDescriptor); + RepeatedEnumHandler repeatedEnumHandler = new RepeatedEnumHandler(repeatedEnumFieldDescriptor); - String[] outputValues = (String[]) repeatedEnumProtoHandler.transformFromProto(null); + String[] outputValues = (String[]) repeatedEnumHandler.transformFromProto(null); assertEquals(0, outputValues.length); } @@ -113,7 +113,7 @@ public void shouldTransformValueForKafkaAsEmptyStringArrayForNull() { @Test public void shouldReturnNullWhenTransformFromParquetIsCalledWithAnyArgument() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("test_enums"); - RepeatedEnumProtoHandler protoHandler = new RepeatedEnumProtoHandler(fieldDescriptor); + RepeatedEnumHandler protoHandler = new RepeatedEnumHandler(fieldDescriptor); GroupType parquetSchema = org.apache.parquet.schema.Types.requiredGroup() .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedMessageProtoHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedMessageHandlerTest.java similarity index 83% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedMessageProtoHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedMessageHandlerTest.java index 9aab6d6bf..f20a2e43f 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedMessageProtoHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedMessageHandlerTest.java @@ -1,5 +1,6 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.repeated; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.types.Row; @@ -23,20 +24,20 @@ import static org.apache.flink.api.common.typeinfo.Types.STRING; import static org.junit.Assert.*; -public class RepeatedMessageProtoHandlerTest { +public class RepeatedMessageHandlerTest { @Test public void shouldReturnTrueIfRepeatedMessageFieldDescriptorIsPassed() { Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestFeedbackLogMessage.getDescriptor().findFieldByName("reason"); - RepeatedMessageProtoHandler repeatedMessageProtoHandler = new RepeatedMessageProtoHandler(repeatedMessageFieldDescriptor); + RepeatedMessageHandler repeatedMessageHandler = new RepeatedMessageHandler(repeatedMessageFieldDescriptor); - assertTrue(repeatedMessageProtoHandler.canHandle()); + assertTrue(repeatedMessageHandler.canHandle()); } @Test public void shouldReturnFalseIfFieldDescriptorOtherThanRepeatedMessageTypeIsPassed() { Descriptors.FieldDescriptor otherFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - RepeatedMessageProtoHandler repeatedMesssageProtoHandler = new RepeatedMessageProtoHandler(otherFieldDescriptor); + RepeatedMessageHandler repeatedMesssageProtoHandler = new RepeatedMessageHandler(otherFieldDescriptor); assertFalse(repeatedMesssageProtoHandler.canHandle()); } @@ -44,7 +45,7 @@ public void shouldReturnFalseIfFieldDescriptorOtherThanRepeatedMessageTypeIsPass @Test public void shouldReturnTheSameBuilderWithoutSettingFieldIfCanNotHandle() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - RepeatedMessageProtoHandler repeatedMesssageProtoHandler = new RepeatedMessageProtoHandler(fieldDescriptor); + RepeatedMessageHandler repeatedMesssageProtoHandler = new RepeatedMessageHandler(fieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(fieldDescriptor.getContainingType()); assertEquals(builder, repeatedMesssageProtoHandler.transformToProtoBuilder(builder, 123)); @@ -54,7 +55,7 @@ public void shouldReturnTheSameBuilderWithoutSettingFieldIfCanNotHandle() { @Test public void shouldReturnTheSameBuilderWithoutSettingFieldIfNullPassed() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - RepeatedMessageProtoHandler repeatedMesssageProtoHandler = new RepeatedMessageProtoHandler(fieldDescriptor); + RepeatedMessageHandler repeatedMesssageProtoHandler = new RepeatedMessageHandler(fieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(fieldDescriptor.getContainingType()); DynamicMessage.Builder outputBuilder = repeatedMesssageProtoHandler.transformToProtoBuilder(builder, null); @@ -65,7 +66,7 @@ public void shouldReturnTheSameBuilderWithoutSettingFieldIfNullPassed() { @Test public void shouldSetTheFieldsPassedInTheBuilderForRepeatedMessageFieldTypeDescriptor() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestFeedbackLogMessage.getDescriptor().findFieldByName("reason"); - RepeatedMessageProtoHandler repeatedMessageProtoHandler = new RepeatedMessageProtoHandler(repeatedMessageFieldDescriptor); + RepeatedMessageHandler repeatedMessageHandler = new RepeatedMessageHandler(repeatedMessageFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(repeatedMessageFieldDescriptor.getContainingType()); Row inputRow1 = new Row(2); @@ -80,7 +81,7 @@ public void shouldSetTheFieldsPassedInTheBuilderForRepeatedMessageFieldTypeDescr inputRows.add(inputRow1); inputRows.add(inputRow2); - DynamicMessage.Builder returnedBuilder = repeatedMessageProtoHandler.transformToProtoBuilder(builder, inputRows.toArray()); + DynamicMessage.Builder returnedBuilder = repeatedMessageHandler.transformToProtoBuilder(builder, inputRows.toArray()); List reasons = (List) returnedBuilder.getField(repeatedMessageFieldDescriptor); @@ -96,7 +97,7 @@ public void shouldSetTheFieldsPassedInTheBuilderForRepeatedMessageFieldTypeDescr @Test public void shouldSetTheFieldsPassedInTheBuilderForRepeatedMessageFieldTypeDescriptorIfInputIsList() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestFeedbackLogMessage.getDescriptor().findFieldByName("reason"); - RepeatedMessageProtoHandler repeatedMesssageProtoHandler = new RepeatedMessageProtoHandler(repeatedMessageFieldDescriptor); + RepeatedMessageHandler repeatedMesssageProtoHandler = new RepeatedMessageHandler(repeatedMessageFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(repeatedMessageFieldDescriptor.getContainingType()); Row inputRow1 = new Row(2); @@ -130,7 +131,7 @@ public void shouldSetTheFieldsPassedInTheBuilderForRepeatedMessageFieldTypeDescr @Test public void shouldSetTheFieldsNotPassedInTheBuilderForRepeatedMessageFieldTypeDescriptorToDefaults() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestFeedbackLogMessage.getDescriptor().findFieldByName("reason"); - RepeatedMessageProtoHandler repeatedMesssageProtoHandler = new RepeatedMessageProtoHandler(repeatedMessageFieldDescriptor); + RepeatedMessageHandler repeatedMesssageProtoHandler = new RepeatedMessageHandler(repeatedMessageFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(repeatedMessageFieldDescriptor.getContainingType()); Row inputRow1 = new Row(2); @@ -162,7 +163,7 @@ public void shouldSetTheFieldsNotPassedInTheBuilderForRepeatedMessageFieldTypeDe @Test public void shouldReturnEmptyArrayOfRowsIfNullPassedForPostProcessorTransform() { Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestFeedbackLogMessage.getDescriptor().findFieldByName("reason"); - Object[] values = (Object[]) ProtoHandlerFactory.getProtoHandler(repeatedMessageFieldDescriptor).transformFromPostProcessor(null); + Object[] values = (Object[]) TypeHandlerFactory.getTypeHandler(repeatedMessageFieldDescriptor).transformFromPostProcessor(null); assertEquals(0, values.length); } @@ -184,7 +185,7 @@ public void shouldReturnArrayOfRowsGivenAListForFieldDescriptorOfTypeRepeatedMes Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestFeedbackLogMessage.getDescriptor().findFieldByName("reason"); - Object[] values = (Object[]) ProtoHandlerFactory.getProtoHandler(repeatedMessageFieldDescriptor).transformFromPostProcessor(jsonArray); + Object[] values = (Object[]) TypeHandlerFactory.getTypeHandler(repeatedMessageFieldDescriptor).transformFromPostProcessor(jsonArray); assertEquals(repeatedMessageFieldDescriptor.getMessageType().getFields().size(), ((Row) values[0]).getArity()); assertEquals(repeatedMessageFieldDescriptor.getMessageType().getFields().size(), ((Row) values[1]).getArity()); @@ -207,7 +208,7 @@ public void shouldReturnArrayOfRowsGivenAListForFieldDescriptorOfTypeRepeatedMes Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestFeedbackLogMessage.getDescriptor().findFieldByName("reason"); - Object[] values = (Object[]) ProtoHandlerFactory.getProtoHandler(repeatedMessageFieldDescriptor).transformFromPostProcessor(jsonArray); + Object[] values = (Object[]) TypeHandlerFactory.getTypeHandler(repeatedMessageFieldDescriptor).transformFromPostProcessor(jsonArray); assertEquals("reason1", ((Row) values[0]).getField(0)); assertEquals("group1", ((Row) values[0]).getField(1)); @@ -230,7 +231,7 @@ public void shouldReturnArrayOfRowsGivenAListForFieldDescriptorOfTypeRepeatedMes Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestFeedbackLogMessage.getDescriptor().findFieldByName("reason"); - Object[] values = (Object[]) ProtoHandlerFactory.getProtoHandler(repeatedMessageFieldDescriptor).transformFromPostProcessor(jsonArray); + Object[] values = (Object[]) TypeHandlerFactory.getTypeHandler(repeatedMessageFieldDescriptor).transformFromPostProcessor(jsonArray); assertEquals("reason1", ((Row) values[0]).getField(0)); assertEquals("group1", ((Row) values[0]).getField(1)); @@ -240,7 +241,7 @@ public void shouldReturnArrayOfRowsGivenAListForFieldDescriptorOfTypeRepeatedMes public void shouldReturnEmptyArrayOfRowsIfNullPassedForKafkaTransform() { Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestFeedbackLogMessage.getDescriptor().findFieldByName("reason"); - Object[] values = (Object[]) new RepeatedMessageProtoHandler(repeatedMessageFieldDescriptor).transformFromProto(null); + Object[] values = (Object[]) new RepeatedMessageHandler(repeatedMessageFieldDescriptor).transformFromProto(null); assertEquals(0, values.length); } @@ -256,7 +257,7 @@ public void shouldReturnArrayOfRowsGivenAListForFieldDescriptorOfTypeRepeatedMes Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestFeedbackLogMessage.getDescriptor().findFieldByName("reason"); - Object[] values = (Object[]) new RepeatedMessageProtoHandler(repeatedMessageFieldDescriptor).transformFromProto(dynamicMessage.getField(repeatedMessageFieldDescriptor)); + Object[] values = (Object[]) new RepeatedMessageHandler(repeatedMessageFieldDescriptor).transformFromProto(dynamicMessage.getField(repeatedMessageFieldDescriptor)); assertEquals(repeatedMessageFieldDescriptor.getMessageType().getFields().size(), ((Row) values[0]).getArity()); assertEquals(repeatedMessageFieldDescriptor.getMessageType().getFields().size(), ((Row) values[1]).getArity()); @@ -270,8 +271,8 @@ public void shouldReturnArrayOfRowsGivenAListForFieldDescriptorOfTypeRepeatedMes @Test public void shouldReturnTypeInformation() { Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestFeedbackLogMessage.getDescriptor().findFieldByName("reason"); - RepeatedMessageProtoHandler repeatedMessageProtoHandler = new RepeatedMessageProtoHandler(repeatedMessageFieldDescriptor); - TypeInformation actualTypeInformation = repeatedMessageProtoHandler.getTypeInformation(); + RepeatedMessageHandler repeatedMessageHandler = new RepeatedMessageHandler(repeatedMessageFieldDescriptor); + TypeInformation actualTypeInformation = repeatedMessageHandler.getTypeInformation(); TypeInformation expectedTypeInformation = OBJECT_ARRAY(ROW_NAMED(new String[]{"reason_id", "group_id"}, STRING, STRING)); assertEquals(expectedTypeInformation, actualTypeInformation); } @@ -292,14 +293,14 @@ public void shouldConvertRepeatedComplexRowDataToJsonString() { inputRows[0] = inputRow1; inputRows[1] = inputRow2; - Object value = new RepeatedMessageProtoHandler(repeatedMessageFieldDescriptor).transformToJson(inputRows); + Object value = new RepeatedMessageHandler(repeatedMessageFieldDescriptor).transformToJson(inputRows); assertEquals("[{\"reason_id\":\"reason1\",\"group_id\":\"group1\"}, {\"reason_id\":\"reason2\",\"group_id\":\"group2\"}]", String.valueOf(value)); } @Test public void shouldReturnNullWhenTransformFromParquetIsCalledWithAnyArgument() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("reason"); - RepeatedMessageProtoHandler protoHandler = new RepeatedMessageProtoHandler(fieldDescriptor); + RepeatedMessageHandler protoHandler = new RepeatedMessageHandler(fieldDescriptor); GroupType parquetSchema = org.apache.parquet.schema.Types.requiredGroup() .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedPrimitiveProtoHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedPrimitiveHandlerTest.java similarity index 73% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedPrimitiveProtoHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedPrimitiveHandlerTest.java index e69550994..cc340356f 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedPrimitiveProtoHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedPrimitiveHandlerTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.repeated; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; @@ -22,57 +22,57 @@ import static java.util.Arrays.asList; import static org.junit.Assert.*; -public class RepeatedPrimitiveProtoHandlerTest { +public class RepeatedPrimitiveHandlerTest { @Test public void shouldReturnTrueIfRepeatedPrimitiveFieldDescriptorIsPassed() { Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("meta_array"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedFieldDescriptor); - assertTrue(repeatedPrimitiveProtoHandler.canHandle()); + assertTrue(repeatedPrimitiveHandler.canHandle()); } @Test public void shouldReturnFalseIfRepeatedMessageFieldDescriptorIsPassed() { Descriptors.FieldDescriptor repeatedMessageFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("routes"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedMessageFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedMessageFieldDescriptor); - assertFalse(repeatedPrimitiveProtoHandler.canHandle()); + assertFalse(repeatedPrimitiveHandler.canHandle()); } @Test public void shouldReturnFalseIfRepeatedEnumFieldDescriptorIsPassed() { Descriptors.FieldDescriptor repeatedEnumFieldDescriptor = TestRepeatedEnumMessage.getDescriptor().findFieldByName("test_enums"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedEnumFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedEnumFieldDescriptor); - assertFalse(repeatedPrimitiveProtoHandler.canHandle()); + assertFalse(repeatedPrimitiveHandler.canHandle()); } @Test public void shouldReturnFalseIfFieldDescriptorOtherThanTypeIsPassed() { Descriptors.FieldDescriptor otherFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(otherFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(otherFieldDescriptor); - assertFalse(repeatedPrimitiveProtoHandler.canHandle()); + assertFalse(repeatedPrimitiveHandler.canHandle()); } @Test public void shouldReturnSameBuilderWithoutSettingFieldIfCannotHandle() { Descriptors.FieldDescriptor otherFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("order_number"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(otherFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(otherFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(otherFieldDescriptor.getContainingType()); - DynamicMessage.Builder returnedBuilder = repeatedPrimitiveProtoHandler.transformToProtoBuilder(builder, "123"); + DynamicMessage.Builder returnedBuilder = repeatedPrimitiveHandler.transformToProtoBuilder(builder, "123"); assertEquals("", returnedBuilder.getField(otherFieldDescriptor)); } @Test public void shouldReturnSameBuilderWithoutSettingFieldIfNullFieldIsPassed() { Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("meta_array"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(repeatedFieldDescriptor.getContainingType()); - DynamicMessage.Builder returnedBuilder = repeatedPrimitiveProtoHandler.transformToProtoBuilder(builder, null); + DynamicMessage.Builder returnedBuilder = repeatedPrimitiveHandler.transformToProtoBuilder(builder, null); List outputValues = (List) returnedBuilder.getField(repeatedFieldDescriptor); assertEquals(0, outputValues.size()); } @@ -80,12 +80,12 @@ public void shouldReturnSameBuilderWithoutSettingFieldIfNullFieldIsPassed() { @Test public void shouldSetEmptyListInBuilderIfEmptyListIfPassed() { Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("meta_array"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(repeatedFieldDescriptor.getContainingType()); ArrayList inputValues = new ArrayList<>(); - DynamicMessage.Builder returnedBuilder = repeatedPrimitiveProtoHandler.transformToProtoBuilder(builder, inputValues); + DynamicMessage.Builder returnedBuilder = repeatedPrimitiveHandler.transformToProtoBuilder(builder, inputValues); List outputValues = (List) returnedBuilder.getField(repeatedFieldDescriptor); assertEquals(0, outputValues.size()); } @@ -93,14 +93,14 @@ public void shouldSetEmptyListInBuilderIfEmptyListIfPassed() { @Test public void shouldSetFieldPassedInTheBuilderAsAList() { Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("meta_array"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(repeatedFieldDescriptor.getContainingType()); ArrayList inputValues = new ArrayList<>(); inputValues.add("test1"); inputValues.add("test2"); - DynamicMessage.Builder returnedBuilder = repeatedPrimitiveProtoHandler.transformToProtoBuilder(builder, inputValues); + DynamicMessage.Builder returnedBuilder = repeatedPrimitiveHandler.transformToProtoBuilder(builder, inputValues); List outputValues = (List) returnedBuilder.getField(repeatedFieldDescriptor); assertEquals(asList("test1", "test2"), outputValues); } @@ -108,14 +108,14 @@ public void shouldSetFieldPassedInTheBuilderAsAList() { @Test public void shouldSetFieldPassedInTheBuilderAsArray() { Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("meta_array"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(repeatedFieldDescriptor.getContainingType()); ArrayList inputValues = new ArrayList<>(); inputValues.add("test1"); inputValues.add("test2"); - DynamicMessage.Builder returnedBuilder = repeatedPrimitiveProtoHandler.transformToProtoBuilder(builder, inputValues.toArray()); + DynamicMessage.Builder returnedBuilder = repeatedPrimitiveHandler.transformToProtoBuilder(builder, inputValues.toArray()); List outputValues = (List) returnedBuilder.getField(repeatedFieldDescriptor); assertEquals(asList("test1", "test2"), outputValues); } @@ -123,12 +123,12 @@ public void shouldSetFieldPassedInTheBuilderAsArray() { @Test public void shouldReturnArrayOfObjectsWithTypeSameAsFieldDescriptorForPostProcessorTransform() { Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("meta_array"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedFieldDescriptor); ArrayList inputValues = new ArrayList<>(); inputValues.add(1); - List outputValues = (List) repeatedPrimitiveProtoHandler.transformFromPostProcessor(inputValues); + List outputValues = (List) repeatedPrimitiveHandler.transformFromPostProcessor(inputValues); assertEquals(String.class, outputValues.get(0).getClass()); } @@ -136,11 +136,11 @@ public void shouldReturnArrayOfObjectsWithTypeSameAsFieldDescriptorForPostProces @Test public void shouldReturnEmptyArrayOfObjectsIfEmptyListPassedForPostProcessorTransform() { Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("favourite_service_provider_guids"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedFieldDescriptor); ArrayList inputValues = new ArrayList<>(); - List outputValues = (List) repeatedPrimitiveProtoHandler.transformFromPostProcessor(inputValues); + List outputValues = (List) repeatedPrimitiveHandler.transformFromPostProcessor(inputValues); assertEquals(0, outputValues.size()); } @@ -148,9 +148,9 @@ public void shouldReturnEmptyArrayOfObjectsIfEmptyListPassedForPostProcessorTran @Test public void shouldReturnEmptyArrayOfObjectsIfNullPassedForPostProcessorTransform() { Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("favourite_service_provider_guids"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedFieldDescriptor); - List outputValues = (List) repeatedPrimitiveProtoHandler.transformFromPostProcessor(null); + List outputValues = (List) repeatedPrimitiveHandler.transformFromPostProcessor(null); assertEquals(0, outputValues.size()); } @@ -158,14 +158,14 @@ public void shouldReturnEmptyArrayOfObjectsIfNullPassedForPostProcessorTransform @Test public void shouldReturnAllFieldsInAListOfObjectsIfMultipleFieldsPassedWithSameTypeAsFieldDescriptorForPostProcessorTransform() { Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("meta_array"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedFieldDescriptor); ArrayList inputValues = new ArrayList<>(); inputValues.add(1); inputValues.add(2); inputValues.add(3); - List outputValues = (List) repeatedPrimitiveProtoHandler.transformFromPostProcessor(inputValues); + List outputValues = (List) repeatedPrimitiveHandler.transformFromPostProcessor(inputValues); assertEquals(asList("1", "2", "3"), outputValues); } @@ -173,29 +173,29 @@ public void shouldReturnAllFieldsInAListOfObjectsIfMultipleFieldsPassedWithSameT @Test public void shouldThrowExceptionIfFieldDesciptorTypeNotSupportedForPostProcessorTransform() { Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("routes"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedFieldDescriptor); ArrayList inputValues = new ArrayList<>(); inputValues.add("test"); DataTypeNotSupportedException exception = Assert.assertThrows(DataTypeNotSupportedException.class, - () -> repeatedPrimitiveProtoHandler.transformFromPostProcessor(inputValues)); + () -> repeatedPrimitiveHandler.transformFromPostProcessor(inputValues)); assertEquals("Data type MESSAGE not supported in primitive type handlers", exception.getMessage()); } @Test public void shouldThrowInvalidDataTypeExceptionInCaseOfTypeMismatchForPostProcessorTransform() { Descriptors.FieldDescriptor repeatedFloatFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("int_array_field"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedFloatFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedFloatFieldDescriptor); ArrayList inputValues = new ArrayList<>(); inputValues.add("test"); InvalidDataTypeException exception = Assert.assertThrows(InvalidDataTypeException.class, - () -> repeatedPrimitiveProtoHandler.transformFromPostProcessor(inputValues)); + () -> repeatedPrimitiveHandler.transformFromPostProcessor(inputValues)); assertEquals("type mismatch of field: int_array_field, expecting INT32 type, actual type class java.lang.String", exception.getMessage()); } @Test public void shouldReturnAllFieldsInAListOfObjectsIfMultipleFieldsPassedWithSameTypeAsFieldDescriptorForKafkaTransform() throws InvalidProtocolBufferException { Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("meta_array"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedFieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedFieldDescriptor); TestBookingLogMessage goLifeBookingLogMessage = TestBookingLogMessage .newBuilder() @@ -205,7 +205,7 @@ public void shouldReturnAllFieldsInAListOfObjectsIfMultipleFieldsPassedWithSameT .build(); DynamicMessage dynamicMessage = DynamicMessage.parseFrom(TestBookingLogMessage.getDescriptor(), goLifeBookingLogMessage.toByteArray()); - String[] outputValues = (String[]) repeatedPrimitiveProtoHandler.transformFromProto(dynamicMessage.getField(repeatedFieldDescriptor)); + String[] outputValues = (String[]) repeatedPrimitiveHandler.transformFromProto(dynamicMessage.getField(repeatedFieldDescriptor)); assertArrayEquals(new String[]{"1", "2", "3"}, outputValues); } @@ -213,17 +213,17 @@ public void shouldReturnAllFieldsInAListOfObjectsIfMultipleFieldsPassedWithSameT @Test public void shouldThrowUnsupportedDataTypeExceptionInCaseOfInCaseOfEnumForKafkaTransform() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("status"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(fieldDescriptor); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(fieldDescriptor); DataTypeNotSupportedException exception = Assert.assertThrows(DataTypeNotSupportedException.class, - () -> repeatedPrimitiveProtoHandler.transformFromProto("CREATED")); + () -> repeatedPrimitiveHandler.transformFromProto("CREATED")); assertEquals("Data type ENUM not supported in primitive type handlers", exception.getMessage()); } @Test public void shouldReturnTypeInformation() { Descriptors.FieldDescriptor repeatedFieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("meta_array"); - RepeatedPrimitiveProtoHandler repeatedPrimitiveProtoHandler = new RepeatedPrimitiveProtoHandler(repeatedFieldDescriptor); - TypeInformation actualTypeInformation = repeatedPrimitiveProtoHandler.getTypeInformation(); + RepeatedPrimitiveHandler repeatedPrimitiveHandler = new RepeatedPrimitiveHandler(repeatedFieldDescriptor); + TypeInformation actualTypeInformation = repeatedPrimitiveHandler.getTypeInformation(); TypeInformation expectedTypeInformation = ObjectArrayTypeInfo.getInfoFor(Types.STRING); assertEquals(expectedTypeInformation, actualTypeInformation); } @@ -235,14 +235,14 @@ public void shouldConvertRepeatedRowDataToJsonString() { inputValues.add("test1"); inputValues.add("test2"); - Object value = new RepeatedPrimitiveProtoHandler(repeatedFieldDescriptor).transformToJson(inputValues); + Object value = new RepeatedPrimitiveHandler(repeatedFieldDescriptor).transformToJson(inputValues); assertEquals("[\"test1\",\"test2\"]", String.valueOf(value)); } @Test public void shouldReturnNullWhenTransformFromParquetIsCalledWithAnyArgument() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("meta_array"); - RepeatedPrimitiveProtoHandler protoHandler = new RepeatedPrimitiveProtoHandler(fieldDescriptor); + RepeatedPrimitiveHandler protoHandler = new RepeatedPrimitiveHandler(fieldDescriptor); GroupType parquetSchema = org.apache.parquet.schema.Types.requiredGroup() .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); diff --git a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedStructMessageProtoHandlerTest.java b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedStructMessageHandlerTest.java similarity index 64% rename from dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedStructMessageProtoHandlerTest.java rename to dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedStructMessageHandlerTest.java index a45982726..55b55ae08 100644 --- a/dagger-common/src/test/java/io/odpf/dagger/common/serde/proto/protohandler/RepeatedStructMessageProtoHandlerTest.java +++ b/dagger-common/src/test/java/io/odpf/dagger/common/serde/typehandler/repeated/RepeatedStructMessageHandlerTest.java @@ -1,4 +1,4 @@ -package io.odpf.dagger.common.serde.proto.protohandler; +package io.odpf.dagger.common.serde.typehandler.repeated; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; @@ -19,56 +19,56 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -public class RepeatedStructMessageProtoHandlerTest { +public class RepeatedStructMessageHandlerTest { @Test public void shouldReturnTrueForCanHandleForRepeatedRepeatedStructFieldDescriptor() { Descriptors.FieldDescriptor repeatedStructFieldDescriptor = TestNestedRepeatedMessage.getDescriptor().findFieldByName("metadata"); - RepeatedStructMessageProtoHandler repeatedStructMessageProtoHandler = new RepeatedStructMessageProtoHandler(repeatedStructFieldDescriptor); - assertTrue(repeatedStructMessageProtoHandler.canHandle()); + RepeatedStructMessageHandler repeatedStructMessageHandler = new RepeatedStructMessageHandler(repeatedStructFieldDescriptor); + assertTrue(repeatedStructMessageHandler.canHandle()); } @Test public void shouldReturnFalseForCanHandleForStructFieldDescriptor() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("profile_data"); - RepeatedStructMessageProtoHandler repeatedStructMessageProtoHandler = new RepeatedStructMessageProtoHandler(fieldDescriptor); - assertFalse(repeatedStructMessageProtoHandler.canHandle()); + RepeatedStructMessageHandler repeatedStructMessageHandler = new RepeatedStructMessageHandler(fieldDescriptor); + assertFalse(repeatedStructMessageHandler.canHandle()); } @Test public void shouldReturnFalseForCanHandleForMessageFieldDescriptor() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("driver_pickup_location"); - RepeatedStructMessageProtoHandler repeatedStructMessageProtoHandler = new RepeatedStructMessageProtoHandler(fieldDescriptor); - assertFalse(repeatedStructMessageProtoHandler.canHandle()); + RepeatedStructMessageHandler repeatedStructMessageHandler = new RepeatedStructMessageHandler(fieldDescriptor); + assertFalse(repeatedStructMessageHandler.canHandle()); } @Test public void shouldReturnTheSameBuilderWithoutSettingAnyValue() { Descriptors.FieldDescriptor repeatedStructFieldDescriptor = TestNestedRepeatedMessage.getDescriptor().findFieldByName("metadata"); - RepeatedStructMessageProtoHandler repeatedStructMessageProtoHandler = new RepeatedStructMessageProtoHandler(repeatedStructFieldDescriptor); + RepeatedStructMessageHandler repeatedStructMessageHandler = new RepeatedStructMessageHandler(repeatedStructFieldDescriptor); DynamicMessage.Builder builder = DynamicMessage.newBuilder(repeatedStructFieldDescriptor.getContainingType()); - assertEquals(Collections.EMPTY_LIST, repeatedStructMessageProtoHandler.transformToProtoBuilder(builder, 123).getField(repeatedStructFieldDescriptor)); + assertEquals(Collections.EMPTY_LIST, repeatedStructMessageHandler.transformToProtoBuilder(builder, 123).getField(repeatedStructFieldDescriptor)); } @Test public void shouldReturnNullForTransformForPostProcessor() { Descriptors.FieldDescriptor repeatedStructFieldDescriptor = TestNestedRepeatedMessage.getDescriptor().findFieldByName("metadata"); - RepeatedStructMessageProtoHandler repeatedStructMessageProtoHandler = new RepeatedStructMessageProtoHandler(repeatedStructFieldDescriptor); - assertNull(repeatedStructMessageProtoHandler.transformFromPostProcessor("test")); + RepeatedStructMessageHandler repeatedStructMessageHandler = new RepeatedStructMessageHandler(repeatedStructFieldDescriptor); + assertNull(repeatedStructMessageHandler.transformFromPostProcessor("test")); } @Test public void shouldReturnNullForTransformForKafka() { Descriptors.FieldDescriptor repeatedStructFieldDescriptor = TestNestedRepeatedMessage.getDescriptor().findFieldByName("metadata"); - RepeatedStructMessageProtoHandler repeatedStructMessageProtoHandler = new RepeatedStructMessageProtoHandler(repeatedStructFieldDescriptor); - assertNull(repeatedStructMessageProtoHandler.transformFromProto("test")); + RepeatedStructMessageHandler repeatedStructMessageHandler = new RepeatedStructMessageHandler(repeatedStructFieldDescriptor); + assertNull(repeatedStructMessageHandler.transformFromProto("test")); } @Test public void shouldReturnTypeInformation() { Descriptors.FieldDescriptor repeatedStructFieldDescriptor = TestNestedRepeatedMessage.getDescriptor().findFieldByName("metadata"); - RepeatedStructMessageProtoHandler repeatedStructMessageProtoHandler = new RepeatedStructMessageProtoHandler(repeatedStructFieldDescriptor); - TypeInformation actualTypeInformation = repeatedStructMessageProtoHandler.getTypeInformation(); + RepeatedStructMessageHandler repeatedStructMessageHandler = new RepeatedStructMessageHandler(repeatedStructFieldDescriptor); + TypeInformation actualTypeInformation = repeatedStructMessageHandler.getTypeInformation(); TypeInformation expectedTypeInformation = Types.OBJECT_ARRAY(Types.ROW_NAMED(new String[]{})); assertEquals(expectedTypeInformation, actualTypeInformation); } @@ -76,7 +76,7 @@ public void shouldReturnTypeInformation() { @Test public void shouldReturnNullWhenTransformFromParquetIsCalledWithAnyArgument() { Descriptors.FieldDescriptor fieldDescriptor = TestBookingLogMessage.getDescriptor().findFieldByName("metadata"); - RepeatedStructMessageProtoHandler protoHandler = new RepeatedStructMessageProtoHandler(fieldDescriptor); + RepeatedStructMessageHandler protoHandler = new RepeatedStructMessageHandler(fieldDescriptor); GroupType parquetSchema = org.apache.parquet.schema.Types.requiredGroup() .named("TestGroupType"); SimpleGroup simpleGroup = new SimpleGroup(parquetSchema); diff --git a/dagger-core/src/main/java/io/odpf/dagger/core/processors/common/EndpointHandler.java b/dagger-core/src/main/java/io/odpf/dagger/core/processors/common/EndpointHandler.java index 39dcd5ea4..22694b3c8 100644 --- a/dagger-core/src/main/java/io/odpf/dagger/core/processors/common/EndpointHandler.java +++ b/dagger-core/src/main/java/io/odpf/dagger/core/processors/common/EndpointHandler.java @@ -10,8 +10,8 @@ import io.odpf.dagger.common.metrics.managers.MeterStatsManager; import io.odpf.dagger.core.metrics.aspects.ExternalSourceAspects; import io.odpf.dagger.core.metrics.reporters.ErrorReporter; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandler; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandlerFactory; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; import com.google.protobuf.Descriptors; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -90,8 +90,8 @@ public Object[] getEndpointOrQueryVariablesValues(RowManager rowManager, ResultF Descriptors.FieldDescriptor fieldDescriptor = descriptorMap.get(inputColumnName); Object singleColumnValue; if (fieldDescriptor != null) { - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(fieldDescriptor); - singleColumnValue = protoHandler.transformToJson(rowManager.getFromInput(inputColumnIndex)); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(fieldDescriptor); + singleColumnValue = typeHandler.transformToJson(rowManager.getFromInput(inputColumnIndex)); } else { singleColumnValue = rowManager.getFromInput(inputColumnIndex); } diff --git a/dagger-core/src/main/java/io/odpf/dagger/core/processors/common/FetchOutputDecorator.java b/dagger-core/src/main/java/io/odpf/dagger/core/processors/common/FetchOutputDecorator.java index bae9d2bff..e0b7abbd9 100644 --- a/dagger-core/src/main/java/io/odpf/dagger/core/processors/common/FetchOutputDecorator.java +++ b/dagger-core/src/main/java/io/odpf/dagger/core/processors/common/FetchOutputDecorator.java @@ -2,7 +2,7 @@ import com.google.protobuf.Descriptors; import io.odpf.dagger.common.core.StencilClientOrchestrator; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandlerFactory; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; import io.odpf.dagger.core.processors.types.MapDecorator; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeinfo.Types; @@ -66,7 +66,7 @@ private TypeInformation getTypeInformation() { String outputColumnName = outputColumnNames[index]; Descriptors.FieldDescriptor fieldDescriptor = descriptor.findFieldByName(outputColumnName); typeInformations[index] = fieldDescriptor != null - ? ProtoHandlerFactory.getProtoHandler(fieldDescriptor).getTypeInformation() + ? TypeHandlerFactory.getTypeHandler(fieldDescriptor).getTypeInformation() : outputColumnName.equals(ROWTIME) ? Types.SQL_TIMESTAMP : TypeInformation.of(Object.class); } } diff --git a/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/es/EsResponseHandler.java b/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/es/EsResponseHandler.java index 8d6f56ce2..09c0e613a 100644 --- a/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/es/EsResponseHandler.java +++ b/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/es/EsResponseHandler.java @@ -7,8 +7,8 @@ import com.google.protobuf.Descriptors.Descriptor; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.PathNotFoundException; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandler; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandlerFactory; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; import io.odpf.dagger.common.metrics.managers.MeterStatsManager; import io.odpf.dagger.core.exception.HttpFailureException; import io.odpf.dagger.core.metrics.aspects.ExternalSourceAspects; @@ -29,7 +29,7 @@ import java.util.List; import java.util.Map; -import static io.odpf.dagger.common.serde.proto.protohandler.RowFactory.createRow; +import static io.odpf.dagger.common.serde.typehandler.RowFactory.createRow; import static java.util.Collections.singleton; import static org.apache.http.HttpStatus.SC_OK; @@ -152,8 +152,8 @@ private void setField(EsSourceConfig esConfig, int index, Object value, String n if (value instanceof Map) { rowManager.setInOutput(index, createRow((Map) value, fieldDescriptor.getMessageType())); } else { - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(fieldDescriptor); - rowManager.setInOutput(index, protoHandler.transformFromPostProcessor(value)); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(fieldDescriptor); + rowManager.setInOutput(index, typeHandler.transformFromPostProcessor(value)); } } else { rowManager.setInOutput(index, value); diff --git a/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/grpc/GrpcResponseHandler.java b/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/grpc/GrpcResponseHandler.java index 3ee4d9975..12441ecb1 100644 --- a/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/grpc/GrpcResponseHandler.java +++ b/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/grpc/GrpcResponseHandler.java @@ -7,8 +7,8 @@ import io.odpf.dagger.core.processors.common.OutputMapping; import io.odpf.dagger.core.processors.common.PostResponseTelemetry; import io.odpf.dagger.core.processors.common.RowManager; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandler; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandlerFactory; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; import com.google.protobuf.Descriptors; import com.google.protobuf.DynamicMessage; import com.google.protobuf.InvalidProtocolBufferException; @@ -116,8 +116,8 @@ private void setFieldUsingType(String key, Object value, int fieldIndex) { IllegalArgumentException illegalArgumentException = new IllegalArgumentException("Field Descriptor not found for field: " + key); reportAndThrowError(illegalArgumentException); } - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(fieldDescriptor); - rowManager.setInOutput(fieldIndex, protoHandler.transformFromPostProcessor(value)); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(fieldDescriptor); + rowManager.setInOutput(fieldIndex, typeHandler.transformFromPostProcessor(value)); } diff --git a/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/http/HttpResponseHandler.java b/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/http/HttpResponseHandler.java index 20fe399d0..5b84c4803 100644 --- a/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/http/HttpResponseHandler.java +++ b/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/http/HttpResponseHandler.java @@ -7,8 +7,8 @@ import io.odpf.dagger.core.processors.common.OutputMapping; import io.odpf.dagger.core.processors.common.PostResponseTelemetry; import io.odpf.dagger.core.processors.common.RowManager; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandler; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandlerFactory; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; import com.google.protobuf.Descriptors; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.PathNotFoundException; @@ -148,8 +148,8 @@ private void setFieldUsingType(String key, Object value, Integer fieldIndex) { IllegalArgumentException illegalArgumentException = new IllegalArgumentException("Field Descriptor not found for field: " + key); reportAndThrowError(illegalArgumentException); } - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(fieldDescriptor); - rowManager.setInOutput(fieldIndex, protoHandler.transformFromPostProcessor(value)); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(fieldDescriptor); + rowManager.setInOutput(fieldIndex, typeHandler.transformFromPostProcessor(value)); } diff --git a/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/pg/PgResponseHandler.java b/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/pg/PgResponseHandler.java index 82380a8a6..bcfd9cec8 100644 --- a/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/pg/PgResponseHandler.java +++ b/dagger-core/src/main/java/io/odpf/dagger/core/processors/external/pg/PgResponseHandler.java @@ -6,8 +6,8 @@ import io.odpf.dagger.core.processors.ColumnNameManager; import io.odpf.dagger.core.processors.common.PostResponseTelemetry; import io.odpf.dagger.core.processors.common.RowManager; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandler; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandlerFactory; +import io.odpf.dagger.common.serde.typehandler.TypeHandler; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; import com.google.protobuf.Descriptors; import io.odpf.dagger.core.metrics.aspects.ExternalSourceAspects; import io.vertx.core.AsyncResult; @@ -24,7 +24,7 @@ import java.util.List; import java.util.Map; -import static io.odpf.dagger.common.serde.proto.protohandler.RowFactory.createRow; +import static io.odpf.dagger.common.serde.typehandler.RowFactory.createRow; /** * The Postgre response handler. @@ -142,8 +142,8 @@ private void setField(int index, Object value, String name) { if (value instanceof Map) { rowManager.setInOutput(index, createRow((Map) value, fieldDescriptor.getMessageType())); } else { - ProtoHandler protoHandler = ProtoHandlerFactory.getProtoHandler(fieldDescriptor); - rowManager.setInOutput(index, protoHandler.transformFromPostProcessor(value)); + TypeHandler typeHandler = TypeHandlerFactory.getTypeHandler(fieldDescriptor); + rowManager.setInOutput(index, typeHandler.transformFromPostProcessor(value)); } } else { rowManager.setInOutput(index, value); diff --git a/dagger-core/src/main/java/io/odpf/dagger/core/processors/internal/processor/function/functions/JsonPayloadFunction.java b/dagger-core/src/main/java/io/odpf/dagger/core/processors/internal/processor/function/functions/JsonPayloadFunction.java index ae28ec6be..65ffc8f74 100644 --- a/dagger-core/src/main/java/io/odpf/dagger/core/processors/internal/processor/function/functions/JsonPayloadFunction.java +++ b/dagger-core/src/main/java/io/odpf/dagger/core/processors/internal/processor/function/functions/JsonPayloadFunction.java @@ -5,7 +5,7 @@ import io.odpf.dagger.core.processors.internal.InternalSourceConfig; import io.odpf.dagger.core.processors.internal.processor.function.FunctionProcessor; import io.odpf.dagger.core.processors.common.RowManager; -import io.odpf.dagger.common.serde.proto.protohandler.TypeInformationFactory; +import io.odpf.dagger.common.serde.typehandler.TypeInformationFactory; import com.google.protobuf.Descriptors; import io.odpf.stencil.client.StencilClient; diff --git a/dagger-core/src/test/java/io/odpf/dagger/core/processors/external/es/EsResponseHandlerTest.java b/dagger-core/src/test/java/io/odpf/dagger/core/processors/external/es/EsResponseHandlerTest.java index 1d8541b3c..80b52ebcd 100644 --- a/dagger-core/src/test/java/io/odpf/dagger/core/processors/external/es/EsResponseHandlerTest.java +++ b/dagger-core/src/test/java/io/odpf/dagger/core/processors/external/es/EsResponseHandlerTest.java @@ -12,8 +12,8 @@ import io.odpf.dagger.core.processors.common.OutputMapping; import io.odpf.dagger.core.processors.common.PostResponseTelemetry; import io.odpf.dagger.core.processors.common.RowManager; -import io.odpf.dagger.common.serde.proto.protohandler.ProtoHandlerFactory; -import io.odpf.dagger.common.serde.proto.protohandler.RowFactory; +import io.odpf.dagger.common.serde.typehandler.TypeHandlerFactory; +import io.odpf.dagger.common.serde.typehandler.RowFactory; import mockit.Mock; import mockit.MockUp; import org.apache.flink.streaming.api.functions.async.ResultFuture; @@ -211,7 +211,7 @@ public String toString(HttpEntity entity) { outputColumnNames.add("driver_id"); columnNameManager = new ColumnNameManager(inputColumnNames, outputColumnNames); esResponseHandler = new EsResponseHandler(esSourceConfig, meterStatsManager, rowManager, columnNameManager, defaultDescriptor, resultFuture, errorReporter, new PostResponseTelemetry()); - outputData.setField(0, ProtoHandlerFactory.getProtoHandler(defaultDescriptor.findFieldByName("driver_id")).transformFromPostProcessor(12345)); + outputData.setField(0, TypeHandlerFactory.getTypeHandler(defaultDescriptor.findFieldByName("driver_id")).transformFromPostProcessor(12345)); outputStreamData.setField(1, outputData); esResponseHandler.startTimer(); diff --git a/dagger-core/src/test/java/io/odpf/dagger/core/processors/internal/processor/function/functions/JsonPayloadFunctionTest.java b/dagger-core/src/test/java/io/odpf/dagger/core/processors/internal/processor/function/functions/JsonPayloadFunctionTest.java index f917ad696..b2b618b5b 100644 --- a/dagger-core/src/test/java/io/odpf/dagger/core/processors/internal/processor/function/functions/JsonPayloadFunctionTest.java +++ b/dagger-core/src/test/java/io/odpf/dagger/core/processors/internal/processor/function/functions/JsonPayloadFunctionTest.java @@ -4,7 +4,7 @@ import com.google.protobuf.DynamicMessage; import com.google.protobuf.InvalidProtocolBufferException; import io.odpf.dagger.common.core.StencilClientOrchestrator; -import io.odpf.dagger.common.serde.proto.protohandler.RowFactory; +import io.odpf.dagger.common.serde.typehandler.RowFactory; import io.odpf.dagger.consumer.*; import io.odpf.dagger.core.exception.InvalidConfigurationException; import io.odpf.dagger.core.processors.common.RowManager;