private Object handlePrimitive()

in tajo-common/src/main/java/org/apache/tajo/datum/protobuf/ProtobufJsonFormat.java [901:981]


  private Object handlePrimitive(Tokenizer tokenizer, FieldDescriptor field) throws ParseException {
    Object value = null;
    if ("null".equals(tokenizer.currentToken())) {
      tokenizer.consume("null");
      return value;
    }
    switch (field.getType()) {
      case INT32:
      case SINT32:
      case SFIXED32:
        value = tokenizer.consumeInt32();
        break;

      case INT64:
      case SINT64:
      case SFIXED64:
        value = tokenizer.consumeInt64();
        break;

      case UINT32:
      case FIXED32:
        value = tokenizer.consumeUInt32();
        break;

      case UINT64:
      case FIXED64:
        value = tokenizer.consumeUInt64();
        break;

      case FLOAT:
        value = tokenizer.consumeFloat();
        break;

      case DOUBLE:
        value = tokenizer.consumeDouble();
        break;

      case BOOL:
        value = tokenizer.consumeBoolean();
        break;

      case STRING:
        value = tokenizer.consumeString();
        break;

      case BYTES:
        value = tokenizer.consumeByteString();
        break;

      case ENUM: {
        EnumDescriptor enumType = field.getEnumType();

        if (tokenizer.lookingAtInteger()) {
          int number = tokenizer.consumeInt32();
          value = enumType.findValueByNumber(number);
          if (value == null) {
            throw tokenizer.parseExceptionPreviousToken("Enum type \""
                + enumType.getFullName()
                + "\" has no value with number "
                + number + ".");
          }
        } else {
          String id = tokenizer.consumeIdentifier();
          value = enumType.findValueByName(id);
          if (value == null) {
            throw tokenizer.parseExceptionPreviousToken("Enum type \""
                + enumType.getFullName()
                + "\" has no value named \""
                + id + "\".");
          }
        }

        break;
      }

      case MESSAGE:
      case GROUP:
        throw new RuntimeException("Can't get here.");
    }
    return value;
  }