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 <[email protected]>