Repository: asterixdb
Updated Branches:
  refs/heads/master c49e25e28 -> bb49e5e39


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JObject.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JObject.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JObject.java
new file mode 100644
index 0000000..7338b31
--- /dev/null
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JObject.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.external.library.java.base;
+
+import org.apache.asterix.external.api.IJObject;
+import org.apache.asterix.om.base.IAObject;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+public abstract class JObject implements IJObject {
+
+    protected IAObject value;
+    protected byte[] bytes;
+
+    protected JObject() {
+    }
+
+    protected JObject(IAObject value) {
+        this.value = value;
+    }
+
+    @Override
+    public IAObject getIAObject() {
+        return value;
+    }
+
+    public void serializeTypeTag(boolean writeTypeTag, DataOutput dataOutput, 
ATypeTag typeTag)
+            throws HyracksDataException {
+        if (writeTypeTag) {
+            try {
+                dataOutput.writeByte(typeTag.serialize());
+            } catch (IOException e) {
+                throw new HyracksDataException(e);
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JOrderedList.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JOrderedList.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JOrderedList.java
new file mode 100644
index 0000000..017fc53
--- /dev/null
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JOrderedList.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.external.library.java.base;
+
+import org.apache.asterix.builders.IAsterixListBuilder;
+import org.apache.asterix.builders.OrderedListBuilder;
+import org.apache.asterix.external.api.IJObject;
+import org.apache.asterix.external.api.IJType;
+import org.apache.asterix.om.base.AMutableOrderedList;
+import org.apache.asterix.om.base.IAObject;
+import org.apache.asterix.om.types.AOrderedListType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+
+import java.io.DataOutput;
+import java.util.List;
+
+public final class JOrderedList extends JList {
+
+    private AOrderedListType listType;
+
+    public JOrderedList(IJType listItemType) {
+        super();
+        this.listType = new AOrderedListType(listItemType.getIAType(), null);
+    }
+
+    public JOrderedList(IAType listItemType) {
+        super();
+        this.listType = new AOrderedListType(listItemType, null);
+    }
+
+    public List<IJObject> getValue() {
+        return jObjects;
+    }
+
+    @Override
+    public IAType getIAType() {
+        return listType;
+    }
+
+    @Override
+    public IAObject getIAObject() {
+        AMutableOrderedList v = new AMutableOrderedList(listType);
+        for (IJObject jObj : jObjects) {
+            v.add(jObj.getIAObject());
+        }
+        return v;
+    }
+
+    @Override
+    public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws 
HyracksDataException {
+        IAsterixListBuilder listBuilder = new OrderedListBuilder();
+        listBuilder.reset(listType);
+        ArrayBackedValueStorage fieldValue = new ArrayBackedValueStorage();
+        for (IJObject jObject : jObjects) {
+            fieldValue.reset();
+            jObject.serialize(fieldValue.getDataOutput(), true);
+            listBuilder.addItem(fieldValue);
+        }
+        listBuilder.write(dataOutput, writeTypeTag);
+
+    }
+
+    @Override
+    public void reset() {
+        jObjects.clear();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JPoint.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JPoint.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JPoint.java
new file mode 100644
index 0000000..e3eba28
--- /dev/null
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JPoint.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.external.library.java.base;
+
+import 
org.apache.asterix.dataflow.data.nontagged.serde.APointSerializerDeserializer;
+import org.apache.asterix.om.base.AMutablePoint;
+import org.apache.asterix.om.base.APoint;
+import org.apache.asterix.om.base.IAObject;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+import java.io.DataOutput;
+
+public final class JPoint extends JObject {
+
+    public JPoint(double x, double y) {
+        super(new AMutablePoint(x, y));
+    }
+
+    public void setValue(double x, double y) {
+        ((AMutablePoint) value).setValue(x, y);
+    }
+
+    public double getXValue() {
+        return ((AMutablePoint) value).getX();
+    }
+
+    public double getYValue() {
+        return ((AMutablePoint) value).getY();
+    }
+
+    public IAObject getValue() {
+        return value;
+    }
+
+    @Override
+    public String toString() {
+        return value.toString();
+    }
+
+    @Override
+    public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws 
HyracksDataException {
+        serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.POINT);
+        APointSerializerDeserializer.INSTANCE.serialize((APoint) value, 
dataOutput);
+    }
+
+    @Override
+    public void reset() {
+        ((AMutablePoint) value).setValue(0, 0);
+    }
+
+    @Override
+    public IAType getIAType() {
+        return BuiltinType.APOINT;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JPoint3D.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JPoint3D.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JPoint3D.java
new file mode 100644
index 0000000..59d220b
--- /dev/null
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JPoint3D.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.external.library.java.base;
+
+import 
org.apache.asterix.dataflow.data.nontagged.serde.APoint3DSerializerDeserializer;
+import org.apache.asterix.om.base.AMutablePoint3D;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+import java.io.DataOutput;
+
+public final class JPoint3D extends JObject {
+
+    public JPoint3D(double x, double y, double z) {
+        super(new AMutablePoint3D(x, y, z));
+    }
+
+    public void setValue(double x, double y, double z) {
+        ((AMutablePoint3D) value).setValue(x, y, z);
+    }
+
+    public double getXValue() {
+        return ((AMutablePoint3D) value).getX();
+    }
+
+    public double getYValue() {
+        return ((AMutablePoint3D) value).getY();
+    }
+
+    public double getZValue() {
+        return ((AMutablePoint3D) value).getZ();
+    }
+
+    @Override
+    public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws 
HyracksDataException {
+        serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.POINT3D);
+        APoint3DSerializerDeserializer.INSTANCE.serialize((AMutablePoint3D) 
value, dataOutput);
+    }
+
+    @Override
+    public void reset() {
+        ((AMutablePoint3D) value).setValue(0, 0, 0);
+    }
+
+    @Override
+    public IAType getIAType() {
+        return BuiltinType.APOINT3D;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JPolygon.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JPolygon.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JPolygon.java
new file mode 100644
index 0000000..520665b
--- /dev/null
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JPolygon.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.external.library.java.base;
+
+import 
org.apache.asterix.dataflow.data.nontagged.serde.APolygonSerializerDeserializer;
+import org.apache.asterix.om.base.AMutablePolygon;
+import org.apache.asterix.om.base.APoint;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+import java.io.DataOutput;
+
+public final class JPolygon extends JObject {
+
+    public JPolygon(JPoint[] points) {
+        super(new AMutablePolygon(getAPoints(points)));
+    }
+
+    public void setValue(APoint[] points) {
+        ((AMutablePolygon) value).setValue(points);
+    }
+
+    public void setValue(JPoint[] points) {
+        ((AMutablePolygon) value).setValue(getAPoints(points));
+    }
+
+    public APoint[] getValue() {
+        return ((AMutablePolygon) value).getPoints();
+    }
+
+    @Override
+    public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws 
HyracksDataException {
+        serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.POLYGON);
+        APolygonSerializerDeserializer.INSTANCE.serialize((AMutablePolygon) 
value, dataOutput);
+    }
+
+    @Override
+    public void reset() {
+        ((AMutablePolygon) value).setValue(null);
+    }
+
+    protected static APoint[] getAPoints(JPoint[] jpoints) {
+        APoint[] apoints = new APoint[jpoints.length];
+        int index = 0;
+        for (JPoint jpoint : jpoints) {
+            apoints[index++] = (APoint) jpoint.getIAObject();
+        }
+        return apoints;
+    }
+
+    @Override
+    public IAType getIAType() {
+        return BuiltinType.APOLYGON;
+    }
+}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRecord.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRecord.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRecord.java
new file mode 100644
index 0000000..2792cb4
--- /dev/null
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRecord.java
@@ -0,0 +1,198 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.external.library.java.base;
+
+import org.apache.asterix.builders.RecordBuilder;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
+import 
org.apache.asterix.dataflow.data.nontagged.serde.ARecordSerializerDeserializer;
+import 
org.apache.asterix.dataflow.data.nontagged.serde.AStringSerializerDeserializer;
+import org.apache.asterix.external.api.IJObject;
+import org.apache.asterix.om.base.AMutableString;
+import org.apache.asterix.om.base.ARecord;
+import org.apache.asterix.om.base.IAObject;
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.IAType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+
+import java.io.DataOutput;
+import java.io.IOException;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public final class JRecord implements IJObject {
+
+    private static final AStringSerializerDeserializer aStringSerDer = 
AStringSerializerDeserializer.INSTANCE;
+    private ARecordType recordType;
+    private IJObject[] fields;
+    private Map<String, IJObject> openFields;
+    RecordBuilder recordBuilder = new RecordBuilder();
+    ArrayBackedValueStorage fieldNameBuffer = new ArrayBackedValueStorage();
+    ArrayBackedValueStorage fieldValueBuffer = new ArrayBackedValueStorage();
+    AMutableString nameString = new AMutableString("");
+
+    public JRecord(ARecordType recordType, IJObject[] fields) {
+        this.recordType = recordType;
+        this.fields = fields;
+        this.openFields = new LinkedHashMap<>();
+    }
+
+    public JRecord(ARecordType recordType, IJObject[] fields, Map<String, 
IJObject> openFields) {
+        this(recordType, fields);
+        this.openFields = openFields;
+    }
+
+    public void addField(String fieldName, IJObject fieldValue) throws 
HyracksDataException {
+        int pos = getFieldPosByName(fieldName);
+        if (pos >= 0) {
+            throw new 
RuntimeDataException(ErrorCode.LIBRARY_JAVA_JOBJECTS_FIELD_ALREADY_DEFINED, 
"closed");
+        }
+        if (openFields.get(fieldName) != null) {
+            throw new 
RuntimeDataException(ErrorCode.LIBRARY_JAVA_JOBJECTS_FIELD_ALREADY_DEFINED, 
"open");
+        }
+        openFields.put(fieldName, fieldValue);
+    }
+
+    public IJObject getValueByName(String fieldName) throws 
HyracksDataException {
+        // check closed part
+        int fieldPos = getFieldPosByName(fieldName);
+        if (fieldPos >= 0) {
+            return fields[fieldPos];
+        } else {
+            // check open part
+            IJObject fieldValue = openFields.get(fieldName);
+            if (fieldValue == null) {
+                throw new 
RuntimeDataException(ErrorCode.LIBRARY_JAVA_JOBJECTS_UNKNOWN_FIELD, fieldName);
+            }
+            return fieldValue;
+        }
+    }
+
+    public void setValueAtPos(int pos, IJObject jObject) {
+        fields[pos] = jObject;
+    }
+
+    public IAType getIAType() {
+        return recordType;
+    }
+
+    public void setField(String fieldName, IJObject fieldValue) throws 
HyracksDataException {
+        int pos = getFieldPosByName(fieldName);
+        if (pos >= 0) {
+            fields[pos] = fieldValue;
+        } else {
+            if (openFields.get(fieldName) != null) {
+                openFields.put(fieldName, fieldValue);
+            } else {
+                throw new 
RuntimeDataException(ErrorCode.LIBRARY_JAVA_JOBJECTS_UNKNOWN_FIELD, fieldName);
+            }
+        }
+    }
+
+    private int getFieldPosByName(String fieldName) {
+        int index = 0;
+        String[] fieldNames = recordType.getFieldNames();
+        for (String name : fieldNames) {
+            if (name.equals(fieldName)) {
+                return index;
+            }
+            index++;
+        }
+        return -1;
+    }
+
+    public ARecordType getRecordType() {
+        return recordType;
+    }
+
+    @Override
+    public void serialize(DataOutput output, boolean writeTypeTag) throws 
HyracksDataException {
+        recordBuilder.reset(recordType);
+        int index = 0;
+        for (IJObject jObject : fields) {
+            fieldValueBuffer.reset();
+            jObject.serialize(fieldValueBuffer.getDataOutput(), writeTypeTag);
+            recordBuilder.addField(index, fieldValueBuffer);
+            index++;
+        }
+
+        try {
+            if (openFields != null && !openFields.isEmpty()) {
+                for (Map.Entry<String, IJObject> entry : 
openFields.entrySet()) {
+                    fieldNameBuffer.reset();
+                    fieldValueBuffer.reset();
+                    nameString.setValue(entry.getKey());
+                    
fieldNameBuffer.getDataOutput().write(ATypeTag.STRING.serialize());
+                    aStringSerDer.serialize(nameString, 
fieldNameBuffer.getDataOutput());
+                    
entry.getValue().serialize(fieldValueBuffer.getDataOutput(), true);
+                    recordBuilder.addField(fieldNameBuffer, fieldValueBuffer);
+                }
+            }
+        } catch (IOException ae) {
+            throw new HyracksDataException(ae);
+        }
+        recordBuilder.write(output, writeTypeTag);
+    }
+
+    @Override
+    public IAObject getIAObject() {
+        // As the open part can be changed any time, we cannot pre-allocate 
the arrays.
+        int numberOfOpenFields = openFields.size();
+        String[] openFieldNames = new String[numberOfOpenFields];
+        IAType[] openFieldTypes = new IAType[numberOfOpenFields];
+        IAObject[] openFieldValues = new IAObject[numberOfOpenFields];
+        IAObject[] closedFieldValues = new IAObject[fields.length];
+        int idx = 0;
+        for (Map.Entry<String, IJObject> entry : openFields.entrySet()) {
+            openFieldNames[idx] = entry.getKey();
+            openFieldTypes[idx] = entry.getValue().getIAObject().getType();
+            openFieldValues[idx] = entry.getValue().getIAObject();
+        }
+        for (int iter1 = 0; iter1 < fields.length; iter1++) {
+            closedFieldValues[iter1] = fields[iter1].getIAObject();
+        }
+        ARecordType openPartRecType = new ARecordType(null, openFieldNames, 
openFieldTypes, true);
+        ARecordType mergedRecordType = 
ARecordSerializerDeserializer.mergeRecordTypes(recordType, openPartRecType);
+        IAObject[] mergedFields = 
ARecordSerializerDeserializer.mergeFields(closedFieldValues, openFieldValues);
+
+        return new ARecord(mergedRecordType, mergedFields);
+    }
+
+    @Override
+    public void reset() throws HyracksDataException {
+        if (openFields != null && !openFields.isEmpty()) {
+            openFields.clear();
+        }
+        if (fields != null) {
+            for (IJObject field : fields) {
+                if (field != null) {
+                    field.reset();
+                }
+            }
+        }
+    }
+
+    public void reset(IJObject[] fields, Map<String, IJObject> openFields) 
throws HyracksDataException {
+        this.reset();
+        this.fields = fields;
+        this.openFields = openFields;
+    }
+}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRectangle.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRectangle.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRectangle.java
new file mode 100644
index 0000000..73c046e
--- /dev/null
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JRectangle.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.external.library.java.base;
+
+import 
org.apache.asterix.dataflow.data.nontagged.serde.ARectangleSerializerDeserializer;
+import org.apache.asterix.om.base.AMutableRectangle;
+import org.apache.asterix.om.base.APoint;
+import org.apache.asterix.om.base.ARectangle;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+import java.io.DataOutput;
+
+public final class JRectangle extends JObject {
+
+    public JRectangle(JPoint p1, JPoint p2) {
+        super(new AMutableRectangle((APoint) p1.getIAObject(), (APoint) 
p2.getIAObject()));
+    }
+
+    public void setValue(JPoint p1, JPoint p2) {
+        ((AMutableRectangle) value).setValue((APoint) p1.getValue(), (APoint) 
p2.getValue());
+    }
+
+    public void setValue(APoint p1, APoint p2) {
+        ((AMutableRectangle) value).setValue(p1, p2);
+    }
+
+    public ARectangle getValue() {
+        return (AMutableRectangle) value;
+    }
+
+    public IAType getIAType() {
+        return BuiltinType.ARECTANGLE;
+    }
+
+    @Override
+    public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws 
HyracksDataException {
+        serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.RECTANGLE);
+        ARectangleSerializerDeserializer.INSTANCE.serialize((ARectangle) 
value, dataOutput);
+    }
+
+    @Override
+    public void reset() {
+        ((AMutableRectangle) value).setValue(null, null);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JShort.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JShort.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JShort.java
new file mode 100644
index 0000000..da9b2ae
--- /dev/null
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JShort.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.external.library.java.base;
+
+import 
org.apache.asterix.dataflow.data.nontagged.serde.AInt16SerializerDeserializer;
+import org.apache.asterix.om.base.AInt16;
+import org.apache.asterix.om.base.AMutableInt16;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+import java.io.DataOutput;
+
+public final class JShort extends JObject {
+
+    public JShort(short value) {
+        super(new AMutableInt16(value));
+    }
+
+    public void setValue(short v) {
+        ((AMutableInt16) value).setValue(v);
+    }
+
+    public short getValue() {
+        return ((AMutableInt16) value).getShortValue();
+    }
+
+    @Override
+    public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws 
HyracksDataException {
+        serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.SMALLINT);
+        AInt16SerializerDeserializer.INSTANCE.serialize((AInt16) value, 
dataOutput);
+    }
+
+    @Override
+    public void reset() {
+        ((AMutableInt16) value).setValue((short) 0);
+    }
+
+    @Override
+    public IAType getIAType() {
+        return BuiltinType.AINT16;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JString.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JString.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JString.java
new file mode 100644
index 0000000..a8d5d90
--- /dev/null
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JString.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.external.library.java.base;
+
+import 
org.apache.asterix.dataflow.data.nontagged.serde.AStringSerializerDeserializer;
+import org.apache.asterix.om.base.AMutableString;
+import org.apache.asterix.om.base.AString;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+import java.io.DataOutput;
+
+public final class JString extends JObject {
+
+    public JString(String v) {
+        super(new AMutableString(v));
+    }
+
+    public void setValue(String v) {
+        ((AMutableString) value).setValue(v);
+    }
+
+    public String getValue() {
+        return ((AMutableString) value).getStringValue();
+    }
+
+    @Override
+    public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws 
HyracksDataException {
+        serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.STRING);
+        AStringSerializerDeserializer.INSTANCE.serialize((AString) value, 
dataOutput);
+    }
+
+    @Override
+    public void reset() {
+        ((AMutableString) value).setValue("");
+    }
+
+    @Override
+    public IAType getIAType() {
+        return BuiltinType.ASTRING;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JTime.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JTime.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JTime.java
new file mode 100644
index 0000000..1226dd5
--- /dev/null
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JTime.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.external.library.java.base;
+
+import 
org.apache.asterix.dataflow.data.nontagged.serde.ATimeSerializerDeserializer;
+import org.apache.asterix.om.base.AMutableTime;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+import java.io.DataOutput;
+
+public final class JTime extends JObject {
+
+    public JTime(int timeInMillsec) {
+        super(new AMutableTime(timeInMillsec));
+    }
+
+    public void setValue(int timeInMillsec) {
+        ((AMutableTime) value).setValue(timeInMillsec);
+    }
+
+    public int getValue() {
+        return ((AMutableTime) value).getChrononTime();
+    }
+
+    @Override
+    public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws 
HyracksDataException {
+        serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.TIME);
+        ATimeSerializerDeserializer.INSTANCE.serialize((AMutableTime) value, 
dataOutput);
+    }
+
+    @Override
+    public void reset() {
+        ((AMutableTime) value).setValue(0);
+    }
+
+    @Override
+    public IAType getIAType() {
+        return BuiltinType.ATIME;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JUnorderedList.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JUnorderedList.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JUnorderedList.java
new file mode 100644
index 0000000..2d45ef9
--- /dev/null
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JUnorderedList.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.external.library.java.base;
+
+import org.apache.asterix.builders.IAsterixListBuilder;
+import org.apache.asterix.builders.UnorderedListBuilder;
+import org.apache.asterix.external.api.IJObject;
+import org.apache.asterix.external.api.IJType;
+import org.apache.asterix.om.base.AMutableUnorderedList;
+import org.apache.asterix.om.base.IAObject;
+import org.apache.asterix.om.types.AUnorderedListType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+
+import java.io.DataOutput;
+import java.util.List;
+
+public final class JUnorderedList extends JList {
+
+    private AUnorderedListType listType;
+
+    public JUnorderedList(IJType elementType) {
+        super();
+        this.listType = new AUnorderedListType(elementType.getIAType(), null);
+    }
+
+    public JUnorderedList(IAType elementType) {
+        super();
+        this.listType = new AUnorderedListType(elementType, null);
+    }
+
+    public List<IJObject> getValue() {
+        return jObjects;
+    }
+
+    @Override
+    public void add(IJObject jObject) {
+        jObjects.add(jObject);
+    }
+
+    @Override
+    public IAType getIAType() {
+        return listType;
+    }
+
+    @Override
+    public IAObject getIAObject() {
+        AMutableUnorderedList v = new AMutableUnorderedList(listType);
+        for (IJObject jObj : jObjects) {
+            v.add(jObj.getIAObject());
+        }
+        return v;
+    }
+
+    @Override
+    public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws 
HyracksDataException {
+        IAsterixListBuilder listBuilder = new UnorderedListBuilder();
+        listBuilder.reset(listType);
+        ArrayBackedValueStorage fieldValue = new ArrayBackedValueStorage();
+        for (IJObject jObject : jObjects) {
+            fieldValue.reset();
+            jObject.serialize(fieldValue.getDataOutput(), true);
+            listBuilder.addItem(fieldValue);
+        }
+        listBuilder.write(dataOutput, writeTypeTag);
+    }
+
+    @Override
+    public void reset() {
+        jObjects.clear();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddHashTagsFunction.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddHashTagsFunction.java
 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddHashTagsFunction.java
index 3c6881a..1b5fecd 100644
--- 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddHashTagsFunction.java
+++ 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddHashTagsFunction.java
@@ -18,11 +18,12 @@
  */
 package org.apache.asterix.external.library;
 
-import org.apache.asterix.external.library.java.JObjects.JDouble;
-import org.apache.asterix.external.library.java.JObjects.JPoint;
-import org.apache.asterix.external.library.java.JObjects.JRecord;
-import org.apache.asterix.external.library.java.JObjects.JString;
-import org.apache.asterix.external.library.java.JObjects.JUnorderedList;
+import org.apache.asterix.external.library.java.JBuiltinType;
+import org.apache.asterix.external.library.java.base.JDouble;
+import org.apache.asterix.external.library.java.base.JPoint;
+import org.apache.asterix.external.library.java.base.JRecord;
+import org.apache.asterix.external.library.java.base.JString;
+import org.apache.asterix.external.library.java.base.JUnorderedList;
 import org.apache.asterix.external.api.IExternalScalarFunction;
 import org.apache.asterix.external.api.IFunctionHelper;
 import org.apache.asterix.external.library.java.JTypeTag;
@@ -34,8 +35,8 @@ public class AddHashTagsFunction implements 
IExternalScalarFunction {
     private JPoint location = null;
 
     @Override
-    public void initialize(IFunctionHelper functionHelper) throws Exception {
-        list = new JUnorderedList(functionHelper.getObject(JTypeTag.STRING));
+    public void initialize(IFunctionHelper functionHelper) {
+        list = new JUnorderedList(JBuiltinType.JSTRING);
         location = new JPoint(0, 0);
     }
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddHashTagsInPlaceFunction.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddHashTagsInPlaceFunction.java
 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddHashTagsInPlaceFunction.java
index 57c8f1d..7873835 100644
--- 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddHashTagsInPlaceFunction.java
+++ 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AddHashTagsInPlaceFunction.java
@@ -18,9 +18,10 @@
  */
 package org.apache.asterix.external.library;
 
-import org.apache.asterix.external.library.java.JObjects.JRecord;
-import org.apache.asterix.external.library.java.JObjects.JString;
-import org.apache.asterix.external.library.java.JObjects.JUnorderedList;
+import org.apache.asterix.external.library.java.JBuiltinType;
+import org.apache.asterix.external.library.java.base.JRecord;
+import org.apache.asterix.external.library.java.base.JString;
+import org.apache.asterix.external.library.java.base.JUnorderedList;
 import org.apache.asterix.external.api.IExternalScalarFunction;
 import org.apache.asterix.external.api.IFunctionHelper;
 import org.apache.asterix.external.library.java.JTypeTag;
@@ -31,8 +32,8 @@ public class AddHashTagsInPlaceFunction implements 
IExternalScalarFunction {
     private JUnorderedList list = null;
 
     @Override
-    public void initialize(IFunctionHelper functionHelper) throws Exception {
-        list = new JUnorderedList(functionHelper.getObject(JTypeTag.STRING));
+    public void initialize(IFunctionHelper functionHelper) {
+        list = new JUnorderedList(JBuiltinType.JSTRING);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AllTypesFunction.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AllTypesFunction.java
 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AllTypesFunction.java
index aad83dd..1932d4c 100644
--- 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AllTypesFunction.java
+++ 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/AllTypesFunction.java
@@ -18,23 +18,24 @@
  */
 package org.apache.asterix.external.library;
 
-import org.apache.asterix.external.library.java.JObjects.JBoolean;
-import org.apache.asterix.external.library.java.JObjects.JCircle;
-import org.apache.asterix.external.library.java.JObjects.JDate;
-import org.apache.asterix.external.library.java.JObjects.JDateTime;
-import org.apache.asterix.external.library.java.JObjects.JDouble;
-import org.apache.asterix.external.library.java.JObjects.JDuration;
-import org.apache.asterix.external.library.java.JObjects.JFloat;
-import org.apache.asterix.external.library.java.JObjects.JInt;
-import org.apache.asterix.external.library.java.JObjects.JLine;
-import org.apache.asterix.external.library.java.JObjects.JOrderedList;
-import org.apache.asterix.external.library.java.JObjects.JPoint;
-import org.apache.asterix.external.library.java.JObjects.JPoint3D;
-import org.apache.asterix.external.library.java.JObjects.JPolygon;
-import org.apache.asterix.external.library.java.JObjects.JRecord;
-import org.apache.asterix.external.library.java.JObjects.JString;
-import org.apache.asterix.external.library.java.JObjects.JTime;
-import org.apache.asterix.external.library.java.JObjects.JUnorderedList;
+import org.apache.asterix.external.library.java.base.JBoolean;
+import org.apache.asterix.external.library.java.JBuiltinType;
+import org.apache.asterix.external.library.java.base.JCircle;
+import org.apache.asterix.external.library.java.base.JDate;
+import org.apache.asterix.external.library.java.base.JDateTime;
+import org.apache.asterix.external.library.java.base.JDouble;
+import org.apache.asterix.external.library.java.base.JDuration;
+import org.apache.asterix.external.library.java.base.JFloat;
+import org.apache.asterix.external.library.java.base.JInt;
+import org.apache.asterix.external.library.java.base.JLine;
+import org.apache.asterix.external.library.java.base.JOrderedList;
+import org.apache.asterix.external.library.java.base.JPoint;
+import org.apache.asterix.external.library.java.base.JPoint3D;
+import org.apache.asterix.external.library.java.base.JPolygon;
+import org.apache.asterix.external.library.java.base.JRecord;
+import org.apache.asterix.external.library.java.base.JString;
+import org.apache.asterix.external.library.java.base.JTime;
+import org.apache.asterix.external.library.java.base.JUnorderedList;
 import org.apache.asterix.external.api.IExternalScalarFunction;
 import org.apache.asterix.external.api.IFunctionHelper;
 import org.apache.asterix.external.library.java.JTypeTag;
@@ -45,7 +46,7 @@ public class AllTypesFunction implements 
IExternalScalarFunction {
 
     @Override
     public void initialize(IFunctionHelper functionHelper) throws Exception {
-        newFieldList = new 
JOrderedList(functionHelper.getObject(JTypeTag.INT));
+        newFieldList = new JOrderedList(JBuiltinType.JINT);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/CapitalFinderFunction.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/CapitalFinderFunction.java
 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/CapitalFinderFunction.java
index cc32f45..4f7e410 100644
--- 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/CapitalFinderFunction.java
+++ 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/CapitalFinderFunction.java
@@ -21,11 +21,10 @@ package org.apache.asterix.external.library;
 import java.io.InputStream;
 import java.util.Properties;
 
-import org.apache.asterix.external.library.java.JObjects.JRecord;
-import org.apache.asterix.external.library.java.JObjects.JString;
+import org.apache.asterix.external.library.java.base.JRecord;
+import org.apache.asterix.external.library.java.base.JString;
 import org.apache.asterix.external.api.IExternalScalarFunction;
 import org.apache.asterix.external.api.IFunctionHelper;
-import org.apache.asterix.external.library.java.JTypeTag;
 
 public class CapitalFinderFunction implements IExternalScalarFunction {
 
@@ -56,7 +55,7 @@ public class CapitalFinderFunction implements 
IExternalScalarFunction {
                 
CapitalFinderFunction.class.getClassLoader().getResourceAsStream("data/countriesCapitals.properties");
         capitalList = new Properties();
         capitalList.load(in);
-        capital = (JString) functionHelper.getObject(JTypeTag.STRING);
+        capital = new JString("");
     }
 
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/EchoDelayFunction.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/EchoDelayFunction.java
 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/EchoDelayFunction.java
index c115ac4..e3a0741 100644
--- 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/EchoDelayFunction.java
+++ 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/EchoDelayFunction.java
@@ -22,7 +22,7 @@ import java.util.Random;
 
 import org.apache.asterix.external.api.IExternalScalarFunction;
 import org.apache.asterix.external.api.IFunctionHelper;
-import org.apache.asterix.external.library.java.JObjects.JRecord;
+import org.apache.asterix.external.library.java.base.JRecord;
 
 public class EchoDelayFunction implements IExternalScalarFunction {
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/KeywordsDetectorFunction.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/KeywordsDetectorFunction.java
 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/KeywordsDetectorFunction.java
index d12f080..1745e40 100644
--- 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/KeywordsDetectorFunction.java
+++ 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/KeywordsDetectorFunction.java
@@ -21,7 +21,9 @@ package org.apache.asterix.external.library;
 
 import org.apache.asterix.external.api.IExternalScalarFunction;
 import org.apache.asterix.external.api.IFunctionHelper;
-import org.apache.asterix.external.library.java.JObjects;
+import org.apache.asterix.external.library.java.base.JRecord;
+import org.apache.asterix.external.library.java.base.JBoolean;
+import org.apache.asterix.external.library.java.base.JString;
 
 import java.nio.file.Files;
 import java.nio.file.Paths;
@@ -36,10 +38,10 @@ public class KeywordsDetectorFunction implements 
IExternalScalarFunction {
 
     @Override
     public void evaluate(IFunctionHelper functionHelper) throws Exception {
-        JObjects.JRecord inputRecord = (JObjects.JRecord) 
functionHelper.getArgument(0);
-        JObjects.JRecord outputRecord = (JObjects.JRecord) 
functionHelper.getResultObject();
-        JObjects.JBoolean chkVal = new JObjects.JBoolean(false);
-        String fieldValue = ((JObjects.JString) 
inputRecord.getValueByName(fieldName)).getValue();
+        JRecord inputRecord = (JRecord) functionHelper.getArgument(0);
+        JRecord outputRecord = (JRecord) functionHelper.getResultObject();
+        JBoolean chkVal = new JBoolean(false);
+        String fieldValue = ((JString) 
inputRecord.getValueByName(fieldName)).getValue();
 
         chkVal.setValue(keywordsList.contains(fieldValue));
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ParseTweetFunction.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ParseTweetFunction.java
 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ParseTweetFunction.java
index 7167ac9..c2aca5d 100644
--- 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ParseTweetFunction.java
+++ 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ParseTweetFunction.java
@@ -18,21 +18,21 @@
  */
 package org.apache.asterix.external.library;
 
-import org.apache.asterix.external.library.java.JObjects.JRecord;
-import org.apache.asterix.external.library.java.JObjects.JString;
-import org.apache.asterix.external.library.java.JObjects.JUnorderedList;
+import org.apache.asterix.external.library.java.base.JRecord;
+import org.apache.asterix.external.library.java.JBuiltinType;
+import org.apache.asterix.external.library.java.base.JString;
+import org.apache.asterix.external.library.java.base.JUnorderedList;
 import org.apache.asterix.external.api.IExternalScalarFunction;
 import org.apache.asterix.external.api.IFunctionHelper;
 import org.apache.asterix.external.library.java.JTypeTag;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public class ParseTweetFunction implements IExternalScalarFunction {
 
     private JUnorderedList list = null;
 
     @Override
-    public void initialize(IFunctionHelper functionHelper) throws Exception {
-        list = new JUnorderedList(functionHelper.getObject(JTypeTag.STRING));
+    public void initialize(IFunctionHelper functionHelper) {
+        list = new JUnorderedList(JBuiltinType.JSTRING);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/SumFunction.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/SumFunction.java
 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/SumFunction.java
index d81f01b..e16d779 100644
--- 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/SumFunction.java
+++ 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/SumFunction.java
@@ -20,7 +20,7 @@ package org.apache.asterix.external.library;
 
 import org.apache.asterix.external.api.IExternalScalarFunction;
 import org.apache.asterix.external.api.IFunctionHelper;
-import org.apache.asterix.external.library.java.JObjects.JInt;
+import org.apache.asterix.external.library.java.base.JInt;
 
 public class SumFunction implements IExternalScalarFunction {
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/UpperCaseFunction.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/UpperCaseFunction.java
 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/UpperCaseFunction.java
index 16f8b0a..82f77ac 100644
--- 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/UpperCaseFunction.java
+++ 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/UpperCaseFunction.java
@@ -20,9 +20,9 @@ package org.apache.asterix.external.library;
 
 import org.apache.asterix.external.api.IExternalScalarFunction;
 import org.apache.asterix.external.api.IFunctionHelper;
-import org.apache.asterix.external.library.java.JObjects.JInt;
-import org.apache.asterix.external.library.java.JObjects.JRecord;
-import org.apache.asterix.external.library.java.JObjects.JString;
+import org.apache.asterix.external.library.java.base.JInt;
+import org.apache.asterix.external.library.java.base.JRecord;
+import org.apache.asterix.external.library.java.base.JString;
 
 /**
  * Accepts an input record of type Open{ id: int32, text: string }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/serde/ARecordSerializerDeserializer.java
----------------------------------------------------------------------
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 af36c78..97c49e0 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
@@ -235,7 +235,7 @@ public class ARecordSerializerDeserializer implements 
ISerializerDeserializer<AR
         confRecordBuilder.write(dataOutput, writeTypeTag);
     }
 
-    private IAObject[] mergeFields(IAObject[] closedFields, IAObject[] 
openFields) {
+    public static IAObject[] mergeFields(IAObject[] closedFields, IAObject[] 
openFields) {
         IAObject[] fields = new IAObject[closedFields.length + 
openFields.length];
         int i = 0;
         for (; i < closedFields.length; i++) {
@@ -247,7 +247,7 @@ public class ARecordSerializerDeserializer implements 
ISerializerDeserializer<AR
         return fields;
     }
 
-    private ARecordType mergeRecordTypes(ARecordType recType1, ARecordType 
recType2) {
+    public static ARecordType mergeRecordTypes(ARecordType recType1, 
ARecordType recType2) {
         String[] fieldNames = new String[recType1.getFieldNames().length + 
recType2.getFieldNames().length];
         IAType[] fieldTypes = new IAType[recType1.getFieldTypes().length + 
recType2.getFieldTypes().length];
 

Reply via email to