private static Object readSingleFieldNoTag()

in core/src/main/java/com/twitter/elephantbird/util/Protobufs.java [413:462]


  private static Object readSingleFieldNoTag(CodedInputStream input,
                                             FieldDescriptor  fd,
                                             Builder          enclosingBuilder)
                                             throws IOException {
    switch (fd.getType()) {
    case DOUBLE:
      return input.readDouble();
    case FLOAT:
      return input.readFloat();
    case INT64:
    case UINT64:
      return input.readInt64();
    case INT32:
      return input.readInt32();
    case FIXED64:
      return input.readFixed64();
    case FIXED32:
      return input.readFixed32();
    case BOOL:
      return input.readBool();
    case STRING:
      return input.readString();
    case GROUP:
    case MESSAGE:
      Builder fieldBuilder = enclosingBuilder.newBuilderForField(fd);
      input.readMessage(fieldBuilder, null);
      return fieldBuilder.build();
    case BYTES:
      return input.readBytes();
    case UINT32:
      return input.readUInt32();
    case ENUM:
      EnumValueDescriptor eVal = fd.getEnumType().findValueByNumber(input.readEnum());
      // ideally if a given enum does not exist, we should search
      // unknown fields. but we don't have access to that here. return default
      return eVal != null ? eVal : fd.getDefaultValue();
    case SFIXED32:
      return input.readSFixed32();
    case SFIXED64:
      return input.readSFixed64();
    case SINT32:
      return input.readSInt32();
    case SINT64:
      return input.readSInt64();

    default:
      throw new IllegalArgumentException("Unknown type " + fd.getType()
          + " for " + fd.getFullName());
    }
  }