diff --git serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/ListTypeInfo.java serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/ListTypeInfo.java index cb2fa57..2f43b78 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/ListTypeInfo.java +++ serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/ListTypeInfo.java @@ -25,11 +25,11 @@ import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category; /** * A List Type has homogeneous elements. All elements of the List has the same * TypeInfo which is returned by getListElementTypeInfo. - * + * * Always use the TypeInfoFactory to create new TypeInfo objects, instead of * directly creating an instance of this class. */ -public class ListTypeInfo extends TypeInfo implements Serializable { +public final class ListTypeInfo extends TypeInfo implements Serializable { private static final long serialVersionUID = 1L; TypeInfo listElementTypeInfo; @@ -77,9 +77,8 @@ public class ListTypeInfo extends TypeInfo implements Serializable { if (!(other instanceof ListTypeInfo)) { return false; } - ListTypeInfo o = (ListTypeInfo) other; - return o.getCategory().equals(getCategory()) - && o.getListElementTypeInfo().equals(getListElementTypeInfo()); + return getListElementTypeInfo().equals( + ((ListTypeInfo) other).getListElementTypeInfo()); } @Override diff --git serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/MapTypeInfo.java serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/MapTypeInfo.java index a426e74..a2791a0 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/MapTypeInfo.java +++ serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/MapTypeInfo.java @@ -27,11 +27,11 @@ import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category; * have the same TypeInfo, which is returned by getMapKeyTypeInfo(); and all * values of the Map has the same TypeInfo, which is returned by * getMapValueTypeInfo(). - * + * * Always use the TypeInfoFactory to create new TypeInfo objects, instead of * directly creating an instance of this class. */ -public class MapTypeInfo extends TypeInfo implements Serializable { +public final class MapTypeInfo extends TypeInfo implements Serializable { private static final long serialVersionUID = 1L; @@ -93,8 +93,7 @@ public class MapTypeInfo extends TypeInfo implements Serializable { return false; } MapTypeInfo o = (MapTypeInfo) other; - return o.getCategory().equals(getCategory()) - && o.getMapKeyTypeInfo().equals(getMapKeyTypeInfo()) + return o.getMapKeyTypeInfo().equals(getMapKeyTypeInfo()) && o.getMapValueTypeInfo().equals(getMapValueTypeInfo()); } diff --git serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/PrimitiveTypeInfo.java serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/PrimitiveTypeInfo.java index 3d1c68e..d372291 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/PrimitiveTypeInfo.java +++ serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/PrimitiveTypeInfo.java @@ -27,11 +27,11 @@ import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectIn /** * There are limited number of Primitive Types. All Primitive Types are defined * by TypeInfoFactory.isPrimitiveClass(). - * + * * Always use the TypeInfoFactory to create new TypeInfo objects, instead of * directly creating an instance of this class. */ -public class PrimitiveTypeInfo extends TypeInfo implements Serializable { +public final class PrimitiveTypeInfo extends TypeInfo implements Serializable { private static final long serialVersionUID = 1L; diff --git serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/StructTypeInfo.java serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/StructTypeInfo.java index 87179aa..13574e9 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/StructTypeInfo.java +++ serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/StructTypeInfo.java @@ -29,11 +29,11 @@ import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category; * StructTypeInfo represents the TypeInfo of a struct. A struct contains one or * more fields each of which has a unique name and its own TypeInfo. Different * fields can have the same or different TypeInfo. - * + * * Always use the TypeInfoFactory to create new TypeInfo objects, instead of * directly creating an instance of this class. */ -public class StructTypeInfo extends TypeInfo implements Serializable { +public final class StructTypeInfo extends TypeInfo implements Serializable { private static final long serialVersionUID = 1L; @@ -120,10 +120,8 @@ public class StructTypeInfo extends TypeInfo implements Serializable { if (!(other instanceof StructTypeInfo)) { return false; } - StructTypeInfo o = (StructTypeInfo) other; - return o.getCategory().equals(getCategory()) - && o.getAllStructFieldNames().equals(getAllStructFieldNames()) - && o.getAllStructFieldTypeInfos().equals(getAllStructFieldTypeInfos()); + return getAllStructFieldTypeInfos().equals( + ((StructTypeInfo) other).getAllStructFieldTypeInfos()); } @Override diff --git serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/TypeInfo.java serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/TypeInfo.java index 0344718..288dd58 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/TypeInfo.java +++ serde/src/java/org/apache/hadoop/hive/serde2/typeinfo/TypeInfo.java @@ -25,7 +25,7 @@ import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category; /** * Stores information about a type. Always use the TypeInfoFactory to create new * TypeInfo objects. - * + * * We support 4 categories of types: 1. Primitive objects (String, Number, etc) * 2. List objects (a list of objects of a single type) 3. Map objects (a map * from objects of one type to objects of another type) 4. Struct objects (a @@ -48,22 +48,10 @@ public abstract class TypeInfo implements Serializable { public abstract String getTypeName(); @Override - public String toString() { - return getTypeName(); - } + public abstract boolean equals(Object other); @Override - public boolean equals(Object o) { - if (!(o instanceof TypeInfo)) { - return false; - } - TypeInfo dest = (TypeInfo) o; - if (getCategory() != dest.getCategory()) { - return false; - } - if (getTypeName() != dest.getTypeName()) { - return false; - } - return true; + public String toString() { + return getTypeName(); } }