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];