1 package org.openecomp.core.impl;
3 import org.apache.commons.lang.StringUtils;
4 import org.codehaus.jackson.map.ObjectMapper;
5 import org.openecomp.core.converter.errors.CreateToscaObjectErrorBuilder;
6 import org.openecomp.core.utilities.json.JsonUtil;
7 import org.openecomp.sdc.common.errors.CoreException;
8 import org.openecomp.sdc.common.errors.ErrorCategory;
9 import org.openecomp.sdc.common.errors.ErrorCode;
11 import java.lang.reflect.Field;
13 import java.util.Objects;
14 import java.util.Optional;
16 public class ToscaConverterUtil {
17 private static final String set = "set";
19 public static <T> Optional<T> createObjectFromClass(String objectId,
20 Object objectCandidate,
21 Class<T> classToCreate) {
23 return createObjectUsingSetters(objectCandidate, classToCreate);
24 } catch (Exception e) {
25 throw new CoreException(
26 new CreateToscaObjectErrorBuilder(classToCreate.getSimpleName(), objectId, e.getMessage())
31 private static <T> Optional<T> createObjectUsingSetters(Object objectCandidate,
32 Class<T> classToCreate) throws Exception {
33 if(!(objectCandidate instanceof Map)){
34 return Optional.empty();
37 Map<String, Object> objectAsMap = (Map<String, Object>) objectCandidate;
38 Field[] classFields = classToCreate.getDeclaredFields();
39 T result = classToCreate.newInstance();
41 for(Field field : classFields){
42 Object fieldValueToAssign = objectAsMap.get(field.getName());
43 String methodName = set + StringUtils.capitalize(field.getName());
45 if(shouldSetterMethodNeedsToGetInvoked(classToCreate, field, fieldValueToAssign, methodName)){
46 classToCreate.getMethod(methodName, field.getType()).invoke(result, fieldValueToAssign);
50 return Optional.of(result);
53 private static <T> boolean shouldSetterMethodNeedsToGetInvoked(Class<T> classToCreate,
55 Object fieldValueToAssign,
59 return Objects.nonNull(fieldValueToAssign)
60 && Objects.nonNull(classToCreate.getMethod(methodName, field.getType()));
61 } catch (NoSuchMethodException e) {