summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java
diff options
context:
space:
mode:
authortalio <tali.orenbach@amdocs.com>2017-11-09 17:49:28 +0200
committertalio <tali.orenbach@amdocs.com>2017-11-09 19:08:01 +0200
commit97f28b8424428318088303a46273118854bc12b1 (patch)
treef881aed20d2f6a079700600cdd274c5adbf535db /openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java
parente306939ce7bf085d21faa0038da00c2127a368c8 (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.java65
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;
+ }
+ }
+}