abdullah alamoudi has uploaded a new change for review. https://asterix-gerrit.ics.uci.edu/2926
Change subject: WIP: Add util methods ...................................................................... WIP: Add util methods Change-Id: I33257507e9bdd3be80355218e4bafecd1c71c650 --- M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/jackson/ObjectPool.java M asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/SerializerDeserializerProvider.java M asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/AbstractVisitablePointable.java M asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/PointableAllocator.java M asterixdb/asterix-om/src/main/java/org/apache/asterix/om/utils/AdmNodeUtils.java 5 files changed, 58 insertions(+), 2 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/26/2926/1 diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/jackson/ObjectPool.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/jackson/ObjectPool.java index 5ccd9e9..8945e71 100644 --- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/jackson/ObjectPool.java +++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/jackson/ObjectPool.java @@ -59,4 +59,9 @@ recycledObjects.add(object); } } + + @Override + public String toString() { + return recycledObjects.toString(); + } } diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/SerializerDeserializerProvider.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/SerializerDeserializerProvider.java index 0cba8b6..356b84c 100644 --- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/SerializerDeserializerProvider.java +++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/SerializerDeserializerProvider.java @@ -171,7 +171,7 @@ } @SuppressWarnings("rawtypes") - private ISerializerDeserializer addTag(final ISerializerDeserializer nonTaggedSerde) { + public static ISerializerDeserializer addTag(final ISerializerDeserializer nonTaggedSerde) { return new ISerializerDeserializer<IAObject>() { private static final long serialVersionUID = 1L; diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/AbstractVisitablePointable.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/AbstractVisitablePointable.java index 2ff9357..3f0496d 100644 --- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/AbstractVisitablePointable.java +++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/AbstractVisitablePointable.java @@ -59,4 +59,10 @@ set(ivf.getByteArray(), ivf.getStartOffset(), ivf.getLength()); } + @Override + public String toString() { + return "{ \"class\" : \"" + getClass().getSimpleName() + "\", \"data\" : " + + (data == null ? "null" : ("\"" + data.hashCode() + ":" + data.length + "\"")) + ", \"offset\" : " + + start + ", \"length\" : " + len + " }"; + } } diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/PointableAllocator.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/PointableAllocator.java index 91c47fd..411f067 100644 --- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/PointableAllocator.java +++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/PointableAllocator.java @@ -58,7 +58,7 @@ } }); - public IVisitablePointable allocateEmpty() { + public AFlatValuePointable allocateEmpty() { return flatValueAllocator.allocate(null); } diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/utils/AdmNodeUtils.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/utils/AdmNodeUtils.java index 6f4ee17..5f788e2 100644 --- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/utils/AdmNodeUtils.java +++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/utils/AdmNodeUtils.java @@ -36,6 +36,7 @@ import org.apache.asterix.om.types.AOrderedListType; import org.apache.asterix.om.types.ARecordType; import org.apache.asterix.om.types.ATypeTag; +import org.apache.hyracks.data.std.api.IPointable; import org.apache.hyracks.data.std.primitive.BooleanPointable; import org.apache.hyracks.data.std.primitive.DoublePointable; import org.apache.hyracks.data.std.primitive.LongPointable; @@ -56,6 +57,50 @@ return map; } + public static IAdmNode getAsAdmNode(IPointable pointable) { + try { + byte[] bytes = pointable.getByteArray(); + int offset = pointable.getStartOffset(); + int len = pointable.getLength(); + if (len == 0) { + throw new IllegalArgumentException(); + } + byte tagByte = bytes[offset]; + ATypeTag tag = ATypeTag.VALUE_TYPE_MAPPING[tagByte]; + switch (tag) { + case ARRAY: + AListPointable listPointable = AListPointable.FACTORY.createPointable(); + listPointable.set(bytes, offset, len); + return getAsAdmNode(listPointable); + case BIGINT: + return new AdmBigIntNode(LongPointable.getLong(bytes, offset + 1)); + case BOOLEAN: + return AdmBooleanNode.get(BooleanPointable.getBoolean(bytes, offset + 1)); + case DOUBLE: + return new AdmDoubleNode(DoublePointable.getDouble(bytes, offset + 1)); + case NULL: + return AdmNullNode.INSTANCE; + case OBJECT: + ARecordPointable recPointable = ARecordPointable.FACTORY.createPointable(); + recPointable.set(bytes, offset, len); + try { + return new AdmObjectNode(getOpenFields(recPointable, RecordUtil.FULLY_OPEN_RECORD_TYPE)); + } catch (IOException e) { + throw new IllegalArgumentException(e); + } + case STRING: + UTF8StringPointable str = UTF8StringPointable.FACTORY.createPointable(); + str.set(bytes, offset + 1, len - 1); + return new AdmStringNode(str.toString()); + default: + throw new UnsupportedOperationException("Unsupported item type: " + tag); + } + } catch (Throwable th) { + th.printStackTrace(); + return null; + } + } + private static IAdmNode getOpenField(ARecordPointable recPointable, ARecordType type, int i) throws IOException { byte tagByte = recPointable.getOpenFieldTag(type, i); ATypeTag tag = ATypeTag.VALUE_TYPE_MAPPING[tagByte]; -- To view, visit https://asterix-gerrit.ics.uci.edu/2926 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I33257507e9bdd3be80355218e4bafecd1c71c650 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: abdullah alamoudi <bamou...@gmail.com>