@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;
}
WorkflowConfigMapper.java 文件源码
java
阅读 20
收藏 0
点赞 0
评论 0
项目:workflowTools
作者:
评论列表
文章目录