diff options
author | talio <tali.orenbach@amdocs.com> | 2017-11-09 17:49:28 +0200 |
---|---|---|
committer | talio <tali.orenbach@amdocs.com> | 2017-11-09 19:08:01 +0200 |
commit | 97f28b8424428318088303a46273118854bc12b1 (patch) | |
tree | f881aed20d2f6a079700600cdd274c5adbf535db /openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java | |
parent | e306939ce7bf085d21faa0038da00c2127a368c8 (diff) |
import tosca bug
handling conversion of integers
Issue - Id : SDC-646
Change-Id: I7e024dc44709dc5288bced05da590f0c7962648a
Signed-off-by: talio <tali.orenbach@amdocs.com>
Diffstat (limited to 'openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java')
-rw-r--r-- | openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java new file mode 100644 index 0000000000..550f97c200 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java @@ -0,0 +1,65 @@ +package org.openecomp.core.impl; + +import org.apache.commons.lang.StringUtils; +import org.codehaus.jackson.map.ObjectMapper; +import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.sdc.common.errors.CoreException; +import org.openecomp.sdc.common.errors.ErrorCategory; +import org.openecomp.sdc.common.errors.ErrorCode; + +import java.lang.reflect.Field; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +public class ToscaConverterUtil { + private static final String set = "set"; + + public static <T> Optional<T> createObjectFromClass(String objectId, + Object objectCandidate, + Class<T> classToCreate) { + try { + return createObjectUsingSetters(objectCandidate, classToCreate); + } catch (Exception e) { + throw new CoreException(new ErrorCode.ErrorCodeBuilder() + .withCategory(ErrorCategory.APPLICATION) + .withMessage("Can't create " + classToCreate.getSimpleName() + " from " + + objectId + ". Reason - " + e.getMessage()).build()); + } + } + + private static <T> Optional<T> createObjectUsingSetters(Object objectCandidate, + Class<T> classToCreate) throws Exception { + if(!(objectCandidate instanceof Map)){ + return Optional.empty(); + } + + Map<String, Object> objectAsMap = (Map<String, Object>) objectCandidate; + Field[] classFields = classToCreate.getDeclaredFields(); + T result = classToCreate.newInstance(); + + for(Field field : classFields){ + Object fieldValueToAssign = objectAsMap.get(field.getName()); + String methodName = set + StringUtils.capitalize(field.getName()); + + if(shouldSetterMethodNeedsToGetInvoked(classToCreate, field, fieldValueToAssign, methodName)){ + classToCreate.getMethod(methodName, field.getType()).invoke(result, fieldValueToAssign); + } + } + + return Optional.of(result); + } + + private static <T> boolean shouldSetterMethodNeedsToGetInvoked(Class<T> classToCreate, + Field field, + Object fieldValueToAssign, + String methodName) { + + try { + return Objects.nonNull(fieldValueToAssign) + && Objects.nonNull(classToCreate.getMethod(methodName, field.getType())); + } catch (NoSuchMethodException e) { + return false; + } + } +} |