Implementation for TMF 633 API - POST /serviceSpecification
[externalapi/nbi.git] / src / main / java / org / onap / nbi / apis / servicecatalog / ServiceSpecificationService.java
index 9fc0ec0..45a4f3f 100644 (file)
@@ -17,13 +17,15 @@ package org.onap.nbi.apis.servicecatalog;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.io.FileUtils;
 import org.onap.nbi.apis.servicecatalog.jolt.FindServiceSpecJsonTransformer;
 import org.onap.nbi.apis.servicecatalog.jolt.GetServiceSpecJsonTransformer;
+import org.onap.nbi.apis.servicecatalog.jolt.PostServiceResponseSpecJsonTransformer;
+import org.onap.nbi.apis.servicecatalog.jolt.PostServiceSpecJsonTransformer;
+import org.onap.nbi.apis.servicecatalog.model.ServiceSpecificationRequest;
 import org.onap.nbi.apis.serviceorder.ServiceCatalogUrl;
 import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
 import org.slf4j.Logger;
@@ -45,6 +47,13 @@ public class ServiceSpecificationService {
     @Autowired
     FindServiceSpecJsonTransformer findServiceSpecJsonTransformer;
 
+    // Change for processing POST request
+    @Autowired
+    PostServiceSpecJsonTransformer postServiceSpecJsonTransformer;
+
+    @Autowired
+    PostServiceResponseSpecJsonTransformer postServiceResponseSpecJsonTransformer ;
+
     @Autowired
     ToscaInfosProcessor toscaInfosProcessor;
 
@@ -101,4 +110,21 @@ public class ServiceSpecificationService {
             return null;
         }
     }
+
+    public Map create(String userId, ServiceSpecificationRequest specRequest) {
+        ObjectMapper mapper = new ObjectMapper();
+        LinkedHashMap specRequestMap = mapper.convertValue(specRequest, LinkedHashMap.class);
+        HashMap<Object, Object> serviceCatalogInput = (HashMap) postServiceSpecJsonTransformer.transform(specRequestMap);
+
+        //Call SDC Post API
+        Map sdcResponse = sdcClient.callPost(serviceCatalogInput,userId);
+        LOGGER.info("SDC response " + sdcResponse);
+        //Transform SDC Response
+        LinkedHashMap<Object,Object> serviceCatalogResponse =null;
+        if (!CollectionUtils.isEmpty(sdcResponse)) {
+            serviceCatalogResponse = (LinkedHashMap)postServiceResponseSpecJsonTransformer.transform(sdcResponse);
+        }
+        return serviceCatalogResponse;
+    }
+
 }