[ASTERIXDB-1963][HYR][TYPE] More reuse for ADM serde

- user model changes: no
- storage format changes: no
- interface changes: no

Change-Id: I890a4e8de9646e9f64811f9c7331170e7f19d73b
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1784
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
BAD: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <hubailmor@gmail.com>
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
index 5b28d3f..d264008 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
@@ -64,6 +64,10 @@
     public static final int TYPE_CONVERT_OUT_OF_BOUND = 21;
     public static final int FIELD_SHOULD_BE_TYPED = 22;
     public static final int NC_REQUEST_TIMEOUT = 23;
+    public static final int POLYGON_INVALID_COORDINATE = 24;
+    public static final int POLYGON_3_POINTS = 25;
+    public static final int POLYGON_INVALID = 26;
+
 
     public static final int INSTANTIATION_ERROR = 100;
 
diff --git a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
index 8045531..11334f1 100644
--- a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
+++ b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
@@ -57,6 +57,9 @@
 21 = Source value %1$s is out of range that %2$s can hold - %2$s.MAX_VALUE: %3$s, %2$s.MIN_VALUE: %4$s
 22 = The accessed field is untyped, but should be typed
 23 = %1$ss passed before getting back the responses from NCs
+24 = Invalid coordinate
+25 = Polygon must have at least 3 points
+26 = %1$s can not be an instance of polygon
 
 100 = Unable to instantiate class %1$s
 
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ABinarySerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ABinarySerializerDeserializer.java
index ee180bf..016a632 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ABinarySerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ABinarySerializerDeserializer.java
@@ -37,13 +37,11 @@
 
     @Override
     public ABinary deserialize(DataInput in) throws HyracksDataException {
-        return new ABinary(ByteArraySerializerDeserializer.INSTANCE.deserialize(in));
+        return new ABinary(ByteArraySerializerDeserializer.read(in));
     }
 
     @Override
     public void serialize(ABinary binary, DataOutput out) throws HyracksDataException {
-        ByteArraySerializerDeserializer.INSTANCE.serialize(binary.getBytes(), binary.getStart(), binary.getLength(),
-                out);
+        ByteArraySerializerDeserializer.serialize(binary.getBytes(), binary.getStart(), binary.getLength(), out);
     }
-
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ABooleanSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ABooleanSerializerDeserializer.java
index 7d6a078..91d22d8 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ABooleanSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ABooleanSerializerDeserializer.java
@@ -20,11 +20,12 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.om.base.ABoolean;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.BooleanPointable;
+import org.apache.hyracks.dataflow.common.data.marshalling.BooleanSerializerDeserializer;
 
 public class ABooleanSerializerDeserializer implements ISerializerDeserializer<ABoolean> {
 
@@ -36,23 +37,15 @@
 
     @Override
     public ABoolean deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return (in.readBoolean()) ? ABoolean.TRUE : ABoolean.FALSE;
-        } catch (IOException ioe) {
-            throw new HyracksDataException(ioe);
-        }
+        return BooleanSerializerDeserializer.read(in) ? ABoolean.TRUE : ABoolean.FALSE;
     }
 
     @Override
     public void serialize(ABoolean instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeBoolean(instance.getBoolean());
-        } catch (IOException ioe) {
-            throw new HyracksDataException(ioe);
-        }
+        BooleanSerializerDeserializer.write(instance.getBoolean(), out);
     }
 
     public static boolean getBoolean(byte[] bytes, int offset) {
-        return bytes[offset] != 0;
+        return BooleanPointable.getBoolean(bytes, offset);
     }
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ACircleSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ACircleSerializerDeserializer.java
index ad8375cf..cf2199b 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ACircleSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ACircleSerializerDeserializer.java
@@ -20,13 +20,13 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.dataflow.data.nontagged.Coordinate;
 import org.apache.asterix.om.base.ACircle;
 import org.apache.asterix.om.base.APoint;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.DoubleSerializerDeserializer;
 
 public class ACircleSerializerDeserializer implements ISerializerDeserializer<ACircle> {
 
@@ -39,24 +39,15 @@
 
     @Override
     public ACircle deserialize(DataInput in) throws HyracksDataException {
-        try {
-            APoint center = APointSerializerDeserializer.INSTANCE.deserialize(in);
-            double radius = ADoubleSerializerDeserializer.INSTANCE.deserialize(in).getDoubleValue();
-            return new ACircle(center, radius);
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        APoint center = APointSerializerDeserializer.read(in);
+        double radius = DoubleSerializerDeserializer.read(in);
+        return new ACircle(center, radius);
     }
 
     @Override
     public void serialize(ACircle instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeDouble(instance.getP().getX());
-            out.writeDouble(instance.getP().getY());
-            out.writeDouble(instance.getRadius());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        APointSerializerDeserializer.write(instance.getP(), out);
+        DoubleSerializerDeserializer.write(instance.getRadius(), out);
     }
 
     public final static int getCenterPointCoordinateOffset(Coordinate coordinate) throws HyracksDataException {
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADateSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADateSerializerDeserializer.java
index 9509b0b..a4ed1eb 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADateSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADateSerializerDeserializer.java
@@ -20,11 +20,11 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.om.base.ADate;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 
 public class ADateSerializerDeserializer implements ISerializerDeserializer<ADate> {
 
@@ -37,20 +37,12 @@
 
     @Override
     public ADate deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return new ADate(in.readInt());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return new ADate(IntegerSerializerDeserializer.read(in));
     }
 
     @Override
     public void serialize(ADate instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeInt(instance.getChrononTimeInDays());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        IntegerSerializerDeserializer.write(instance.getChrononTimeInDays(), out);
     }
 
     public static int getChronon(byte[] byteArray, int offset) {
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADateTimeSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADateTimeSerializerDeserializer.java
index 6eb3600..4709e8d 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADateTimeSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADateTimeSerializerDeserializer.java
@@ -20,11 +20,11 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.om.base.ADateTime;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.Integer64SerializerDeserializer;
 
 public class ADateTimeSerializerDeserializer implements ISerializerDeserializer<ADateTime> {
 
@@ -37,20 +37,12 @@
 
     @Override
     public ADateTime deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return new ADateTime(in.readLong());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return new ADateTime(Integer64SerializerDeserializer.read(in));
     }
 
     @Override
     public void serialize(ADateTime instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeLong(instance.getChrononTime());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        Integer64SerializerDeserializer.write(instance.getChrononTime(), out);
     }
 
     public static long getChronon(byte[] data, int offset) {
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADayTimeDurationSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADayTimeDurationSerializerDeserializer.java
index 3e6bacd..65f1f47 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADayTimeDurationSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADayTimeDurationSerializerDeserializer.java
@@ -20,11 +20,11 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.om.base.ADayTimeDuration;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.Integer64SerializerDeserializer;
 
 public class ADayTimeDurationSerializerDeserializer implements ISerializerDeserializer<ADayTimeDuration> {
 
@@ -37,20 +37,12 @@
 
     @Override
     public ADayTimeDuration deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return new ADayTimeDuration(in.readLong());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return new ADayTimeDuration(Integer64SerializerDeserializer.read(in));
     }
 
     @Override
     public void serialize(ADayTimeDuration instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeLong(instance.getMilliseconds());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        Integer64SerializerDeserializer.write(instance.getMilliseconds(), out);
     }
 
     public static long getDayTime(byte[] data, int offset) {
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADoubleSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADoubleSerializerDeserializer.java
index 08ba9d8..95a4156 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADoubleSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADoubleSerializerDeserializer.java
@@ -20,11 +20,11 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.om.base.ADouble;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.DoubleSerializerDeserializer;
 
 public class ADoubleSerializerDeserializer implements ISerializerDeserializer<ADouble> {
 
@@ -37,20 +37,12 @@
 
     @Override
     public ADouble deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return new ADouble(in.readDouble());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return new ADouble(DoubleSerializerDeserializer.read(in));
     }
 
     @Override
     public void serialize(ADouble instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeDouble(instance.getDoubleValue());
-        } catch (IOException ioe) {
-            throw new HyracksDataException(ioe);
-        }
+        DoubleSerializerDeserializer.write(instance.getDoubleValue(), out);
     }
 
     public static double getDouble(byte[] bytes, int offset) {
@@ -60,5 +52,4 @@
     public static long getLongBits(byte[] bytes, int offset) {
         return AInt64SerializerDeserializer.getLong(bytes, offset);
     }
-
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADurationSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADurationSerializerDeserializer.java
index 5eb8369..0f3bea6 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADurationSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ADurationSerializerDeserializer.java
@@ -20,11 +20,12 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.om.base.ADuration;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.Integer64SerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 
 public class ADurationSerializerDeserializer implements ISerializerDeserializer<ADuration> {
 
@@ -37,21 +38,15 @@
 
     @Override
     public ADuration deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return new ADuration(in.readInt(), in.readLong());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        final int months = IntegerSerializerDeserializer.read(in);
+        final long seconds = Integer64SerializerDeserializer.read(in);
+        return new ADuration(months, seconds);
     }
 
     @Override
     public void serialize(ADuration instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeInt(instance.getMonths());
-            out.writeLong(instance.getMilliseconds());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        IntegerSerializerDeserializer.write(instance.getMonths(), out);
+        Integer64SerializerDeserializer.write(instance.getMilliseconds(), out);
     }
 
     /**
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AFloatSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AFloatSerializerDeserializer.java
index 8a53b9b..95f5e14 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AFloatSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AFloatSerializerDeserializer.java
@@ -20,7 +20,6 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.om.base.AFloat;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
@@ -39,20 +38,15 @@
 
     @Override
     public AFloat deserialize(DataInput in) throws HyracksDataException {
-        return new AFloat(FloatSerializerDeserializer.INSTANCE.deserialize(in));
+        return new AFloat(FloatSerializerDeserializer.read(in));
     }
 
     @Override
     public void serialize(AFloat instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeFloat(instance.getFloatValue());
-        } catch (IOException ioe) {
-            throw new HyracksDataException(ioe);
-        }
+        FloatSerializerDeserializer.write(instance.getFloatValue(), out);
     }
 
     public static float getFloat(byte[] bytes, int offset) {
         return FloatPointable.getFloat(bytes, offset);
     }
-
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt16SerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt16SerializerDeserializer.java
index a0c2657..b1b3d26 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt16SerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt16SerializerDeserializer.java
@@ -20,11 +20,11 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.om.base.AInt16;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.ShortSerializerDeserializer;
 
 public class AInt16SerializerDeserializer implements ISerializerDeserializer<AInt16> {
 
@@ -37,20 +37,12 @@
 
     @Override
     public AInt16 deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return new AInt16(in.readShort());
-        } catch (IOException ioe) {
-            throw new HyracksDataException(ioe);
-        }
+        return new AInt16(ShortSerializerDeserializer.read(in));
     }
 
     @Override
     public void serialize(AInt16 instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeShort(instance.getShortValue());
-        } catch (IOException ioe) {
-            throw new HyracksDataException(ioe);
-        }
+        ShortSerializerDeserializer.write(instance.getShortValue(), out);
     }
 
     public static short getShort(byte[] bytes, int offset) {
@@ -60,5 +52,4 @@
     public static int getUnsignedShort(byte[] bytes, int offset) {
         return ((bytes[offset] & 0xff) << 8) + ((bytes[offset + 1] & 0xff) << 0);
     }
-
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt32SerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt32SerializerDeserializer.java
index efea3af..869c902 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt32SerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt32SerializerDeserializer.java
@@ -24,6 +24,7 @@
 import org.apache.asterix.om.base.AInt32;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.IntegerPointable;
 import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 
 public class AInt32SerializerDeserializer implements ISerializerDeserializer<AInt32> {
@@ -37,17 +38,15 @@
 
     @Override
     public AInt32 deserialize(DataInput in) throws HyracksDataException {
-        Integer i = IntegerSerializerDeserializer.INSTANCE.deserialize(in);
-        return new AInt32(i);
+        return new AInt32(IntegerSerializerDeserializer.read(in));
     }
 
     @Override
     public void serialize(AInt32 instance, DataOutput out) throws HyracksDataException {
-        IntegerSerializerDeserializer.INSTANCE.serialize(instance.getIntegerValue(), out);
+        IntegerSerializerDeserializer.write(instance.getIntegerValue(), out);
     }
 
     public static int getInt(byte[] bytes, int offset) {
-        return ((bytes[offset] & 0xff) << 24) + ((bytes[offset + 1] & 0xff) << 16) + ((bytes[offset + 2] & 0xff) << 8)
-                + ((bytes[offset + 3] & 0xff) << 0);
+        return IntegerPointable.getInteger(bytes, offset);
     }
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt64SerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt64SerializerDeserializer.java
index 000339f7..7bf5145 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt64SerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt64SerializerDeserializer.java
@@ -20,11 +20,12 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.om.base.AInt64;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.LongPointable;
+import org.apache.hyracks.dataflow.common.data.marshalling.Integer64SerializerDeserializer;
 
 public class AInt64SerializerDeserializer implements ISerializerDeserializer<AInt64> {
 
@@ -37,28 +38,16 @@
 
     @Override
     public AInt64 deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return new AInt64(in.readLong());
-        } catch (IOException ioe) {
-            throw new HyracksDataException(ioe);
-        }
-
+        return new AInt64(Integer64SerializerDeserializer.read(in));
     }
 
     @Override
     public void serialize(AInt64 instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeLong(instance.getLongValue());
-        } catch (IOException ioe) {
-            throw new HyracksDataException(ioe);
-        }
+        Integer64SerializerDeserializer.write(instance.getLongValue(), out);
     }
 
     public static long getLong(byte[] bytes, int offset) {
-        return (((long) (bytes[offset] & 0xff)) << 56) + (((long) (bytes[offset + 1] & 0xff)) << 48)
-                + (((long) (bytes[offset + 2] & 0xff)) << 40) + (((long) (bytes[offset + 3] & 0xff)) << 32)
-                + (((long) (bytes[offset + 4] & 0xff)) << 24) + (((long) (bytes[offset + 5] & 0xff)) << 16)
-                + (((long) (bytes[offset + 6] & 0xff)) << 8) + (bytes[offset + 7] & 0xff);
+        return LongPointable.getLong(bytes, offset);
     }
 
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt8SerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt8SerializerDeserializer.java
index 16c5f46..f3bf005 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt8SerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AInt8SerializerDeserializer.java
@@ -40,7 +40,7 @@
         try {
             return new AInt8(in.readByte());
         } catch (IOException ioe) {
-            throw new HyracksDataException(ioe);
+            throw HyracksDataException.create(ioe);
         }
     }
 
@@ -49,12 +49,11 @@
         try {
             out.writeByte(instance.getByteValue());
         } catch (IOException ioe) {
-            throw new HyracksDataException(ioe);
+            throw HyracksDataException.create(ioe);
         }
     }
 
     public static byte getByte(byte[] bytes, int offset) {
         return bytes[offset];
     }
-
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java
index d5b6488..6aeeb4f 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AIntervalSerializerDeserializer.java
@@ -63,7 +63,7 @@
             }
             return new AInterval(start, end, tag);
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
         }
 
     }
@@ -80,7 +80,7 @@
                 out.writeInt((int) instance.getIntervalEnd());
             }
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
         }
     }
 
@@ -141,5 +141,4 @@
     public static int getIntervalLength(byte[] data, int start) {
         return getTypeSize() + getStartSize(data, start) + getEndSize(data, start);
     }
-
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ALineSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ALineSerializerDeserializer.java
index 0ffa0d0..c87475d 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ALineSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ALineSerializerDeserializer.java
@@ -20,7 +20,6 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.dataflow.data.nontagged.Coordinate;
 import org.apache.asterix.om.base.ALine;
@@ -39,29 +38,18 @@
 
     @Override
     public ALine deserialize(DataInput in) throws HyracksDataException {
-        try {
-            APoint p1 = APointSerializerDeserializer.INSTANCE.deserialize(in);
-            APoint p2 = APointSerializerDeserializer.INSTANCE.deserialize(in);
-            return new ALine(p1, p2);
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        APoint p1 = APointSerializerDeserializer.read(in);
+        APoint p2 = APointSerializerDeserializer.read(in);
+        return new ALine(p1, p2);
     }
 
     @Override
     public void serialize(ALine instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeDouble(instance.getP1().getX());
-            out.writeDouble(instance.getP1().getY());
-            out.writeDouble(instance.getP2().getX());
-            out.writeDouble(instance.getP2().getY());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        APointSerializerDeserializer.write(instance.getP1(), out);
+        APointSerializerDeserializer.write(instance.getP2(), out);
     }
 
     public final static int getStartPointCoordinateOffset(Coordinate coordinate) throws HyracksDataException {
-
         switch (coordinate) {
             case X:
                 return 1;
@@ -73,7 +61,6 @@
     }
 
     public final static int getEndPointCoordinateOffset(Coordinate coordinate) throws HyracksDataException {
-
         switch (coordinate) {
             case X:
                 return 17;
@@ -83,5 +70,4 @@
                 throw new HyracksDataException("Wrong coordinate");
         }
     }
-
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AObjectSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AObjectSerializerDeserializer.java
index eb02a99..aef4ca1 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AObjectSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AObjectSerializerDeserializer.java
@@ -132,7 +132,7 @@
         try {
             out.writeByte(tag.serialize());
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
         }
         switch (tag) {
             case MISSING:
@@ -214,7 +214,7 @@
                 ATypeSerializerDeserializer.INSTANCE.serialize((IAType) instance, out);
                 break;
             default:
-                throw new NotImplementedException(
+                throw new HyracksDataException(
                         "No serializer/deserializer implemented for type " + t.getTypeTag() + " .");
         }
     }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
index 0a66d56..df720f1 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AOrderedListSerializerDeserializer.java
@@ -20,10 +20,12 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.asterix.builders.OrderedListBuilder;
+import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
 import org.apache.asterix.om.base.AOrderedList;
 import org.apache.asterix.om.base.IAObject;
@@ -95,8 +97,8 @@
             }
             AOrderedListType type = new AOrderedListType(currentItemType, "orderedlist");
             return new AOrderedList(type, items);
-        } catch (Exception e) {
-            throw new HyracksDataException(e);
+        } catch (AsterixException | IOException e) {
+            throw HyracksDataException.create(e);
         }
     }
 
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/APoint3DSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/APoint3DSerializerDeserializer.java
index 57e54a7..00291cf 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/APoint3DSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/APoint3DSerializerDeserializer.java
@@ -27,6 +27,7 @@
 import org.apache.asterix.om.types.ATypeTag;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.DoubleSerializerDeserializer;
 
 public class APoint3DSerializerDeserializer implements ISerializerDeserializer<APoint3D> {
 
@@ -39,35 +40,17 @@
 
     @Override
     public APoint3D deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return new APoint3D(in.readDouble(), in.readDouble(), in.readDouble());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        final double x = DoubleSerializerDeserializer.read(in);
+        final double y = DoubleSerializerDeserializer.read(in);
+        final double z = DoubleSerializerDeserializer.read(in);
+        return new APoint3D(x, y, z);
     }
 
     @Override
     public void serialize(APoint3D instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeDouble(instance.getX());
-            out.writeDouble(instance.getY());
-            out.writeDouble(instance.getZ());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
-    }
-
-    public static void stringToPoint3d(String instance, DataOutput out) throws HyracksDataException {
-        try {
-            int firstCommaIndex = instance.indexOf(',');
-            int secondCommaIndex = instance.indexOf(',', firstCommaIndex + 1);
-            out.writeByte(ATypeTag.POINT3D.serialize());
-            out.writeDouble(Double.parseDouble(instance.substring(0, firstCommaIndex)));
-            out.writeDouble(Double.parseDouble(instance.substring(firstCommaIndex + 1, secondCommaIndex)));
-            out.writeDouble(Double.parseDouble(instance.substring(secondCommaIndex + 1, instance.length())));
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        DoubleSerializerDeserializer.write(instance.getX(), out);
+        DoubleSerializerDeserializer.write(instance.getY(), out);
+        DoubleSerializerDeserializer.write(instance.getZ(), out);
     }
 
     public final static int getCoordinateOffset(Coordinate coordinate) throws HyracksDataException {
@@ -82,5 +65,4 @@
                 throw new HyracksDataException("Wrong coordinate");
         }
     }
-
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/APointSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/APointSerializerDeserializer.java
index a927f95..3abc585 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/APointSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/APointSerializerDeserializer.java
@@ -20,12 +20,12 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.dataflow.data.nontagged.Coordinate;
 import org.apache.asterix.om.base.APoint;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.DoubleSerializerDeserializer;
 
 public class APointSerializerDeserializer implements ISerializerDeserializer<APoint> {
 
@@ -38,34 +38,28 @@
 
     @Override
     public APoint deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return new APoint(in.readDouble(), in.readDouble());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return read(in);
     }
 
     @Override
     public void serialize(APoint instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeDouble(instance.getX());
-            out.writeDouble(instance.getY());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        write(instance, out);
+    }
+
+    public static APoint read(DataInput in) throws HyracksDataException {
+        return new APoint(DoubleSerializerDeserializer.read(in), DoubleSerializerDeserializer.read(in));
+    }
+
+    public static void write(APoint instance, DataOutput out) throws HyracksDataException {
+        serialize(instance.getX(), instance.getY(), out);
     }
 
     public static void serialize(double x, double y, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeDouble(x);
-            out.writeDouble(y);
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        DoubleSerializerDeserializer.write(x, out);
+        DoubleSerializerDeserializer.write(y, out);
     }
 
     public final static int getCoordinateOffset(Coordinate coordinate) throws HyracksDataException {
-
         switch (coordinate) {
             case X:
                 return 1;
@@ -74,7 +68,5 @@
             default:
                 throw new HyracksDataException("Wrong coordinate");
         }
-
     }
-
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/APolygonSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/APolygonSerializerDeserializer.java
index 5c3e310..83810e3 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/APolygonSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/APolygonSerializerDeserializer.java
@@ -22,12 +22,14 @@
 import java.io.DataOutput;
 import java.io.IOException;
 
+import org.apache.asterix.common.exceptions.ErrorCode;
 import org.apache.asterix.dataflow.data.nontagged.Coordinate;
 import org.apache.asterix.om.base.APoint;
 import org.apache.asterix.om.base.APolygon;
 import org.apache.asterix.om.types.ATypeTag;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.ShortSerializerDeserializer;
 
 public class APolygonSerializerDeserializer implements ISerializerDeserializer<APolygon> {
 
@@ -40,59 +42,52 @@
 
     @Override
     public APolygon deserialize(DataInput in) throws HyracksDataException {
-        try {
-            short numberOfPoints = in.readShort();
-            APoint[] points = new APoint[numberOfPoints];
-            for (int i = 0; i < numberOfPoints; i++) {
-                points[i] = APointSerializerDeserializer.INSTANCE.deserialize(in);
-            }
-            return new APolygon(points);
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
+        short numberOfPoints = ShortSerializerDeserializer.read(in);
+        APoint[] points = new APoint[numberOfPoints];
+        for (int i = 0; i < numberOfPoints; i++) {
+            points[i] = APointSerializerDeserializer.read(in);
         }
+        return new APolygon(points);
     }
 
     @Override
     public void serialize(APolygon instance, DataOutput out) throws HyracksDataException {
-        try {
-            int n = instance.getNumberOfPoints();
-            out.writeShort(n);
-            for (int i = 0; i < n; i++) {
-                APointSerializerDeserializer.INSTANCE.serialize(instance.getPoints()[i], out);
-            }
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
+        short n = (short) instance.getNumberOfPoints();
+        ShortSerializerDeserializer.write(n, out);
+        for (int i = 0; i < n; i++) {
+            APointSerializerDeserializer.write(instance.getPoints()[i], out);
         }
     }
 
-    public final static int getNumberOfPointsOffset() throws HyracksDataException {
+    public static int getNumberOfPointsOffset() throws HyracksDataException {
         return 1;
     }
 
-    public final static int getCoordinateOffset(int pointId, Coordinate coordinate) throws HyracksDataException {
+    public static int getCoordinateOffset(int pointId, Coordinate coordinate) throws HyracksDataException {
         switch (coordinate) {
             case X:
                 return 3 + (pointId * 16);
             case Y:
                 return 11 + (pointId * 16);
             default:
-                throw new HyracksDataException("Wrong coordinate");
+                throw HyracksDataException.create(ErrorCode.POLYGON_INVALID_COORDINATE);
         }
     }
 
     public static void parse(String polygon, DataOutput out) throws HyracksDataException {
         try {
             String[] points = polygon.split(" ");
-            if (points.length < 3)
-                throw new HyracksDataException("Polygon must have at least 3 points.");
+            if (points.length < 3) {
+                throw HyracksDataException.create(ErrorCode.POLYGON_3_POINTS);
+            }
             out.writeByte(ATypeTag.POLYGON.serialize());
             out.writeShort(points.length);
             for (int i = 0; i < points.length; i++) {
-                APointSerializerDeserializer.serialize(Double.parseDouble(points[i].split(",")[0]),
-                        Double.parseDouble(points[i].split(",")[1]), out);
+                final String[] split = points[i].split(",");
+                APointSerializerDeserializer.serialize(Double.parseDouble(split[0]), Double.parseDouble(split[1]), out);
             }
-        } catch (Exception e) {
-            throw new HyracksDataException(polygon + " can not be an instance of polygon");
+        } catch (IOException e) {
+            throw HyracksDataException.create(ErrorCode.POLYGON_INVALID, e, polygon);
         }
     }
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARecordSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARecordSerializerDeserializer.java
index 0f762ec..6aee698 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARecordSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARecordSerializerDeserializer.java
@@ -119,7 +119,7 @@
                 return new ARecord(this.recordType, schemaFields);
             }
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
         }
     }
 
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARectangleSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARectangleSerializerDeserializer.java
index b12b964..cf1e573 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARectangleSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARectangleSerializerDeserializer.java
@@ -39,29 +39,16 @@
 
     @Override
     public ARectangle deserialize(DataInput in) throws HyracksDataException {
-        try {
-            APoint p1 = APointSerializerDeserializer.INSTANCE.deserialize(in);
-            APoint p2 = APointSerializerDeserializer.INSTANCE.deserialize(in);
-            return new ARectangle(p1, p2);
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return new ARectangle(APointSerializerDeserializer.read(in), APointSerializerDeserializer.read(in));
     }
 
     @Override
     public void serialize(ARectangle instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeDouble(instance.getP1().getX());
-            out.writeDouble(instance.getP1().getY());
-            out.writeDouble(instance.getP2().getX());
-            out.writeDouble(instance.getP2().getY());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        APointSerializerDeserializer.write(instance.getP1(), out);
+        APointSerializerDeserializer.write(instance.getP2(), out);
     }
 
     public final static int getBottomLeftCoordinateOffset(Coordinate coordinate) throws HyracksDataException {
-
         switch (coordinate) {
             case X:
                 return 1;
@@ -73,7 +60,6 @@
     }
 
     public final static int getUpperRightCoordinateOffset(Coordinate coordinate) throws HyracksDataException {
-
         switch (coordinate) {
             case X:
                 return 17;
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AStringSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AStringSerializerDeserializer.java
index be86c48..888b34c 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AStringSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AStringSerializerDeserializer.java
@@ -57,7 +57,7 @@
         try {
             return new AString(UTF8StringUtil.readUTF8(in, utf8StringReader));
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
         }
     }
 
@@ -66,7 +66,7 @@
         try {
             UTF8StringUtil.writeUTF8(instance.getStringValue(), out, utf8StringWriter);
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
         }
     }
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ATimeSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ATimeSerializerDeserializer.java
index 73c12ad..3830e2a 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ATimeSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ATimeSerializerDeserializer.java
@@ -20,11 +20,11 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.om.base.ATime;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 
 public class ATimeSerializerDeserializer implements ISerializerDeserializer<ATime> {
 
@@ -37,26 +37,15 @@
 
     @Override
     public ATime deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return new ATime(in.readInt());
-
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return new ATime(IntegerSerializerDeserializer.read(in));
     }
 
     @Override
     public void serialize(ATime instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeInt(instance.getChrononTime());
-
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        IntegerSerializerDeserializer.write(instance.getChrononTime(), out);
     }
 
     public static int getChronon(byte[] byteArray, int offset) {
         return AInt32SerializerDeserializer.getInt(byteArray, offset);
     }
-
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUUIDSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUUIDSerializerDeserializer.java
index 9ed398e..a970ea3 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUUIDSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUUIDSerializerDeserializer.java
@@ -44,5 +44,4 @@
     public void serialize(AUUID instance, DataOutput out) throws HyracksDataException {
         instance.writeTo(out);
     }
-
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java
index a6090af..b9afeb0 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AUnorderedListSerializerDeserializer.java
@@ -20,9 +20,11 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
+import java.io.IOException;
 import java.util.ArrayList;
 
 import org.apache.asterix.builders.UnorderedListBuilder;
+import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
 import org.apache.asterix.om.base.AUnorderedList;
 import org.apache.asterix.om.base.IACursor;
@@ -96,8 +98,8 @@
             }
             AUnorderedListType type = new AUnorderedListType(currentItemType, "unorderedlist");
             return new AUnorderedList(type, items);
-        } catch (Exception e) {
-            throw new HyracksDataException(e);
+        } catch (AsterixException | IOException e) {
+            throw HyracksDataException.create(e);
         }
     }
 
@@ -144,5 +146,4 @@
             return -1;
         }
     }
-
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AYearMonthDurationSerializerDeserializer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AYearMonthDurationSerializerDeserializer.java
index f927204..3f970f1 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AYearMonthDurationSerializerDeserializer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/AYearMonthDurationSerializerDeserializer.java
@@ -20,41 +20,33 @@
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.IOException;
 
 import org.apache.asterix.om.base.AYearMonthDuration;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 
 public class AYearMonthDurationSerializerDeserializer implements ISerializerDeserializer<AYearMonthDuration> {
 
     private static final long serialVersionUID = 1L;
 
-    public static final AYearMonthDurationSerializerDeserializer INSTANCE = new AYearMonthDurationSerializerDeserializer();
+    public static final AYearMonthDurationSerializerDeserializer INSTANCE =
+            new AYearMonthDurationSerializerDeserializer();
 
     private AYearMonthDurationSerializerDeserializer() {
     }
 
     @Override
     public AYearMonthDuration deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return new AYearMonthDuration(in.readInt());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return new AYearMonthDuration(IntegerSerializerDeserializer.read(in));
     }
 
     @Override
     public void serialize(AYearMonthDuration instance, DataOutput out) throws HyracksDataException {
-        try {
-            out.writeInt(instance.getMonths());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        IntegerSerializerDeserializer.write(instance.getMonths(), out);
     }
 
     public static int getYearMonth(byte[] data, int offset) {
         return AInt32SerializerDeserializer.getInt(data, offset);
     }
-
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/SerializerDeserializerUtil.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/SerializerDeserializerUtil.java
index 37c5e92..b0844ae 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/SerializerDeserializerUtil.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/SerializerDeserializerUtil.java
@@ -66,7 +66,7 @@
         try {
             out.writeByte(tag.serialize());
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
         }
     }
 
@@ -74,7 +74,7 @@
         try {
             return EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(in.readByte());
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
         }
     }
 }
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/hierachy/FloatToDoubleTypeConvertComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/hierachy/FloatToDoubleTypeConvertComputer.java
index eaddfff..548768e 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/hierachy/FloatToDoubleTypeConvertComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/hierachy/FloatToDoubleTypeConvertComputer.java
@@ -44,7 +44,7 @@
     public void convertType(byte[] data, int start, int length, DataOutput out) throws IOException {
         double targetValue = convertType(data, start);
         out.writeByte(ATypeTag.DOUBLE.serialize());
-        DoubleSerializerDeserializer.INSTANCE.serialize(targetValue, out);
+        DoubleSerializerDeserializer.write(targetValue, out);
     }
 
     @Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/hierachy/IntegerToDoubleTypeConvertComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/hierachy/IntegerToDoubleTypeConvertComputer.java
index 37f29ed..55bba87 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/hierachy/IntegerToDoubleTypeConvertComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/hierachy/IntegerToDoubleTypeConvertComputer.java
@@ -53,7 +53,7 @@
     public void convertType(byte[] data, int start, int length, DataOutput out) throws IOException {
         long val = AbstractIntegerTypeConvertComputer.asLong(data, start, length);
         out.writeByte(ATypeTag.DOUBLE.serialize());
-        DoubleSerializerDeserializer.INSTANCE.serialize((double) val, out);
+        DoubleSerializerDeserializer.write((double) val, out);
     }
 
     double convertType(byte[] data, int start, ATypeTag sourceTypeTag) throws HyracksDataException {
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/hierachy/IntegerToFloatTypeConvertComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/hierachy/IntegerToFloatTypeConvertComputer.java
index e072dd5..4aa4749 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/hierachy/IntegerToFloatTypeConvertComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/hierachy/IntegerToFloatTypeConvertComputer.java
@@ -71,7 +71,7 @@
                         new ATypeTag[] { ATypeTag.TINYINT, ATypeTag.SMALLINT, ATypeTag.INTEGER, ATypeTag.BIGINT }));
         }
         out.writeByte(ATypeTag.FLOAT.serialize());
-        FloatSerializerDeserializer.INSTANCE.serialize(val, out);
+        FloatSerializerDeserializer.write(val, out);
     }
 
     @Override
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/BooleanSerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/BooleanSerializerDeserializer.java
index a69cb01..3f3a0db 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/BooleanSerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/BooleanSerializerDeserializer.java
@@ -35,19 +35,27 @@
 
     @Override
     public Boolean deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return in.readBoolean();
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return read(in);
     }
 
     @Override
     public void serialize(Boolean instance, DataOutput out) throws HyracksDataException {
+        write(instance, out);
+    }
+
+    public static boolean read(DataInput in) throws HyracksDataException {
         try {
-            out.writeBoolean(instance.booleanValue());
+            return in.readBoolean();
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
+        }
+    }
+
+    public static void write(boolean instance, DataOutput out) throws HyracksDataException {
+        try {
+            out.writeBoolean(instance);
+        } catch (IOException e) {
+            throw HyracksDataException.create(e);
         }
     }
 }
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializer.java
index 7b4f7b6..ad3ede5 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializer.java
@@ -46,14 +46,7 @@
      */
     @Override
     public byte[] deserialize(DataInput in) throws HyracksDataException {
-        try {
-            int contentLength = VarLenIntEncoderDecoder.decode(in);
-            byte[] bytes = new byte[contentLength];
-            in.readFully(bytes, 0, contentLength);
-            return bytes;
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return read(in);
     }
 
     /**
@@ -62,16 +55,24 @@
      */
     @Override
     public void serialize(byte[] instance, DataOutput out) throws HyracksDataException {
+        write(instance, out);
+    }
+
+    public static byte[] read(DataInput in) throws HyracksDataException {
         try {
-            byte[] metaBuffer = new byte[5];
-            int metaLength = VarLenIntEncoderDecoder.encode(instance.length, metaBuffer, 0);
-            out.write(metaBuffer, 0, metaLength);
-            out.write(instance);
+            int contentLength = VarLenIntEncoderDecoder.decode(in);
+            byte[] bytes = new byte[contentLength];
+            in.readFully(bytes, 0, contentLength);
+            return bytes;
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
         }
     }
 
+    public static void write(byte[] instance, DataOutput out) throws HyracksDataException {
+        serialize(instance, 0, instance.length, out);
+    }
+
     public void serialize(ByteArrayPointable byteArrayPtr, DataOutput out) throws HyracksDataException {
         try {
             out.write(byteArrayPtr.getByteArray(), byteArrayPtr.getStartOffset(), byteArrayPtr.getLength());
@@ -81,7 +82,7 @@
     }
 
     // A pure byte array, which doesn't have the length information encoded at the beginning
-    public void serialize(byte[] instance, int start, int length, DataOutput out) throws HyracksDataException {
+    public static void serialize(byte[] instance, int start, int length, DataOutput out) throws HyracksDataException {
         byte[] metaBuffer = new byte[5];
         int metaLength = VarLenIntEncoderDecoder.encode(length, metaBuffer, 0);
         try {
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/DoubleSerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/DoubleSerializerDeserializer.java
index c586119..f7e0b40 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/DoubleSerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/DoubleSerializerDeserializer.java
@@ -35,19 +35,27 @@
 
     @Override
     public Double deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return in.readDouble();
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return read(in);
     }
 
     @Override
     public void serialize(Double instance, DataOutput out) throws HyracksDataException {
+        write(instance, out);
+    }
+
+    public static double read(DataInput in) throws HyracksDataException {
         try {
-            out.writeDouble(instance.doubleValue());
+            return in.readDouble();
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
+        }
+    }
+
+    public static void write(double instance, DataOutput out) throws HyracksDataException {
+        try {
+            out.writeDouble(instance);
+        } catch (IOException e) {
+            throw HyracksDataException.create(e);
         }
     }
 }
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/FloatSerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/FloatSerializerDeserializer.java
index 9e6edc0..3b53380 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/FloatSerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/FloatSerializerDeserializer.java
@@ -35,19 +35,27 @@
 
     @Override
     public Float deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return in.readFloat();
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return read(in);
     }
 
     @Override
     public void serialize(Float instance, DataOutput out) throws HyracksDataException {
+        write(instance, out);
+    }
+
+    public static float read(DataInput in) throws HyracksDataException {
         try {
-            out.writeFloat(instance.floatValue());
+            return in.readFloat();
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
+        }
+    }
+
+    public static void write(float instance, DataOutput out) throws HyracksDataException {
+        try {
+            out.writeFloat(instance);
+        } catch (IOException e) {
+            throw HyracksDataException.create(e);
         }
     }
 }
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/IntArraySerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/IntArraySerializerDeserializer.java
index 3507bca..e884efe 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/IntArraySerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/IntArraySerializerDeserializer.java
@@ -35,6 +35,15 @@
 
     @Override
     public int[] deserialize(DataInput in) throws HyracksDataException {
+        return read(in);
+    }
+
+    @Override
+    public void serialize(int[] instance, DataOutput out) throws HyracksDataException {
+        write(instance, out);
+    }
+
+    public static int[] read(DataInput in) throws HyracksDataException {
         try {
             int len = in.readInt();
             int[] array = new int[len];
@@ -43,19 +52,18 @@
             }
             return array;
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
         }
     }
 
-    @Override
-    public void serialize(int[] instance, DataOutput out) throws HyracksDataException {
+    public static void write(int[] instance, DataOutput out) throws HyracksDataException {
         try {
             out.writeInt(instance.length);
             for (int i = 0; i < instance.length; ++i) {
                 out.writeInt(instance[i]);
             }
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
         }
     }
 }
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/Integer64SerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/Integer64SerializerDeserializer.java
index da5e99b..9684fdb 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/Integer64SerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/Integer64SerializerDeserializer.java
@@ -36,19 +36,27 @@
 
     @Override
     public Long deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return in.readLong();
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return read(in);
     }
 
     @Override
     public void serialize(Long instance, DataOutput out) throws HyracksDataException {
+        write(instance, out);
+    }
+
+    public static long read(DataInput in) throws HyracksDataException {
         try {
-            out.writeLong(instance.longValue());
-        } catch (IOException ioe) {
-            throw new HyracksDataException(ioe);
+            return in.readLong();
+        } catch (IOException e) {
+            throw HyracksDataException.create(e);
+        }
+    }
+
+    public static void write(long instance, DataOutput out) throws HyracksDataException {
+        try {
+            out.writeLong(instance);
+        } catch (IOException e) {
+            throw HyracksDataException.create(e);
         }
     }
 }
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/IntegerSerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/IntegerSerializerDeserializer.java
index 9faddbe..4ff3c11 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/IntegerSerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/IntegerSerializerDeserializer.java
@@ -35,19 +35,27 @@
 
     @Override
     public Integer deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return in.readInt();
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return read(in);
     }
 
     @Override
     public void serialize(Integer instance, DataOutput out) throws HyracksDataException {
+        write(instance, out);
+    }
+
+    public static int read(DataInput in) throws HyracksDataException {
         try {
-            out.writeInt(instance.intValue());
+            return in.readInt();
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
+        }
+    }
+
+    public static void write(int instance, DataOutput out) throws HyracksDataException {
+        try {
+            out.writeInt(instance);
+        } catch (IOException e) {
+            throw HyracksDataException.create(e);
         }
     }
 }
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ShortSerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ShortSerializerDeserializer.java
index 69799a9..1ffe8f1 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ShortSerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ShortSerializerDeserializer.java
@@ -35,19 +35,27 @@
 
     @Override
     public Short deserialize(DataInput in) throws HyracksDataException {
-        try {
-            return in.readShort();
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
+        return read(in);
     }
 
     @Override
     public void serialize(Short instance, DataOutput out) throws HyracksDataException {
+        write(instance, out);
+    }
+
+    public static short read(DataInput in) throws HyracksDataException {
         try {
-            out.writeShort(instance.intValue());
+            return in.readShort();
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
+        }
+    }
+
+    public static void write(short instance, DataOutput out) throws HyracksDataException {
+        try {
+            out.writeShort(instance);
+        } catch (IOException e) {
+            throw HyracksDataException.create(e);
         }
     }
 }
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/UTF8StringSerializerDeserializer.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/UTF8StringSerializerDeserializer.java
index 8dccf70..dcdc77b 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/UTF8StringSerializerDeserializer.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/UTF8StringSerializerDeserializer.java
@@ -49,7 +49,7 @@
         try {
             return UTF8StringUtil.readUTF8(in, utf8StringReader);
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
         }
     }
 
@@ -58,7 +58,7 @@
         try {
             UTF8StringUtil.writeUTF8(instance, out, utf8StringWriter);
         } catch (IOException e) {
-            throw new HyracksDataException(e);
+            throw HyracksDataException.create(e);
         }
     }
 }