private boolean readOneValue()

in parquet-thrift/src/main/java/org/apache/parquet/thrift/BufferedProtocolReadToWrite.java [189:253]


  private boolean readOneValue(TProtocol in, byte type, List<Action> buffer, ThriftType expectedType)
      throws TException {
    if (expectedType != null && expectedType.getType().getSerializedThriftType() != type) {
      throw new DecodingSchemaMismatchException(
          "the data type does not match the expected thrift structure: expected " + expectedType + " got "
              + typeName(type));
    }
    boolean hasFieldsIgnored = false;
    switch (type) {
      case TType.LIST:
        hasFieldsIgnored = readOneList(in, buffer, (ListType) expectedType);
        break;
      case TType.MAP:
        hasFieldsIgnored = readOneMap(in, buffer, (MapType) expectedType);
        break;
      case TType.SET:
        hasFieldsIgnored = readOneSet(in, buffer, (SetType) expectedType);
        break;
      case TType.STRUCT:
        hasFieldsIgnored = readOneStruct(in, buffer, (StructType) expectedType);
        break;
      case TType.STOP:
        break;
      case TType.BOOL:
        final boolean bool = in.readBool();
        writeBoolAction(buffer, bool);
        break;
      case TType.BYTE:
        final byte b = in.readByte();
        writeByteAction(buffer, b);
        break;
      case TType.DOUBLE:
        final double d = in.readDouble();
        writeDoubleAction(buffer, d);
        break;
      case TType.I16:
        final short s = in.readI16();
        writeShortAction(buffer, s);
        break;
      case TType.ENUM: // same as i32 => actually never seen in the protocol layer as enums are written as a i32
        // field
      case TType.I32:
        final int i = in.readI32();
        checkEnum(expectedType, i);
        writeIntAction(buffer, i);
        break;
      case TType.I64:
        final long l = in.readI64();
        writeLongAction(buffer, l);
        break;
      case TType.STRING:
        final ByteBuffer bin = in.readBinary();
        writeStringAction(buffer, bin);
        break;
      case TType.UUID:
        final UUID uuid = in.readUuid();
        writeUuidAction(buffer, uuid);
        break;
      case TType.VOID:
        break;
      default:
        throw new TException("Unknown type: " + type);
    }
    return hasFieldsIgnored;
  }