private void processType()

in src/main/java/com/google/cloud/solutions/autotokenize/common/GenericRecordFlattener.java [105:168]


    private void processType(
        Object value, Schema fieldSchema, String parentKey, String fieldName, String schemaKey) {
      String fieldKey = Joiner.on(".").skipNulls().join(parentKey, fieldName);

      switch (fieldSchema.getType()) {
        case RECORD:
          String recordFieldKey =
              isBlank(fieldName) ? parentKey : String.format("%s.[\"%s\"]", parentKey, fieldName);
          convertRecord((GenericRecord) value, fieldSchema, recordFieldKey, schemaKey);
          break;

        case ARRAY:
          processArray(value, fieldSchema, fieldKey, schemaKey);
          break;

        case UNION:
          processUnion(value, fieldSchema, parentKey, fieldName, schemaKey);
          break;

        case ENUM:
        case STRING:
          putValue(
              fieldKey, schemaKey, Value.newBuilder().setStringValue(value.toString()).build());
          break;

        case BOOLEAN:
          putValue(
              fieldKey, schemaKey, Value.newBuilder().setBooleanValue((boolean) value).build());
          break;

        case FLOAT:
          putValue(fieldKey, schemaKey, Value.newBuilder().setFloatValue((float) value).build());
          break;

        case DOUBLE:
          putValue(fieldKey, schemaKey, Value.newBuilder().setFloatValue((double) value).build());
          break;

        case INT:
          putValue(fieldKey, schemaKey, Value.newBuilder().setIntegerValue((int) value).build());
          break;
        case LONG:
          putValue(fieldKey, schemaKey, Value.newBuilder().setIntegerValue((long) value).build());
          break;

        case FIXED:
          putValue(
              makeByteFieldKey(fieldKey),
              schemaKey,
              ByteValueConverter.convertBytesToValue(((GenericFixed) value).bytes()));
          break;
        case BYTES:
          putValue(
              makeByteFieldKey(fieldKey),
              schemaKey,
              ByteValueConverter.convertBytesToValue(((ByteBuffer) value).array()));
          break;

        case NULL:
          break;
        case MAP:
          throw new IllegalArgumentException(String.format("Unsupported Type MAP at %s", fieldKey));
      }
    }