You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by ti...@apache.org on 2018/03/11 00:21:29 UTC
[2/3] asterixdb git commit: [NO ISSUE][EXT] Java UDF framework
refactoring
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java
deleted file mode 100644
index 819d523..0000000
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java
+++ /dev/null
@@ -1,1202 +0,0 @@
-/*
- * 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;
-
-import java.io.ByteArrayInputStream;
-import java.io.DataInputStream;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.apache.asterix.builders.IAsterixListBuilder;
-import org.apache.asterix.builders.RecordBuilder;
-import org.apache.asterix.builders.UnorderedListBuilder;
-import org.apache.asterix.common.exceptions.ErrorCode;
-import org.apache.asterix.common.exceptions.RuntimeDataException;
-import org.apache.asterix.dataflow.data.nontagged.serde.ABooleanSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.ACircleSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.ADateSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.ADateTimeSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.ADoubleSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.ADurationSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.AFloatSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt16SerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt32SerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.AInt8SerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.AIntervalSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.ALineSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.APoint3DSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.APointSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.APolygonSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.ARectangleSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.AStringSerializerDeserializer;
-import org.apache.asterix.dataflow.data.nontagged.serde.ATimeSerializerDeserializer;
-import org.apache.asterix.external.api.IJObject;
-import org.apache.asterix.om.base.ABoolean;
-import org.apache.asterix.om.base.ADouble;
-import org.apache.asterix.om.base.AFloat;
-import org.apache.asterix.om.base.AInt32;
-import org.apache.asterix.om.base.AInt64;
-import org.apache.asterix.om.base.AInt8;
-import org.apache.asterix.om.base.AMissing;
-import org.apache.asterix.om.base.AMutableCircle;
-import org.apache.asterix.om.base.AMutableDate;
-import org.apache.asterix.om.base.AMutableDateTime;
-import org.apache.asterix.om.base.AMutableDouble;
-import org.apache.asterix.om.base.AMutableDuration;
-import org.apache.asterix.om.base.AMutableFloat;
-import org.apache.asterix.om.base.AMutableInt16;
-import org.apache.asterix.om.base.AMutableInt32;
-import org.apache.asterix.om.base.AMutableInt64;
-import org.apache.asterix.om.base.AMutableInt8;
-import org.apache.asterix.om.base.AMutableInterval;
-import org.apache.asterix.om.base.AMutableLine;
-import org.apache.asterix.om.base.AMutableOrderedList;
-import org.apache.asterix.om.base.AMutablePoint;
-import org.apache.asterix.om.base.AMutablePoint3D;
-import org.apache.asterix.om.base.AMutablePolygon;
-import org.apache.asterix.om.base.AMutableRecord;
-import org.apache.asterix.om.base.AMutableRectangle;
-import org.apache.asterix.om.base.AMutableString;
-import org.apache.asterix.om.base.AMutableTime;
-import org.apache.asterix.om.base.AMutableUnorderedList;
-import org.apache.asterix.om.base.ANull;
-import org.apache.asterix.om.base.APoint;
-import org.apache.asterix.om.base.ARectangle;
-import org.apache.asterix.om.base.AString;
-import org.apache.asterix.om.base.IAObject;
-import org.apache.asterix.om.types.AOrderedListType;
-import org.apache.asterix.om.types.ARecordType;
-import org.apache.asterix.om.types.ATypeTag;
-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;
-
-public class JObjects {
-
- public static abstract class JObject implements IJObject {
-
- protected IAObject value;
- protected byte[] bytes;
-
- protected JObject(IAObject value) {
- this.value = value;
- }
-
- @Override
- public ATypeTag getTypeTag() {
- return value.getType().getTypeTag();
- }
-
- @Override
- public IAObject getIAObject() {
- return value;
- }
-
- }
-
- /*
- * This class is necessary to be able to serialize null objects
- * in cases of setting "null" results
- *
- *
- */
- public static class JNull implements IJObject {
- public final static JNull INSTANCE = new JNull();
-
- private JNull() {
- }
-
- @Override
- public ATypeTag getTypeTag() {
- return ATypeTag.NULL;
- }
-
- @Override
- public IAObject getIAObject() {
- return ANull.NULL;
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(ATypeTag.SERIALIZED_NULL_TYPE_TAG);
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- }
-
- @Override
- public void reset() {
- }
-
- }
-
- public static class JMissing implements IJObject {
- public final static JMissing INSTANCE = new JMissing();
-
- @Override
- public ATypeTag getTypeTag() {
- return ATypeTag.MISSING;
- }
-
- @Override
- public IAObject getIAObject() {
- return AMissing.MISSING;
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(ATypeTag.SERIALIZED_MISSING_TYPE_TAG);
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- }
-
- @Override
- public void reset() throws HyracksDataException {
- // no op
- }
- }
-
- public static final class JByte extends JObject {
-
- public JByte(byte value) {
- super(new AMutableInt8(value));
- }
-
- public void setValue(byte v) {
- ((AMutableInt8) value).setValue(v);
- }
-
- public byte getValue() {
- return ((AMutableInt8) value).getByteValue();
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(value.getType().getTypeTag().serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- AInt8SerializerDeserializer.INSTANCE.serialize((AInt8) value, dataOutput);
- }
-
- @Override
- public void reset() {
- ((AMutableInt8) value).setValue((byte) 0);
- }
- }
-
- public static final class JShort extends JObject {
-
- private AMutableInt16 value;
-
- public JShort(short value) {
- super(new AMutableInt16(value));
- }
-
- public void setValue(byte v) {
- value.setValue(v);
- }
-
- public short getValue() {
- return value.getShortValue();
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(value.getType().getTypeTag().serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- AInt16SerializerDeserializer.INSTANCE.serialize(value, dataOutput);
- }
-
- @Override
- public void reset() {
- value.setValue((short) 0);
- }
-
- }
-
- public static final class JInt extends JObject {
-
- public JInt(int value) {
- super(new AMutableInt32(value));
- }
-
- public void setValue(int v) {
- ((AMutableInt32) value).setValue(v);
- }
-
- public int getValue() {
- return ((AMutableInt32) value).getIntegerValue();
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(value.getType().getTypeTag().serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- AInt32SerializerDeserializer.INSTANCE.serialize((AInt32) value, dataOutput);
- }
-
- @Override
- public void reset() {
- ((AMutableInt32) value).setValue(0);
- }
- }
-
- public static final class JBoolean implements IJObject {
-
- private boolean value;
-
- public JBoolean(boolean value) {
- this.value = value;
- }
-
- public void setValue(boolean value) {
- this.value = value;
- }
-
- @Override
- public ATypeTag getTypeTag() {
- return ATypeTag.BOOLEAN;
- }
-
- @Override
- public IAObject getIAObject() {
- return value ? ABoolean.TRUE : ABoolean.FALSE;
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(ATypeTag.BOOLEAN.serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- ABooleanSerializerDeserializer.INSTANCE.serialize((ABoolean) getIAObject(), dataOutput);
- }
-
- @Override
- public void reset() {
- value = false;
- }
-
- }
-
- public static final class JLong extends JObject {
-
- public JLong(long v) {
- super(new AMutableInt64(v));
- }
-
- public void setValue(long v) {
- ((AMutableInt64) value).setValue(v);
- }
-
- public long getValue() {
- return ((AMutableInt64) value).getLongValue();
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(value.getType().getTypeTag().serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- AInt64SerializerDeserializer.INSTANCE.serialize((AInt64) value, dataOutput);
- }
-
- @Override
- public void reset() {
- ((AMutableInt64) value).setValue(0);
- }
-
- }
-
- public static final class JDouble extends JObject {
-
- public JDouble(double v) {
- super(new AMutableDouble(v));
- }
-
- public void setValue(double v) {
- ((AMutableDouble) value).setValue(v);
- }
-
- public double getValue() {
- return ((AMutableDouble) value).getDoubleValue();
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(value.getType().getTypeTag().serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- ADoubleSerializerDeserializer.INSTANCE.serialize((ADouble) value, dataOutput);
- }
-
- @Override
- public void reset() {
- ((AMutableDouble) value).setValue(0);
- }
-
- }
-
- public static final class JString extends JObject {
-
- private final AStringSerializerDeserializer aStringSerDer = AStringSerializerDeserializer.INSTANCE;
-
- 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 {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(value.getType().getTypeTag().serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- aStringSerDer.serialize((AString) value, dataOutput);
- }
-
- @Override
- public void reset() {
- ((AMutableString) value).setValue("");
- }
-
- }
-
- public static final class JFloat extends JObject {
-
- public JFloat(float v) {
- super(new AMutableFloat(v));
- }
-
- public void setValue(float v) {
- ((AMutableFloat) value).setValue(v);
- }
-
- public float getValue() {
- return ((AMutableFloat) value).getFloatValue();
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(value.getType().getTypeTag().serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- AFloatSerializerDeserializer.INSTANCE.serialize((AFloat) value, dataOutput);
- }
-
- @Override
- public void reset() {
- ((AMutableFloat) value).setValue(0);
- }
-
- }
-
- public static 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 {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(value.getType().getTypeTag().serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- APointSerializerDeserializer.INSTANCE.serialize((APoint) value, dataOutput);
- }
-
- @Override
- public void reset() {
- ((AMutablePoint) value).setValue(0, 0);
- }
- }
-
- public static 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);
- }
-
- @Override
- public ATypeTag getTypeTag() {
- return ATypeTag.RECTANGLE;
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(value.getType().getTypeTag().serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- ARectangleSerializerDeserializer.INSTANCE.serialize((ARectangle) value, dataOutput);
- }
-
- @Override
- public void reset() {
- }
-
- }
-
- public static final class JTime extends JObject {
-
- public JTime(int timeInMillsec) {
- super(new AMutableTime(timeInMillsec));
- }
-
- public void setValue(int timeInMillsec) {
- ((AMutableTime) value).setValue(timeInMillsec);
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(ATypeTag.TIME.serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- ATimeSerializerDeserializer.INSTANCE.serialize((AMutableTime) value, dataOutput);
- }
-
- @Override
- public void reset() {
- ((AMutableTime) value).setValue(0);
- }
-
- }
-
- public static final class JInterval extends JObject {
-
- public JInterval(long intervalStart, long intervalEnd) {
- super(new AMutableInterval(intervalStart, intervalEnd, (byte) 0));
- }
-
- public void setValue(long intervalStart, long intervalEnd, byte typetag) throws HyracksDataException {
- ((AMutableInterval) value).setValue(intervalStart, intervalEnd, typetag);
- }
-
- public long getIntervalStart() {
- return ((AMutableInterval) value).getIntervalStart();
- }
-
- public long getIntervalEnd() {
- return ((AMutableInterval) value).getIntervalEnd();
- }
-
- public short getIntervalType() {
- return ((AMutableInterval) value).getIntervalType();
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(ATypeTag.INTERVAL.serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- AIntervalSerializerDeserializer.INSTANCE.serialize(((AMutableInterval) value), dataOutput);
- }
-
- @Override
- public void reset() throws HyracksDataException {
- ((AMutableInterval) value).setValue(0L, 0L, (byte) 0);
- }
-
- }
-
- public static final class JDate extends JObject {
-
- public JDate(int chrononTimeInDays) {
- super(new AMutableDate(chrononTimeInDays));
- }
-
- public void setValue(int chrononTimeInDays) {
- ((AMutableDate) value).setValue(chrononTimeInDays);
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(ATypeTag.DATE.serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- ADateSerializerDeserializer.INSTANCE.serialize(((AMutableDate) value), dataOutput);
- }
-
- @Override
- public void reset() {
- ((AMutableDate) value).setValue(0);
- }
- }
-
- public static final class JDateTime extends JObject {
-
- public JDateTime(long chrononTime) {
- super(new AMutableDateTime(chrononTime));
- }
-
- public void setValue(long chrononTime) {
- ((AMutableDateTime) value).setValue(chrononTime);
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(ATypeTag.DATETIME.serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- ADateTimeSerializerDeserializer.INSTANCE.serialize(((AMutableDateTime) value), dataOutput);
- }
-
- @Override
- public void reset() {
- ((AMutableDateTime) value).setValue(0);
- }
-
- }
-
- public static final class JDuration extends JObject {
-
- public JDuration(int months, long milliseconds) {
- super(new AMutableDuration(months, milliseconds));
- }
-
- public void setValue(int months, long milliseconds) {
- ((AMutableDuration) value).setValue(months, milliseconds);
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(ATypeTag.DURATION.serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- ADurationSerializerDeserializer.INSTANCE.serialize(((AMutableDuration) value), dataOutput);
- }
-
- @Override
- public void reset() {
- ((AMutableDuration) value).setValue(0, 0);
- }
-
- }
-
- public static 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));
- }
-
- private 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 ATypeTag getTypeTag() {
- return ATypeTag.POLYGON;
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(ATypeTag.POLYGON.serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- APolygonSerializerDeserializer.INSTANCE.serialize((AMutablePolygon) value, dataOutput);
- }
-
- @Override
- public void reset() {
- ((AMutablePolygon) value).setValue(null);
- }
-
- }
-
- public static final class JCircle extends JObject {
-
- public JCircle(JPoint center, double radius) {
- super(new AMutableCircle((APoint) center.getIAObject(), radius));
- }
-
- public void setValue(JPoint center, double radius) {
- ((AMutableCircle) (value)).setValue((APoint) center.getIAObject(), radius);
- }
-
- @Override
- public ATypeTag getTypeTag() {
- return ATypeTag.CIRCLE;
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(ATypeTag.CIRCLE.serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- ACircleSerializerDeserializer.INSTANCE.serialize(((AMutableCircle) (value)), dataOutput);
- }
-
- @Override
- public void reset() {
- }
- }
-
- public static final class JLine extends JObject {
-
- public JLine(JPoint p1, JPoint p2) {
- super(new AMutableLine((APoint) p1.getIAObject(), (APoint) p2.getIAObject()));
- }
-
- public void setValue(JPoint p1, JPoint p2) {
- ((AMutableLine) value).setValue((APoint) p1.getIAObject(), (APoint) p2.getIAObject());
- }
-
- public void setValue(APoint p1, APoint p2) {
- ((AMutableLine) value).setValue(p1, p2);
- }
-
- @Override
- public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(ATypeTag.LINE.serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- ALineSerializerDeserializer.INSTANCE.serialize(((AMutableLine) value), dataOutput);
- }
-
- @Override
- public void reset() {
- // TODO Auto-generated method stub
-
- }
-
- }
-
- public static 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 {
- if (writeTypeTag) {
- try {
- dataOutput.writeByte(ATypeTag.POINT3D.serialize());
- } catch (IOException e) {
- throw new HyracksDataException(e);
- }
- }
- APoint3DSerializerDeserializer.INSTANCE.serialize(((AMutablePoint3D) value), dataOutput);
- }
-
- @Override
- public void reset() {
- // TODO Auto-generated method stub
-
- }
- }
-
- public static abstract class JList implements IJObject {
- protected List<IJObject> jObjects;
-
- public JList() {
- jObjects = new ArrayList<IJObject>();
- }
-
- public boolean isEmpty() {
- return jObjects.isEmpty();
- }
-
- public void add(IJObject jObject) {
- jObjects.add(jObject);
- }
-
- public void addAll(Collection<IJObject> jObjectCollection) {
- jObjects.addAll(jObjectCollection);
- }
-
- public void clear() {
- jObjects.clear();
- }
-
- public IJObject getElement(int index) {
- return jObjects.get(index);
- }
-
- public int size() {
- return jObjects.size();
- }
-
- public Iterator<IJObject> iterator() {
- return jObjects.iterator();
- }
- }
-
- public static final class JOrderedList extends JList {
-
- private AOrderedListType listType;
-
- public JOrderedList(IJObject jObject) {
- super();
- this.listType = new AOrderedListType(jObject.getIAObject().getType(), null);
- }
-
- public JOrderedList(IAType listItemType) {
- super();
- this.listType = new AOrderedListType(listItemType, null);
- }
-
- @Override
- public ATypeTag getTypeTag() {
- return ATypeTag.ARRAY;
- }
-
- @Override
- public IAObject getIAObject() {
- AMutableOrderedList v = new AMutableOrderedList(listType);
- for (IJObject jObj : jObjects) {
- v.add(jObj.getIAObject());
- }
- return v;
- }
-
- public AOrderedListType getListType() {
- return listType;
- }
-
- @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() {
- // TODO Auto-generated method stub
-
- }
-
- }
-
- public static final class JUnorderedList extends JList {
-
- private AUnorderedListType listType;
-
- public JUnorderedList(IJObject jObject) {
- this.listType = new AUnorderedListType(jObject.getIAObject().getType(), null);
- this.jObjects = new ArrayList<IJObject>();
- }
-
- public JUnorderedList(IAType listItemType) {
- super();
- this.listType = new AUnorderedListType(listItemType, null);
- this.jObjects = new ArrayList<IJObject>();
- }
-
- @Override
- public void add(IJObject jObject) {
- jObjects.add(jObject);
- }
-
- @Override
- public ATypeTag getTypeTag() {
- return ATypeTag.MULTISET;
- }
-
- @Override
- public IAObject getIAObject() {
- AMutableUnorderedList v = new AMutableUnorderedList(listType);
- for (IJObject jObj : jObjects) {
- v.add(jObj.getIAObject());
- }
- return v;
- }
-
- public AUnorderedListType getListType() {
- return listType;
- }
-
- @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();
- }
-
- }
-
- public static final class JRecord implements IJObject {
-
- private AMutableRecord value;
- private ARecordType recordType;
- private IJObject[] fields;
- private Map<String, IJObject> openFields;
- private final AStringSerializerDeserializer aStringSerDer = AStringSerializerDeserializer.INSTANCE;
-
- public JRecord(ARecordType recordType, IJObject[] fields) {
- this.recordType = recordType;
- this.fields = fields;
- this.openFields = new LinkedHashMap<String, IJObject>();
- }
-
- public JRecord(ARecordType recordType, IJObject[] fields, LinkedHashMap<String, IJObject> openFields) {
- this.recordType = recordType;
- this.fields = 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;
- }
-
- @Override
- public ATypeTag getTypeTag() {
- return recordType.getTypeTag();
- }
-
- 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;
- }
-
- public IJObject[] getFields() {
- return fields;
- }
-
- public Map<String, IJObject> getOpenFields() {
- return this.openFields;
- }
-
- public RecordBuilder getRecordBuilder() {
- RecordBuilder recordBuilder = new RecordBuilder();
- recordBuilder.reset(recordType);
- return recordBuilder;
- }
-
- @Override
- public void serialize(DataOutput output, boolean writeTypeTag) throws HyracksDataException {
- RecordBuilder recordBuilder = new RecordBuilder();
- recordBuilder.reset(recordType);
- int index = 0;
- ArrayBackedValueStorage fieldValue = new ArrayBackedValueStorage();
- for (IJObject jObject : fields) {
- fieldValue.reset();
- jObject.serialize(fieldValue.getDataOutput(), writeTypeTag);
- recordBuilder.addField(index, fieldValue);
- index++;
- }
-
- try {
- if (openFields != null && !openFields.isEmpty()) {
- ArrayBackedValueStorage openFieldName = new ArrayBackedValueStorage();
- ArrayBackedValueStorage openFieldValue = new ArrayBackedValueStorage();
- AMutableString nameValue = new AMutableString(""); // get from the pool
- for (Entry<String, IJObject> entry : openFields.entrySet()) {
- openFieldName.reset();
- openFieldValue.reset();
- nameValue.setValue(entry.getKey());
- openFieldName.getDataOutput().write(ATypeTag.STRING.serialize());
- aStringSerDer.serialize(nameValue, openFieldName.getDataOutput());
- entry.getValue().serialize(openFieldValue.getDataOutput(), true);
- recordBuilder.addField(openFieldName, openFieldValue);
- }
- }
- } catch (IOException ae) {
- throw new HyracksDataException(ae);
- }
- recordBuilder.write(output, writeTypeTag);
- }
-
- @Override
- public IAObject getIAObject() {
- return value;
- }
-
- @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, LinkedHashMap<String, IJObject> openFields) throws HyracksDataException {
- this.reset();
- this.fields = fields;
- this.openFields = openFields;
- }
-
- }
-
- public static class ByteArrayAccessibleInputStream extends ByteArrayInputStream {
-
- public ByteArrayAccessibleInputStream(byte[] buf, int offset, int length) {
- super(buf, offset, length);
- }
-
- public void setContent(byte[] buf, int offset, int length) {
- this.buf = buf;
- this.pos = offset;
- this.count = Math.min(offset + length, buf.length);
- this.mark = offset;
- }
-
- public byte[] getArray() {
- return buf;
- }
-
- public int getPosition() {
- return pos;
- }
-
- public int getCount() {
- return count;
- }
-
- }
-
- public static class ByteArrayAccessibleDataInputStream extends DataInputStream {
-
- public ByteArrayAccessibleDataInputStream(ByteArrayAccessibleInputStream in) {
- super(in);
- }
-
- public ByteArrayAccessibleInputStream getInputStream() {
- return (ByteArrayAccessibleInputStream) in;
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/bb49e5e3/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JTypeTag.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JTypeTag.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JTypeTag.java
index c40b1d4..80f44ff 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JTypeTag.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JTypeTag.java
@@ -19,7 +19,6 @@
package org.apache.asterix.external.library.java;
public enum JTypeTag {
-
INT,
STRING,
LONG,
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/ByteArrayAccessibleDataInputStream.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/ByteArrayAccessibleDataInputStream.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/ByteArrayAccessibleDataInputStream.java
new file mode 100644
index 0000000..b92aa6c
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/ByteArrayAccessibleDataInputStream.java
@@ -0,0 +1,33 @@
+/*
+ * 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 java.io.DataInputStream;
+
+public class ByteArrayAccessibleDataInputStream extends DataInputStream {
+
+ public ByteArrayAccessibleDataInputStream(ByteArrayAccessibleInputStream in) {
+ super(in);
+ }
+
+ public ByteArrayAccessibleInputStream getInputStream() {
+ return (ByteArrayAccessibleInputStream) in;
+ }
+
+}
\ 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/ByteArrayAccessibleInputStream.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/ByteArrayAccessibleInputStream.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/ByteArrayAccessibleInputStream.java
new file mode 100644
index 0000000..62e354b
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/ByteArrayAccessibleInputStream.java
@@ -0,0 +1,48 @@
+/*
+ * 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 java.io.ByteArrayInputStream;
+
+public class ByteArrayAccessibleInputStream extends ByteArrayInputStream {
+
+ public ByteArrayAccessibleInputStream(byte[] buf, int offset, int length) {
+ super(buf, offset, length);
+ }
+
+ public void setContent(byte[] buf, int offset, int length) {
+ this.buf = buf;
+ this.pos = offset;
+ this.count = Math.min(offset + length, buf.length);
+ this.mark = offset;
+ }
+
+ public byte[] getArray() {
+ return buf;
+ }
+
+ public int getPosition() {
+ return pos;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+}
\ 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/JBoolean.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JBoolean.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JBoolean.java
new file mode 100644
index 0000000..0d05bea
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JBoolean.java
@@ -0,0 +1,68 @@
+/*
+ * 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.ABooleanSerializerDeserializer;
+import org.apache.asterix.om.base.ABoolean;
+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 JBoolean extends JObject {
+
+ private boolean aBoolean;
+
+ public JBoolean(boolean value) {
+ this.aBoolean = value;
+ }
+
+ public void setValue(boolean value) {
+ this.aBoolean = value;
+ }
+
+ public boolean getValue() {
+ return aBoolean;
+ }
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.ABOOLEAN;
+ }
+
+ @Override
+ public IAObject getIAObject() {
+ return aBoolean ? ABoolean.TRUE : ABoolean.FALSE;
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.BOOLEAN);
+ ABooleanSerializerDeserializer.INSTANCE.serialize((ABoolean) getIAObject(), dataOutput);
+ }
+
+ @Override
+ public void reset() {
+ aBoolean = false;
+ }
+
+}
\ 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/JByte.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JByte.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JByte.java
new file mode 100644
index 0000000..8e5ac17
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JByte.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.AInt8SerializerDeserializer;
+import org.apache.asterix.om.base.AInt8;
+import org.apache.asterix.om.base.AMutableInt8;
+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 JByte extends JObject {
+
+ public JByte(byte value) {
+ super(new AMutableInt8(value));
+ }
+
+ public void setValue(byte v) {
+ ((AMutableInt8) value).setValue(v);
+ }
+
+ public byte getValue() {
+ return ((AMutableInt8) value).getByteValue();
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.TINYINT);
+ AInt8SerializerDeserializer.INSTANCE.serialize((AInt8) value, dataOutput);
+ }
+
+ @Override
+ public void reset() {
+ ((AMutableInt8) value).setValue((byte) 0);
+ }
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.AINT8;
+ }
+}
\ 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/JCircle.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JCircle.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JCircle.java
new file mode 100644
index 0000000..c68831c
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JCircle.java
@@ -0,0 +1,65 @@
+/*
+ * 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.ACircleSerializerDeserializer;
+import org.apache.asterix.om.base.AMutableCircle;
+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.commons.lang3.tuple.Pair;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+import java.io.DataOutput;
+
+public final class JCircle extends JObject {
+
+ public JCircle(JPoint center, double radius) {
+ super(new AMutableCircle((APoint) center.getIAObject(), radius));
+ }
+
+ public void setValue(JPoint center, double radius) {
+ ((AMutableCircle) (value)).setValue((APoint) center.getIAObject(), radius);
+ }
+
+ public Pair<Double, Double> getCenter() {
+ return Pair.of(((AMutableCircle) (value)).getP().getX(), ((AMutableCircle) (value)).getP().getY());
+ }
+
+ public double getRaidus() {
+ return ((AMutableCircle) (value)).getRadius();
+ }
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.ACIRCLE;
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.CIRCLE);
+ ACircleSerializerDeserializer.INSTANCE.serialize((AMutableCircle) value, dataOutput);
+ }
+
+ @Override
+ public void reset() {
+ ((AMutableCircle) value).setValue(null, 0);
+ }
+}
\ 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/JDate.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JDate.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JDate.java
new file mode 100644
index 0000000..919b630
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JDate.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.ADateSerializerDeserializer;
+import org.apache.asterix.om.base.AMutableDate;
+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 JDate extends JObject {
+
+ public JDate(int chrononTimeInDays) {
+ super(new AMutableDate(chrononTimeInDays));
+ }
+
+ public void setValue(int chrononTimeInDays) {
+ ((AMutableDate) value).setValue(chrononTimeInDays);
+ }
+
+ public int getValue() {
+ return ((AMutableDate) value).getChrononTimeInDays();
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.DATE);
+ ADateSerializerDeserializer.INSTANCE.serialize((AMutableDate) value, dataOutput);
+ }
+
+ @Override
+ public void reset() {
+ ((AMutableDate) value).setValue(0);
+ }
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.ADATE;
+ }
+}
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/JDateTime.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JDateTime.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JDateTime.java
new file mode 100644
index 0000000..cce4dc9
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JDateTime.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.ADateTimeSerializerDeserializer;
+import org.apache.asterix.om.base.AMutableDateTime;
+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 JDateTime extends JObject {
+
+ public JDateTime(long chrononTime) {
+ super(new AMutableDateTime(chrononTime));
+ }
+
+ public void setValue(long chrononTime) {
+ ((AMutableDateTime) value).setValue(chrononTime);
+ }
+
+ public long getValue() {
+ return ((AMutableDateTime) value).getChrononTime();
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.DATETIME);
+ ADateTimeSerializerDeserializer.INSTANCE.serialize((AMutableDateTime) value, dataOutput);
+ }
+
+ @Override
+ public void reset() {
+ ((AMutableDateTime) value).setValue(0);
+ }
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.ADATETIME;
+ }
+}
\ 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/JDouble.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JDouble.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JDouble.java
new file mode 100644
index 0000000..ee767f7
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JDouble.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.ADoubleSerializerDeserializer;
+import org.apache.asterix.om.base.ADouble;
+import org.apache.asterix.om.base.AMutableDouble;
+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 JDouble extends JObject {
+
+ public JDouble(double v) {
+ super(new AMutableDouble(v));
+ }
+
+ public void setValue(double v) {
+ ((AMutableDouble) value).setValue(v);
+ }
+
+ public double getValue() {
+ return ((AMutableDouble) value).getDoubleValue();
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.DOUBLE);
+ ADoubleSerializerDeserializer.INSTANCE.serialize((ADouble) value, dataOutput);
+ }
+
+ @Override
+ public void reset() {
+ ((AMutableDouble) value).setValue(0);
+ }
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.ADOUBLE;
+ }
+}
\ 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/JDuration.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JDuration.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JDuration.java
new file mode 100644
index 0000000..1299ab6
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JDuration.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.ADurationSerializerDeserializer;
+import org.apache.asterix.om.base.AMutableDuration;
+import org.apache.asterix.om.types.ATypeTag;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+import java.io.DataOutput;
+
+public final class JDuration extends JObject {
+
+ public JDuration(int months, long milliseconds) {
+ super(new AMutableDuration(months, milliseconds));
+ }
+
+ public void setValue(int months, long milliseconds) {
+ ((AMutableDuration) value).setValue(months, milliseconds);
+ }
+
+ public Pair<Integer, Long> getValue() {
+ return Pair.of(((AMutableDuration) value).getMonths(), ((AMutableDuration) value).getMilliseconds());
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.DURATION);
+ ADurationSerializerDeserializer.INSTANCE.serialize((AMutableDuration) value, dataOutput);
+ }
+
+ @Override
+ public void reset() {
+ ((AMutableDuration) value).setValue(0, 0);
+ }
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.ADURATION;
+ }
+}
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/JFloat.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JFloat.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JFloat.java
new file mode 100644
index 0000000..ae3ee9f
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JFloat.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.AFloatSerializerDeserializer;
+import org.apache.asterix.om.base.AFloat;
+import org.apache.asterix.om.base.AMutableFloat;
+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 JFloat extends JObject {
+
+ public JFloat(float v) {
+ super(new AMutableFloat(v));
+ }
+
+ public void setValue(float v) {
+ ((AMutableFloat) value).setValue(v);
+ }
+
+ public float getValue() {
+ return ((AMutableFloat) value).getFloatValue();
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.FLOAT);
+ AFloatSerializerDeserializer.INSTANCE.serialize((AFloat) value, dataOutput);
+ }
+
+ @Override
+ public void reset() {
+ ((AMutableFloat) value).setValue(0);
+ }
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.AFLOAT;
+ }
+}
\ 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/JInt.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JInt.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JInt.java
new file mode 100644
index 0000000..b1f158b
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JInt.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.AInt32SerializerDeserializer;
+import org.apache.asterix.om.base.AInt32;
+import org.apache.asterix.om.base.AMutableInt32;
+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 class JInt extends JObject {
+
+ public JInt(int value) {
+ super(new AMutableInt32(value));
+ }
+
+ public void setValue(int v) {
+ ((AMutableInt32) value).setValue(v);
+ }
+
+ public int getValue() {
+ return ((AMutableInt32) value).getIntegerValue();
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.INTEGER);
+ AInt32SerializerDeserializer.INSTANCE.serialize((AInt32) value, dataOutput);
+ }
+
+ @Override
+ public void reset() {
+ ((AMutableInt32) value).setValue(0);
+ }
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.AINT32;
+ }
+}
\ 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/JInterval.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JInterval.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JInterval.java
new file mode 100644
index 0000000..fe253bb
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JInterval.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.AIntervalSerializerDeserializer;
+import org.apache.asterix.om.base.AMutableInterval;
+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 JInterval extends JObject {
+
+ public JInterval(long intervalStart, long intervalEnd) {
+ super(new AMutableInterval(intervalStart, intervalEnd, (byte) 0));
+ }
+
+ public void setValue(long intervalStart, long intervalEnd, byte typetag) throws HyracksDataException {
+ ((AMutableInterval) value).setValue(intervalStart, intervalEnd, typetag);
+ }
+
+ public long getIntervalStart() {
+ return ((AMutableInterval) value).getIntervalStart();
+ }
+
+ public long getIntervalEnd() {
+ return ((AMutableInterval) value).getIntervalEnd();
+ }
+
+ public short getIntervalType() {
+ return ((AMutableInterval) value).getIntervalType();
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.INTERVAL);
+ AIntervalSerializerDeserializer.INSTANCE.serialize((AMutableInterval) value, dataOutput);
+ }
+
+ @Override
+ public void reset() throws HyracksDataException {
+ ((AMutableInterval) value).setValue(0L, 0L, (byte) 0);
+ }
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.AINTERVAL;
+ }
+}
\ 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/JLine.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JLine.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JLine.java
new file mode 100644
index 0000000..b24ff74
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JLine.java
@@ -0,0 +1,69 @@
+/*
+ * 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.ALineSerializerDeserializer;
+import org.apache.asterix.om.base.AMutableLine;
+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.commons.lang3.tuple.Pair;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+import java.io.DataOutput;
+
+public final class JLine extends JObject {
+
+ public JLine(JPoint p1, JPoint p2) {
+ super(new AMutableLine((APoint) p1.getIAObject(), (APoint) p2.getIAObject()));
+ }
+
+ public void setValue(JPoint p1, JPoint p2) {
+ ((AMutableLine) value).setValue((APoint) p1.getIAObject(), (APoint) p2.getIAObject());
+ }
+
+ public void setValue(APoint p1, APoint p2) {
+ ((AMutableLine) value).setValue(p1, p2);
+ }
+
+ public Pair<Double, Double> getBeginPoint() {
+ return Pair.of(((AMutableLine) value).getP1().getX(), ((AMutableLine) value).getP1().getY());
+ }
+
+ public Pair<Double, Double> getEndPoint() {
+ return Pair.of(((AMutableLine) value).getP2().getX(), ((AMutableLine) value).getP2().getY());
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.LINE);
+ ALineSerializerDeserializer.INSTANCE.serialize((AMutableLine) value, dataOutput);
+ }
+
+ @Override
+ public void reset() {
+ ((AMutableLine) value).setValue(null, null);
+ }
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.ALINE;
+ }
+}
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/JList.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JList.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JList.java
new file mode 100644
index 0000000..bfaf6e4
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JList.java
@@ -0,0 +1,62 @@
+/*
+ * 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 java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+public abstract class JList implements IJObject {
+ protected List<IJObject> jObjects;
+
+ public JList() {
+ jObjects = new ArrayList<>();
+ }
+
+ public boolean isEmpty() {
+ return jObjects.isEmpty();
+ }
+
+ public void add(IJObject jObject) {
+ jObjects.add(jObject);
+ }
+
+ public void addAll(Collection<IJObject> jObjectCollection) {
+ jObjects.addAll(jObjectCollection);
+ }
+
+ public void clear() {
+ jObjects.clear();
+ }
+
+ public IJObject getElement(int index) {
+ return jObjects.get(index);
+ }
+
+ public int size() {
+ return jObjects.size();
+ }
+
+ public Iterator<IJObject> iterator() {
+ return jObjects.iterator();
+ }
+}
\ 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/JLong.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JLong.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JLong.java
new file mode 100644
index 0000000..692e135
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JLong.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.AInt64SerializerDeserializer;
+import org.apache.asterix.om.base.AInt64;
+import org.apache.asterix.om.base.AMutableInt64;
+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 JLong extends JObject {
+
+ public JLong(long v) {
+ super(new AMutableInt64(v));
+ }
+
+ public void setValue(long v) {
+ ((AMutableInt64) value).setValue(v);
+ }
+
+ public long getValue() {
+ return ((AMutableInt64) value).getLongValue();
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.BIGINT);
+ AInt64SerializerDeserializer.INSTANCE.serialize((AInt64) value, dataOutput);
+ }
+
+ @Override
+ public void reset() {
+ ((AMutableInt64) value).setValue(0);
+ }
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.AINT64;
+ }
+}
\ 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/JMissing.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JMissing.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JMissing.java
new file mode 100644
index 0000000..6401b49
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JMissing.java
@@ -0,0 +1,53 @@
+/*
+ * 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.om.base.AMissing;
+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 JMissing extends JObject {
+
+ public final static JMissing INSTANCE = new JMissing();
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.AMISSING;
+ }
+
+ @Override
+ public IAObject getIAObject() {
+ return AMissing.MISSING;
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.MISSING);
+ }
+
+ @Override
+ public void reset() throws HyracksDataException {
+ // no op
+ }
+}
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/JNull.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JNull.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JNull.java
new file mode 100644
index 0000000..683a044
--- /dev/null
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/base/JNull.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.om.base.ANull;
+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;
+
+/*
+ * This class is necessary to be able to serialize null base
+ * in cases of setting "null" results
+ *
+ */
+public final class JNull extends JObject {
+
+ public final static JNull INSTANCE = new JNull();
+
+ @Override
+ public IAType getIAType() {
+ return BuiltinType.ANULL;
+ }
+
+ @Override
+ public IAObject getIAObject() {
+ return ANull.NULL;
+ }
+
+ @Override
+ public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException {
+ serializeTypeTag(writeTypeTag, dataOutput, ATypeTag.NULL);
+ }
+
+ @Override
+ public void reset() {
+ // no op for NULL
+ }
+
+}
\ No newline at end of file