Object convertField()

in gobblin-core/src/main/java/org/apache/gobblin/converter/avro/JsonElementConversionWithAvroSchemaFactory.java [246:302]


    Object convertField(JsonElement value) {
       for(JsonElementConverter converter: converters)
       {
         try {
           switch (converter.getTargetType()) {
             case STRING: {
               if (value.isJsonPrimitive() && value.getAsJsonPrimitive().isString()) {
                 return converter.convert(value);
               }
               break;
             }
             case FIXED:
             case BYTES:
             case INT:
             case LONG:
             case FLOAT:
             case DOUBLE: {
               if (value.isJsonPrimitive() && value.getAsJsonPrimitive().isNumber()) {
                 return converter.convert(value);
               }
               break;
             }
             case BOOLEAN:{
               if (value.isJsonPrimitive() && value.getAsJsonPrimitive().isBoolean()) {
                 return converter.convert(value);
               }
               break;
             }
             case ARRAY:{
               if (value.isJsonArray()) {
                 return converter.convert(value);
               }
               break;
             }
             case MAP:
             case ENUM:
             case RECORD:{
               if (value.isJsonObject()) {
                 return converter.convert(value);
               }
               break;
             }
             case NULL:{
               if(value.isJsonNull()) {
                 return converter.convert(value);
               }
               break;
             }
             case UNION:
               return new UnsupportedDateTypeException("does not support union type in union");
             default:
               return converter.convert(value);
           }
         } catch (Exception e){}
       }
       throw new RuntimeException(String.format("Cannot convert %s to avro using schema %s", value.getAsString(), schemaNode.toString()));
    }