diff options
author | talio <tali.orenbach@amdocs.com> | 2017-11-19 09:35:13 +0200 |
---|---|---|
committer | talio <tali.orenbach@amdocs.com> | 2017-11-19 11:10:19 +0200 |
commit | b91470aaf45ccd77c56a7882f0babc9b4a2b9637 (patch) | |
tree | 2cff08e3ad0d8679d65de9ef20051ecf0c083cba /openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java | |
parent | 3e54d3de51fa86255ca5059c59fd68aea0f59488 (diff) |
import tosca bug
fix bug when converting parameters, when importing CSAR file
Issue - Id : SDC-646
Change-Id: Ie9c38f5e51e673a7c89add9e4e42fad93f966aa4
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..4120c6994c --- /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.converter.errors.CreateToscaObjectErrorBuilder; +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 CreateToscaObjectErrorBuilder(classToCreate.getSimpleName(), objectId, 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; + } + } +} |