Example #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();
    }
  }
Example #2
0
 IteratorWithType(HValue value) {
   this.value = value;
   this.i =
       (value.getType() == Type.MAP)
           ? ((HDocument) value).iterator()
           : ((HList) value).listIterator();
 }
Example #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));
   }
 }
Example #4
0
 Type getType() {
   return value.getType();
 }