Java Code Examples for com.google.gson.annotations.JsonAdapter

The following are top voted examples for showing how to use com.google.gson.annotations.JsonAdapter. These examples are extracted from open source projects. You can vote up the examples you like and your votes will be used in our system to generate more good examples.
Example 1
Project: odoo-work   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 6 votes vote down vote up
@SuppressWarnings("unchecked") // Casts guarded by conditionals.
static TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson gson,
    TypeToken<?> fieldType, JsonAdapter annotation) {
  Class<?> value = annotation.value();
  if (TypeAdapter.class.isAssignableFrom(value)) {
        Class<TypeAdapter<?>> typeAdapter = (Class<TypeAdapter<?>>) value;
    return constructorConstructor.get(TypeToken.get(typeAdapter)).construct();
  }
  if (TypeAdapterFactory.class.isAssignableFrom(value)) {
        Class<TypeAdapterFactory> typeAdapterFactory = (Class<TypeAdapterFactory>) value;
    return constructorConstructor.get(TypeToken.get(typeAdapterFactory))
        .construct()
        .create(gson, fieldType);
  }

  throw new IllegalArgumentException(
      "@JsonAdapter value must be TypeAdapter or TypeAdapterFactory reference.");
}
 
Example 2
Project: odoo-follow-up   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 6 votes vote down vote up
@SuppressWarnings("unchecked") // Casts guarded by conditionals.
static TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson gson,
    TypeToken<?> fieldType, JsonAdapter annotation) {
  Class<?> value = annotation.value();
  if (TypeAdapter.class.isAssignableFrom(value)) {
        Class<TypeAdapter<?>> typeAdapter = (Class<TypeAdapter<?>>) value;
    return constructorConstructor.get(TypeToken.get(typeAdapter)).construct();
  }
  if (TypeAdapterFactory.class.isAssignableFrom(value)) {
        Class<TypeAdapterFactory> typeAdapterFactory = (Class<TypeAdapterFactory>) value;
    return constructorConstructor.get(TypeToken.get(typeAdapterFactory))
        .construct()
        .create(gson, fieldType);
  }

  throw new IllegalArgumentException(
      "@JsonAdapter value must be TypeAdapter or TypeAdapterFactory reference.");
}
 
Example 3
Project: MyJojoXUtils   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 6 votes vote down vote up
@SuppressWarnings("unchecked") // Casts guarded by conditionals.
static TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson gson,
    TypeToken<?> fieldType, JsonAdapter annotation) {
  Class<?> value = annotation.value();
  TypeAdapter<?> typeAdapter;
  if (TypeAdapter.class.isAssignableFrom(value)) {
    Class<TypeAdapter<?>> typeAdapterClass = (Class<TypeAdapter<?>>) value;
    typeAdapter = constructorConstructor.get(TypeToken.get(typeAdapterClass)).construct();
  } else if (TypeAdapterFactory.class.isAssignableFrom(value)) {
    Class<TypeAdapterFactory> typeAdapterFactory = (Class<TypeAdapterFactory>) value;
    typeAdapter = constructorConstructor.get(TypeToken.get(typeAdapterFactory))
        .construct()
        .create(gson, fieldType);
  } else {
    throw new IllegalArgumentException(
        "@JsonAdapter value must be TypeAdapter or TypeAdapterFactory reference.");
  }
  if (typeAdapter != null) {
    typeAdapter = typeAdapter.nullSafe();
  }
  return typeAdapter;
}
 
Example 4
Project: workflowTools   File: WorkflowConfigMapper.java   View source code 6 votes vote down vote up
private void serializeConfigurableProperties(JsonObject configJsonObject, Object configInstance, JsonSerializationContext jsonSerializationContext) {
    List<Field> configurableFields = Arrays.stream(configInstance.getClass().getFields())
            .filter(field -> field.getAnnotation(ConfigurableProperty.class) != null).collect(Collectors.toList());

    configurableFields.forEach(field -> {
        String fieldName = determineNameToUseForField(field);
        Object fieldValue = ReflectionUtils.getValue(field, configInstance);
        if (fieldValue != null) {
            JsonElement fieldJsonObject;
            if (field.getAnnotation(JsonAdapter.class) != null) {
                try {
                    JsonSerializer customSerializer = (JsonSerializer) field.getAnnotation(JsonAdapter.class).value().newInstance();
                    fieldJsonObject = customSerializer.serialize(fieldValue, field.getType(), jsonSerializationContext);
                } catch (InstantiationException | IllegalAccessException e) {
                    throw new RuntimeReflectiveOperationException(e);
                }
            } else {
                fieldJsonObject = jsonSerializationContext.serialize(fieldValue);
            }
            configJsonObject.add(fieldName, fieldJsonObject);
        }
    });
}
 
Example 5
Project: StaticMC   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 6 votes vote down vote up
@SuppressWarnings("unchecked") // Casts guarded by conditionals.
static TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson gson,
    TypeToken<?> fieldType, JsonAdapter annotation) {
  Class<?> value = annotation.value();
  if (TypeAdapter.class.isAssignableFrom(value)) {
        Class<TypeAdapter<?>> typeAdapter = (Class<TypeAdapter<?>>) value;
    return constructorConstructor.get(TypeToken.get(typeAdapter)).construct();
  }
  if (TypeAdapterFactory.class.isAssignableFrom(value)) {
        Class<TypeAdapterFactory> typeAdapterFactory = (Class<TypeAdapterFactory>) value;
    return constructorConstructor.get(TypeToken.get(typeAdapterFactory))
        .construct()
        .create(gson, fieldType);
  }

  throw new IllegalArgumentException(
      "@JsonAdapter value must be TypeAdapter or TypeAdapterFactory reference.");
}
 
Example 6
Project: odoo-work   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
@SuppressWarnings("unchecked")
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
  JsonAdapter annotation = targetType.getRawType().getAnnotation(JsonAdapter.class);
  if (annotation == null) {
    return null;
  }
  return (TypeAdapter<T>) getTypeAdapter(constructorConstructor, gson, targetType, annotation);
}
 
Example 7
Project: odoo-work   File: ReflectiveTypeAdapterFactory.java   View source code 5 votes vote down vote up
private TypeAdapter<?> getFieldAdapter(Gson gson, Field field, TypeToken<?> fieldType) {
  JsonAdapter annotation = field.getAnnotation(JsonAdapter.class);
  if (annotation != null) {
    TypeAdapter<?> adapter = getTypeAdapter(constructorConstructor, gson, fieldType, annotation);
    if (adapter != null) return adapter;
  }
  return gson.getAdapter(fieldType);
}
 
Example 8
Project: boohee_v5.6   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
    JsonAdapter annotation = (JsonAdapter) targetType.getRawType().getAnnotation(JsonAdapter
            .class);
    if (annotation == null) {
        return null;
    }
    return getTypeAdapter(this.constructorConstructor, gson, targetType, annotation);
}
 
Example 9
Project: boohee_v5.6   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
static TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson
        gson, TypeToken<?> fieldType, JsonAdapter annotation) {
    Class<?> value = annotation.value();
    if (TypeAdapter.class.isAssignableFrom(value)) {
        return (TypeAdapter) constructorConstructor.get(TypeToken.get((Class) value))
                .construct();
    }
    if (TypeAdapterFactory.class.isAssignableFrom(value)) {
        return ((TypeAdapterFactory) constructorConstructor.get(TypeToken.get((Class) value))
                .construct()).create(gson, fieldType);
    }
    throw new IllegalArgumentException("@JsonAdapter value must be TypeAdapter or " +
            "TypeAdapterFactory reference.");
}
 
Example 10
Project: boohee_v5.6   File: ReflectiveTypeAdapterFactory.java   View source code 5 votes vote down vote up
private TypeAdapter<?> getFieldAdapter(Gson gson, Field field, TypeToken<?> fieldType) {
    JsonAdapter annotation = (JsonAdapter) field.getAnnotation(JsonAdapter.class);
    if (annotation != null) {
        TypeAdapter<?> adapter = JsonAdapterAnnotationTypeAdapterFactory.getTypeAdapter(this
                .constructorConstructor, gson, fieldType, annotation);
        if (adapter != null) {
            return adapter;
        }
    }
    return gson.getAdapter((TypeToken) fieldType);
}
 
Example 11
Project: odoo-follow-up   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
@SuppressWarnings("unchecked")
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
  JsonAdapter annotation = targetType.getRawType().getAnnotation(JsonAdapter.class);
  if (annotation == null) {
    return null;
  }
  return (TypeAdapter<T>) getTypeAdapter(constructorConstructor, gson, targetType, annotation);
}
 
Example 12
Project: odoo-follow-up   File: ReflectiveTypeAdapterFactory.java   View source code 5 votes vote down vote up
private TypeAdapter<?> getFieldAdapter(Gson gson, Field field, TypeToken<?> fieldType) {
  JsonAdapter annotation = field.getAnnotation(JsonAdapter.class);
  if (annotation != null) {
    TypeAdapter<?> adapter = getTypeAdapter(constructorConstructor, gson, fieldType, annotation);
    if (adapter != null) return adapter;
  }
  return gson.getAdapter(fieldType);
}
 
Example 13
Project: MyJojoXUtils   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
@SuppressWarnings("unchecked")
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
  JsonAdapter annotation = targetType.getRawType().getAnnotation(JsonAdapter.class);
  if (annotation == null) {
    return null;
  }
  return (TypeAdapter<T>) getTypeAdapter(constructorConstructor, gson, targetType, annotation);
}
 
Example 14
Project: MyJojoXUtils   File: ReflectiveTypeAdapterFactory.java   View source code 5 votes vote down vote up
TypeAdapter<?> getFieldAdapter(Gson gson, Field field, TypeToken<?> fieldType) {
  JsonAdapter annotation = field.getAnnotation(JsonAdapter.class);
  if (annotation != null) {
    TypeAdapter<?> adapter = getTypeAdapter(constructorConstructor, gson, fieldType, annotation);
    if (adapter != null) return adapter;
  }
  return gson.getAdapter(fieldType);
}
 
Example 15
Project: SteamLib   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
@SuppressWarnings("unchecked")
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
  Class<? super T> rawType = targetType.getRawType();
  JsonAdapter annotation = rawType.getAnnotation(JsonAdapter.class);
  if (annotation == null) {
    return null;
  }
  return (TypeAdapter<T>) getTypeAdapter(constructorConstructor, gson, targetType, annotation);
}
 
Example 16
Project: SteamLib   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
@SuppressWarnings({ "unchecked", "rawtypes" }) // Casts guarded by conditionals.
TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson gson,
    TypeToken<?> type, JsonAdapter annotation) {
  Object instance = constructorConstructor.get(TypeToken.get(annotation.value())).construct();

  TypeAdapter<?> typeAdapter;
  if (instance instanceof TypeAdapter) {
    typeAdapter = (TypeAdapter<?>) instance;
  } else if (instance instanceof TypeAdapterFactory) {
    typeAdapter = ((TypeAdapterFactory) instance).create(gson, type);
  } else if (instance instanceof JsonSerializer || instance instanceof JsonDeserializer) {
    JsonSerializer<?> serializer = instance instanceof JsonSerializer
        ? (JsonSerializer) instance
        : null;
    JsonDeserializer<?> deserializer = instance instanceof JsonDeserializer
        ? (JsonDeserializer) instance
        : null;
    typeAdapter = new TreeTypeAdapter(serializer, deserializer, gson, type, null);
  } else {
    throw new IllegalArgumentException(
        "@JsonAdapter value must be TypeAdapter, TypeAdapterFactory, "
            + "JsonSerializer or JsonDeserializer reference.");
  }

  if (typeAdapter != null) {
    typeAdapter = typeAdapter.nullSafe();
  }

  return typeAdapter;
}
 
Example 17
Project: 1797-2017   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
@SuppressWarnings("unchecked")
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
  Class<? super T> rawType = targetType.getRawType();
  JsonAdapter annotation = rawType.getAnnotation(JsonAdapter.class);
  if (annotation == null) {
    return null;
  }
  return (TypeAdapter<T>) getTypeAdapter(constructorConstructor, gson, targetType, annotation);
}
 
Example 18
Project: 1797-2017   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
@SuppressWarnings({ "unchecked", "rawtypes" }) // Casts guarded by conditionals.
TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson gson,
    TypeToken<?> type, JsonAdapter annotation) {
  Object instance = constructorConstructor.get(TypeToken.get(annotation.value())).construct();

  TypeAdapter<?> typeAdapter;
  if (instance instanceof TypeAdapter) {
    typeAdapter = (TypeAdapter<?>) instance;
  } else if (instance instanceof TypeAdapterFactory) {
    typeAdapter = ((TypeAdapterFactory) instance).create(gson, type);
  } else if (instance instanceof JsonSerializer || instance instanceof JsonDeserializer) {
    JsonSerializer<?> serializer = instance instanceof JsonSerializer
        ? (JsonSerializer) instance
        : null;
    JsonDeserializer<?> deserializer = instance instanceof JsonDeserializer
        ? (JsonDeserializer) instance
        : null;
    typeAdapter = new TreeTypeAdapter(serializer, deserializer, gson, type, null);
  } else {
    throw new IllegalArgumentException(
        "@JsonAdapter value must be TypeAdapter, TypeAdapterFactory, "
            + "JsonSerializer or JsonDeserializer reference.");
  }

  if (typeAdapter != null && annotation.nullSafe()) {
    typeAdapter = typeAdapter.nullSafe();
  }

  return typeAdapter;
}
 
Example 19
Project: 1797-2017   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
@SuppressWarnings("unchecked")
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
  Class<? super T> rawType = targetType.getRawType();
  JsonAdapter annotation = rawType.getAnnotation(JsonAdapter.class);
  if (annotation == null) {
    return null;
  }
  return (TypeAdapter<T>) getTypeAdapter(constructorConstructor, gson, targetType, annotation);
}
 
Example 20
Project: 1797-2017   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
@SuppressWarnings({ "unchecked", "rawtypes" }) // Casts guarded by conditionals.
TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson gson,
    TypeToken<?> type, JsonAdapter annotation) {
  Object instance = constructorConstructor.get(TypeToken.get(annotation.value())).construct();

  TypeAdapter<?> typeAdapter;
  if (instance instanceof TypeAdapter) {
    typeAdapter = (TypeAdapter<?>) instance;
  } else if (instance instanceof TypeAdapterFactory) {
    typeAdapter = ((TypeAdapterFactory) instance).create(gson, type);
  } else if (instance instanceof JsonSerializer || instance instanceof JsonDeserializer) {
    JsonSerializer<?> serializer = instance instanceof JsonSerializer
        ? (JsonSerializer) instance
        : null;
    JsonDeserializer<?> deserializer = instance instanceof JsonDeserializer
        ? (JsonDeserializer) instance
        : null;
    typeAdapter = new TreeTypeAdapter(serializer, deserializer, gson, type, null);
  } else {
    throw new IllegalArgumentException(
        "@JsonAdapter value must be TypeAdapter, TypeAdapterFactory, "
            + "JsonSerializer or JsonDeserializer reference.");
  }

  if (typeAdapter != null && annotation.nullSafe()) {
    typeAdapter = typeAdapter.nullSafe();
  }

  return typeAdapter;
}
 
Example 21
Project: urmusic-desktop   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
@SuppressWarnings("unchecked")
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
  Class<? super T> rawType = targetType.getRawType();
  JsonAdapter annotation = rawType.getAnnotation(JsonAdapter.class);
  if (annotation == null) {
    return null;
  }
  return (TypeAdapter<T>) getTypeAdapter(constructorConstructor, gson, targetType, annotation);
}
 
Example 22
Project: urmusic-desktop   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
@SuppressWarnings({ "unchecked", "rawtypes" }) // Casts guarded by conditionals.
TypeAdapter<?> getTypeAdapter(ConstructorConstructor constructorConstructor, Gson gson,
    TypeToken<?> type, JsonAdapter annotation) {
  Object instance = constructorConstructor.get(TypeToken.get(annotation.value())).construct();

  TypeAdapter<?> typeAdapter;
  if (instance instanceof TypeAdapter) {
    typeAdapter = (TypeAdapter<?>) instance;
  } else if (instance instanceof TypeAdapterFactory) {
    typeAdapter = ((TypeAdapterFactory) instance).create(gson, type);
  } else if (instance instanceof JsonSerializer || instance instanceof JsonDeserializer) {
    JsonSerializer<?> serializer = instance instanceof JsonSerializer
        ? (JsonSerializer) instance
        : null;
    JsonDeserializer<?> deserializer = instance instanceof JsonDeserializer
        ? (JsonDeserializer) instance
        : null;
    typeAdapter = new TreeTypeAdapter(serializer, deserializer, gson, type, null);
  } else {
    throw new IllegalArgumentException(
        "@JsonAdapter value must be TypeAdapter, TypeAdapterFactory, "
            + "JsonSerializer or JsonDeserializer reference.");
  }

  if (typeAdapter != null && annotation.nullSafe()) {
    typeAdapter = typeAdapter.nullSafe();
  }

  return typeAdapter;
}
 
Example 23
Project: workflowTools   File: WorkflowConfigMapper.java   View source code 5 votes vote down vote up
@Override
public WorkflowConfig deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
    Class typeClass = (Class) type;
    List<Field> additionalConfigFields = Arrays.stream(typeClass.getFields())
            .filter(field -> field.getAnnotation(SectionConfig.class) != null).collect(Collectors.toList());

    WorkflowConfig config = (WorkflowConfig) ReflectionUtils.newInstance(typeClass);

    List<Field> configurableFields = Arrays.stream(typeClass.getFields())
            .filter(field -> field.getAnnotation(ConfigurableProperty.class) != null).collect(Collectors.toList());

    JsonObject configJsonObject = jsonElement.getAsJsonObject();
    configurableFields.forEach(field -> {
        String fieldName = determineNameToUseForField(field);
        JsonElement fieldJsonObject = configJsonObject.get(fieldName);
        if (fieldJsonObject != null) {
            Object fieldValue;
            if (field.getAnnotation(JsonAdapter.class) != null) {
                JsonDeserializer customDeserializer = (JsonDeserializer) ReflectionUtils.newInstance(field.getAnnotation(JsonAdapter.class).value());
                fieldValue = customDeserializer.deserialize(fieldJsonObject, field.getType(), jsonDeserializationContext);
            } else {
                fieldValue = jsonDeserializationContext.deserialize(fieldJsonObject, field.getType());
            }
            setFieldValue(field, config, fieldValue);
        }
    });

    additionalConfigFields.forEach(field -> {
        Object fieldConfig = jsonDeserializationContext.deserialize(jsonElement, field.getType());
        setFieldValue(field, config, fieldConfig);
    });
    return config;
}
 
Example 24
Project: StaticMC   File: JsonAdapterAnnotationTypeAdapterFactory.java   View source code 5 votes vote down vote up
@SuppressWarnings({"rawtypes", "unchecked"})
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> targetType) {
  JsonAdapter annotation = targetType.getRawType().getAnnotation(JsonAdapter.class);
  if (annotation == null) {
    return null;
  }
  return (TypeAdapter<T>) getTypeAdapter(constructorConstructor, gson, targetType, annotation);
}
 
Example 25
Project: StaticMC   File: ReflectiveTypeAdapterFactory.java   View source code 5 votes vote down vote up
private TypeAdapter<?> getFieldAdapter(Gson gson, Field field, TypeToken<?> fieldType) {
  JsonAdapter annotation = field.getAnnotation(JsonAdapter.class);
  if (annotation != null) {
    TypeAdapter<?> adapter = getTypeAdapter(constructorConstructor, gson, fieldType, annotation);
    if (adapter != null) return adapter;
  }
  return gson.getAdapter(fieldType);
}