示例#1
0
  @SuppressWarnings("unchecked")
  private void processNextNode() {
    if (stateStack.isEmpty()) {
      nextEvent = null;
      return;
    }

    currentItr = stateStack.peek();
    if (currentItr.hasNext()) {
      Object o = currentItr.next();
      if (inMap()) {
        Entry<String, HValue> entry = (Entry<String, HValue>) o;
        key = entry.getKey();
        value = entry.getValue();
      } else {
        key = null;
        value = HValue.initFromObject(o);
      }
      nextEvent = Types.getEventTypeForType(value.getType());
      if (!value.getType().isScalar()) {
        stateStack.push(new IteratorWithType(value));
      }
    } else {
      IteratorWithType iter = stateStack.pop();
      key = null;
      value = iter.getValue();
      nextEvent = (iter.getType() == Type.MAP) ? EventType.END_MAP : EventType.END_ARRAY;
      currentItr = stateStack.isEmpty() ? null : stateStack.peek();
    }
  }
示例#2
0
 IteratorWithType(HValue value) {
   this.value = value;
   this.i =
       (value.getType() == Type.MAP)
           ? ((HDocument) value).iterator()
           : ((HList) value).listIterator();
 }
示例#3
0
 HDocumentReader(HValue value) {
   stateStack = new ArrayDeque<>();
   this.key = null;
   this.value = value;
   Type type = value.getType();
   nextEvent = Types.getEventTypeForType(type);
   if (!type.isScalar()) {
     stateStack.push(new IteratorWithType(value));
   }
 }
示例#4
0
 @Override
 public long getTimestampLong() {
   checkEventType(EventType.TIMESTAMP);
   return value.getTimestampAsLong();
 }
示例#5
0
 @Override
 public ByteBuffer getBinary() {
   checkEventType(EventType.BINARY);
   return value.getBinary();
 }
示例#6
0
 @Override
 public int getInt() {
   checkEventType(EventType.INT);
   return value.getInt();
 }
示例#7
0
 @Override
 public OTime getTime() {
   checkEventType(EventType.TIME);
   return value.getTime();
 }
示例#8
0
 @Override
 public OInterval getInterval() {
   checkEventType(EventType.INTERVAL);
   return value.getInterval();
 }
示例#9
0
 @Override
 public ODate getDate() {
   checkEventType(EventType.DATE);
   return value.getDate();
 }
示例#10
0
 @Override
 public int getTimeInt() {
   checkEventType(EventType.TIME);
   return value.getTimeAsInt();
 }
示例#11
0
 @Override
 public short getShort() {
   checkEventType(EventType.SHORT);
   return value.getShort();
 }
示例#12
0
 @Override
 public int getDateInt() {
   checkEventType(EventType.DATE);
   return value.getDateAsInt();
 }
示例#13
0
 @Override
 public String getString() {
   checkEventType(EventType.STRING);
   return value.getString();
 }
示例#14
0
 Type getType() {
   return value.getType();
 }
示例#15
0
 @Override
 public boolean getBoolean() {
   checkEventType(EventType.BOOLEAN);
   return value.getBoolean();
 }
示例#16
0
 @Override
 public BigDecimal getDecimal() {
   checkEventType(EventType.DECIMAL);
   return value.getDecimal();
 }
示例#17
0
 @Override
 public double getDouble() {
   checkEventType(EventType.DOUBLE);
   return value.getDouble();
 }
示例#18
0
 @Override
 public float getFloat() {
   checkEventType(EventType.FLOAT);
   return value.getFloat();
 }
示例#19
0
 @Override
 public long getLong() {
   checkEventType(EventType.LONG);
   return value.getLong();
 }
示例#20
0
 @Override
 public OTimestamp getTimestamp() {
   checkEventType(EventType.TIMESTAMP);
   return value.getTimestamp();
 }
示例#21
0
 @Override
 public byte getByte() {
   checkEventType(EventType.BYTE);
   return value.getByte();
 }