Merge "Replace SO client"
authorOfir Sonsino <os0695@intl.att.com>
Thu, 30 Aug 2018 08:35:19 +0000 (08:35 +0000)
committerGerrit Code Review <gerrit@onap.org>
Thu, 30 Aug 2018 08:35:19 +0000 (08:35 +0000)
14 files changed:
vid-app-common/src/main/java/org/onap/vid/controllers/MsoConfig.java
vid-app-common/src/main/java/org/onap/vid/controllers/OperationalEnvironmentController.java
vid-app-common/src/main/java/org/onap/vid/job/command/InProgressStatusCommand.java
vid-app-common/src/main/java/org/onap/vid/job/command/ServiceInstantiationCommand.java
vid-app-common/src/main/java/org/onap/vid/mso/MsoBusinessLogicImpl.java
vid-app-common/src/main/java/org/onap/vid/mso/MsoInterface.java
vid-app-common/src/main/java/org/onap/vid/mso/MsoResponseWrapper2.java
vid-app-common/src/main/java/org/onap/vid/mso/MsoUtil.java
vid-app-common/src/main/java/org/onap/vid/mso/rest/MsoRestClientNew.java
vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientNewTest.java
vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientTest.java
vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientTestUtil.java [new file with mode: 0644]
vid-app-common/src/test/java/org/onap/vid/services/ChangeManagementServiceUnitTest.java
vid-app-common/src/test/resources/payload_jsons/mso_service_instantiation.json

index aa0b1ad..020018a 100644 (file)
@@ -1,10 +1,34 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.vid.controllers;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import org.onap.portalsdk.core.util.SystemProperties;
+
+import org.onap.vid.client.SyncRestClient;
 import org.onap.vid.factories.MsoRequestFactory;
 import org.onap.vid.mso.MsoBusinessLogic;
 import org.onap.vid.mso.MsoBusinessLogicImpl;
 import org.onap.vid.mso.MsoInterface;
+import org.onap.vid.mso.MsoProperties;
 import org.onap.vid.mso.rest.MsoRestClientNew;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -31,7 +55,8 @@ public class MsoConfig {
 
     @Bean
     public MsoInterface getMsoClient(){
-        return new MsoRestClientNew();
+        return new MsoRestClientNew(new SyncRestClient(MsoInterface.objectMapper()), SystemProperties.getProperty(
+            MsoProperties.MSO_SERVER_URL));
     }
 
     @Bean
index 3b6a3f7..6a4527c 100644 (file)
@@ -1,20 +1,40 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.vid.controllers;
 
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.google.common.base.MoreObjects;
+import io.joshworks.restclient.http.HttpResponse;
+import java.util.HashMap;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.onap.vid.changeManagement.RequestDetailsWrapper;
 import org.onap.vid.model.ExceptionResponse;
 import org.onap.vid.model.RequestReferencesContainer;
 import org.onap.vid.mso.MsoBusinessLogic;
+import org.onap.vid.mso.MsoInterface;
 import org.onap.vid.mso.MsoResponseWrapper2;
-import org.onap.vid.mso.RestMsoImplementation;
-import org.onap.vid.mso.RestObject;
 import org.onap.vid.mso.model.OperationalEnvironmentActivateInfo;
 import org.onap.vid.mso.model.OperationalEnvironmentDeactivateInfo;
-import org.onap.vid.mso.rest.MsoRestClientNew;
 import org.onap.vid.mso.rest.OperationalEnvironment.OperationEnvironmentRequestDetails;
 import org.onap.vid.mso.rest.RequestDetails;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
@@ -24,7 +44,6 @@ import org.springframework.web.bind.MissingServletRequestParameterException;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
@@ -39,14 +58,14 @@ import static org.onap.vid.utils.Logging.getMethodName;
 @RequestMapping("operationalEnvironment")
 public class OperationalEnvironmentController extends VidRestrictedBaseController {
 
-    private final RestMsoImplementation restMso;
+    private final MsoInterface restMso;
     private final MsoBusinessLogic msoBusinessLogic;
 
     private static final Pattern RECOVERY_ACTION_MESSAGE_PATTERN = Pattern.compile("String value \'(.*)\': value not");
 
 
     @Autowired
-    public OperationalEnvironmentController(MsoBusinessLogic msoBusinessLogic, MsoRestClientNew msoClientInterface) {
+    public OperationalEnvironmentController(MsoBusinessLogic msoBusinessLogic, MsoInterface msoClientInterface) {
         this.restMso = msoClientInterface;
         this.msoBusinessLogic = msoBusinessLogic;
     }
@@ -57,8 +76,8 @@ public class OperationalEnvironmentController extends VidRestrictedBaseControlle
         String userId = ControllersUtils.extractUserId(request);
         RequestDetailsWrapper<OperationEnvironmentRequestDetails> requestDetailsWrapper = msoBusinessLogic.convertParametersToRequestDetails(operationalEnvironment, userId);
         String path = msoBusinessLogic.getOperationalEnvironmentCreationPath();
-        RestObject<RequestReferencesContainer> msoResponse = restMso.PostForObject(requestDetailsWrapper, "",
-                path, RequestReferencesContainer.class);
+
+        HttpResponse<RequestReferencesContainer> msoResponse = restMso.post(path, requestDetailsWrapper, RequestReferencesContainer.class);
         debugEnd(msoResponse);
         return new MsoResponseWrapper2<>(msoResponse);
     }
@@ -83,8 +102,7 @@ public class OperationalEnvironmentController extends VidRestrictedBaseControlle
         String path = msoBusinessLogic.getOperationalEnvironmentActivationPath(activateInfo);
         RequestDetailsWrapper<RequestDetails> requestDetailsWrapper = msoBusinessLogic.createOperationalEnvironmentActivationRequestDetails(activateInfo);
 
-        RestObject<RequestReferencesContainer> msoResponse = restMso.PostForObject(requestDetailsWrapper, "",
-                path, RequestReferencesContainer.class);
+        HttpResponse<RequestReferencesContainer> msoResponse = restMso.post(path, requestDetailsWrapper, RequestReferencesContainer.class);
 
         debugEnd(msoResponse);
         return new MsoResponseWrapper2<>(msoResponse);
@@ -105,8 +123,7 @@ public class OperationalEnvironmentController extends VidRestrictedBaseControlle
         String path = msoBusinessLogic.getOperationalEnvironmentDeactivationPath(deactivateInfo);
         RequestDetailsWrapper<RequestDetails> requestDetailsWrapper =  msoBusinessLogic.createOperationalEnvironmentDeactivationRequestDetails(deactivateInfo);
 
-        RestObject<RequestReferencesContainer> msoResponse = restMso.PostForObject(requestDetailsWrapper, "",
-                path, RequestReferencesContainer.class);
+        HttpResponse<RequestReferencesContainer> msoResponse = restMso.post(path, requestDetailsWrapper, RequestReferencesContainer.class);
 
         debugEnd(msoResponse);
         return new MsoResponseWrapper2<>(msoResponse);
@@ -120,7 +137,7 @@ public class OperationalEnvironmentController extends VidRestrictedBaseControlle
         verifyIsNotEmpty(requestId, "requestId");
         String path = msoBusinessLogic.getCloudResourcesRequestsStatusPath(requestId);
 
-        final RestObject<HashMap> msoResponse = restMso.GetForObject("", path, HashMap.class);
+        HttpResponse<HashMap> msoResponse = restMso.get(path, HashMap.class);
 
         LOGGER.debug(EELFLoggerDelegate.debugLogger, "end {}() => {}", getMethodName(), msoResponse);
         return new MsoResponseWrapper2<>(msoResponse);
@@ -322,7 +339,7 @@ public class OperationalEnvironmentController extends VidRestrictedBaseControlle
         }
     }
 
-    private void debugEnd(RestObject<RequestReferencesContainer> msoResponse) {
+    private void debugEnd(HttpResponse<RequestReferencesContainer> msoResponse) {
         LOGGER.debug(EELFLoggerDelegate.debugLogger, "end {}() => {}", getMethodCallerName(), msoResponse);
     }
 
index 64c782c..cee5af6 100644 (file)
@@ -1,12 +1,32 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.vid.job.command;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.collect.ImmutableMap;
+import io.joshworks.restclient.http.HttpResponse;
 import org.onap.vid.job.Job.JobStatus;
 import org.onap.vid.job.JobCommand;
 import org.onap.vid.job.NextCommand;
-import org.onap.vid.mso.RestMsoImplementation;
-import org.onap.vid.mso.RestObject;
+import org.onap.vid.mso.MsoInterface;
 import org.onap.vid.mso.rest.AsyncRequestStatus;
 import org.onap.vid.services.AsyncInstantiationBusinessLogic;
 import org.onap.vid.services.AuditService;
@@ -32,7 +52,7 @@ public class InProgressStatusCommand implements JobCommand {
     private AsyncInstantiationBusinessLogic asyncInstantiationBL;
 
     @Inject
-    private RestMsoImplementation restMso;
+    private MsoInterface restMso;
 
     @Inject
     private AuditService auditService;
@@ -53,20 +73,22 @@ public class InProgressStatusCommand implements JobCommand {
 
         try {
             String path = asyncInstantiationBL.getOrchestrationRequestsPath()+"/"+requestId;
-            RestObject<AsyncRequestStatus> msoResponse = restMso.GetForObject("", path, AsyncRequestStatus.class);
+            HttpResponse<AsyncRequestStatus> msoResponse = restMso.get(path, AsyncRequestStatus.class);
+
+
             JobStatus jobStatus;
-            if (msoResponse.getStatusCode() >= 400 || msoResponse.get() == null) {
-                auditService.setFailedAuditStatusFromMso(jobUuid, requestId, msoResponse.getStatusCode(), msoResponse.getRaw());
+            if (msoResponse.getStatus() >= 400 || msoResponse.getBody() == null) {
+                auditService.setFailedAuditStatusFromMso(jobUuid, requestId, msoResponse.getStatus(), msoResponse.getBody().toString());
                 LOGGER.error(EELFLoggerDelegate.errorLogger,
                         "Failed to get orchestration status for {}. Status code: {},  Body: {}",
-                        requestId, msoResponse.getStatusCode(), msoResponse.getRaw());
+                        requestId, msoResponse.getStatus(), msoResponse.getRawBody().toString());
                 return new NextCommand(JobStatus.IN_PROGRESS, this);
             }
             else {
-                jobStatus = asyncInstantiationBL.calcStatus(msoResponse.get());
+                jobStatus = asyncInstantiationBL.calcStatus(msoResponse.getBody());
             }
 
-            asyncInstantiationBL.auditMsoStatus(jobUuid,msoResponse.get().request);
+            asyncInstantiationBL.auditMsoStatus(jobUuid,msoResponse.getBody().request);
 
 
             if (jobStatus == JobStatus.FAILED) {
index 6afacf2..9d22b8b 100644 (file)
@@ -1,7 +1,28 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.vid.job.command;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.collect.ImmutableMap;
+import io.joshworks.restclient.http.HttpResponse;
 import org.onap.vid.aai.exceptions.InvalidAAIResponseException;
 import org.onap.vid.changeManagement.RequestDetailsWrapper;
 import org.onap.vid.exceptions.MaxRetriesException;
@@ -10,8 +31,7 @@ import org.onap.vid.job.JobCommand;
 import org.onap.vid.job.NextCommand;
 import org.onap.vid.model.RequestReferencesContainer;
 import org.onap.vid.model.serviceInstantiation.ServiceInstantiation;
-import org.onap.vid.mso.RestMsoImplementation;
-import org.onap.vid.mso.RestObject;
+import org.onap.vid.mso.MsoInterface;
 import org.onap.vid.mso.model.ServiceInstantiationRequestDetails;
 import org.onap.vid.services.AsyncInstantiationBusinessLogic;
 import org.onap.vid.services.AuditService;
@@ -40,7 +60,7 @@ public class ServiceInstantiationCommand implements JobCommand {
     private AuditService auditService;
 
     @Inject
-    private RestMsoImplementation restMso;
+    private MsoInterface restMso;
 
     private UUID uuid;
     private ServiceInstantiation serviceInstantiationRequest;
@@ -78,13 +98,14 @@ public class ServiceInstantiationCommand implements JobCommand {
 
         String path = asyncInstantiationBL.getServiceInstantiationPath(serviceInstantiationRequest);
 
-        RestObject<RequestReferencesContainer> msoResponse = restMso.PostForObject(requestDetailsWrapper, "",
-                path, RequestReferencesContainer.class);
+        HttpResponse<RequestReferencesContainer> msoResponse = restMso.post(path,
+            requestDetailsWrapper, RequestReferencesContainer.class);
 
-        if (msoResponse.getStatusCode() >= 200 && msoResponse.getStatusCode() < 400) {
+
+        if (msoResponse.getStatus() >= 200 && msoResponse.getStatus() < 400) {
             final Job.JobStatus jobStatus = Job.JobStatus.IN_PROGRESS;
-            final String requestId = msoResponse.get().getRequestReferences().getRequestId();
-            final String instanceId = msoResponse.get().getRequestReferences().getInstanceId();
+            final String requestId = msoResponse.getBody().getRequestReferences().getRequestId();
+            final String instanceId = msoResponse.getBody().getRequestReferences().getInstanceId();
             asyncInstantiationBL.auditVidStatus(uuid, jobStatus);
             setInitialRequestAuditStatusFromMso(requestId);
             asyncInstantiationBL.updateServiceInfo(uuid, x-> {
@@ -94,7 +115,8 @@ public class ServiceInstantiationCommand implements JobCommand {
 
             return new NextCommand(jobStatus, new InProgressStatusCommand(uuid, requestId));
         } else {
-            auditService.setFailedAuditStatusFromMso(uuid,null, msoResponse.getStatusCode(),msoResponse.getRaw());
+            auditService.setFailedAuditStatusFromMso(uuid,null, msoResponse.getStatus(),
+                msoResponse.getBody().toString());
             return handleCommandFailed();
         }
 
index a2e32ba..00db464 100644 (file)
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.vid.mso;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
@@ -266,13 +286,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
             String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQ);
             String path = p + "/" + requestId;
 
-            RestObject<String> restObjStr = new RestObject<>();
-            String str = new String();
-            restObjStr.set(str);
-
-            msoClientInterface.getOrchestrationRequest(str, "", path, restObjStr);
-
-            return MsoUtil.wrapResponse(restObjStr);
+            return msoClientInterface.getOrchestrationRequest(path);
 
         } catch (Exception e) {
             logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
@@ -289,13 +303,7 @@ public class MsoBusinessLogicImpl implements MsoBusinessLogic {
             String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQS);
             String path = p + filterString;
 
-            RestObject<String> restObjStr = new RestObject<>();
-            String str = new String();
-            restObjStr.set(str);
-
-            msoClientInterface.getOrchestrationRequest(str, "", path, restObjStr);
-
-            return MsoUtil.wrapResponse(restObjStr);
+            return msoClientInterface.getOrchestrationRequest(path);
 
         } catch (Exception e) {
             logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
index a5fb760..3cba12f 100644 (file)
@@ -1,5 +1,29 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.vid.mso;
 
+import io.joshworks.restclient.http.HttpResponse;
+import io.joshworks.restclient.http.mapper.ObjectMapper;
+import lombok.SneakyThrows;
+import org.onap.vid.aai.util.CustomJacksonJaxBJsonProvider;
 import org.onap.vid.changeManagement.RequestDetailsWrapper;
 import org.onap.vid.mso.rest.RequestDetails;
 
@@ -62,7 +86,7 @@ public interface MsoInterface {
 
     MsoResponseWrapper deleteNwInstance(RequestDetails requestDetails, String endpoint);
 
-    void getOrchestrationRequest(String t, String sourceId, String endpoint, RestObject restObject);
+    MsoResponseWrapper getOrchestrationRequest(String endpoint);
 
     MsoResponseWrapper getOrchestrationRequestsForDashboard(String t , String sourceId , String endpoint , RestObject restObject);
 
@@ -87,5 +111,28 @@ public interface MsoInterface {
     MsoResponseWrapper removeRelationshipFromServiceInstance(RequestDetails requestDetails, String endpoint);
 
     MsoResponseWrapper addRelationshipToServiceInstance(RequestDetails requestDetails, String addRelationshipsPath);
+
+    <T> HttpResponse<T> get(String path, Class<T> responseClass);
+
+    <T> HttpResponse<T> post(String path, RequestDetailsWrapper<?> requestDetailsWrapper,
+      Class<T> responseClass);
+
+    static ObjectMapper objectMapper() {
+      return new ObjectMapper() {
+        CustomJacksonJaxBJsonProvider mapper = new CustomJacksonJaxBJsonProvider();
+
+        @SneakyThrows
+        @Override
+        public <T> T readValue(String s, Class<T> aClass) {
+          return mapper.getMapper().readValue(s, aClass);
+        }
+
+        @SneakyThrows
+        @Override
+        public String writeValue(Object o) {
+          return mapper.getMapper().writeValueAsString(o);
+        }
+      };
+    }
 }
 
index 5a73a04..2372e7f 100644 (file)
@@ -1,9 +1,30 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.vid.mso;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import io.joshworks.restclient.http.HttpResponse;
 
 @JsonPropertyOrder({
            "status",
@@ -29,6 +50,12 @@ public class MsoResponseWrapper2<T> implements MsoResponseWrapperInterface {
         this.raw = msoResponse.getRaw();
     }
 
+  public MsoResponseWrapper2(HttpResponse<T> msoResponse) {
+    this.status = msoResponse.getStatus();
+    this.entity = msoResponse.getBody();
+    this.raw = msoResponse.getBody().toString();
+  }
+
     public MsoResponseWrapper2(
             @JsonProperty(value = "status", required = true) int status,
             @JsonProperty(value = "entity", required = true) T entity) {
index d2ccd0b..722a1c4 100644 (file)
@@ -3,13 +3,14 @@
  * VID
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -22,6 +23,8 @@ package org.onap.vid.mso;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import io.joshworks.restclient.http.HttpResponse;
+import org.apache.commons.lang3.ObjectUtils;
 import org.glassfish.jersey.client.ClientResponse;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 
@@ -88,8 +91,17 @@ public class MsoUtil {
                }
                MsoResponseWrapper w = MsoUtil.wrapResponse ( resp_str, status );
                return (w);
-       }       
-       
+       }
+
+       public static <T> MsoResponseWrapper wrapResponse (HttpResponse<T> rs) {
+               MsoResponseWrapper w = new MsoResponseWrapper();
+               w.setStatus (rs.getStatus());
+               if(rs.getRawBody() != null) {
+                       w.setEntity(ObjectUtils.toString(rs.getBody()));
+               }
+               return w;
+       }
+
        /**
         * Convert pojo to string.
         *
index ae1b7a2..9cac3e4 100644 (file)
@@ -1,46 +1,88 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.vid.mso.rest;
 
+import com.google.common.collect.ImmutableMap;
+import io.joshworks.restclient.http.HttpResponse;
+import java.util.HashMap;
+import java.util.Map;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import org.apache.commons.codec.binary.Base64;
+import org.eclipse.jetty.util.security.Password;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.util.SystemProperties;
 import org.onap.vid.changeManagement.MsoRequestDetails;
 import org.onap.vid.changeManagement.RequestDetailsWrapper;
+import org.onap.vid.client.SyncRestClient;
 import org.onap.vid.model.RequestReferencesContainer;
 import org.onap.vid.mso.*;
 
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import org.onap.vid.utils.Logging;
 
 
 /**
  * Created by pickjonathan on 21/06/2017.
  */
-public class MsoRestClientNew extends RestMsoImplementation implements MsoInterface {
+public class MsoRestClientNew implements MsoInterface {
 
     /**
      * The Constant dateFormat.
      */
+    public static final String X_FROM_APP_ID = "X-FromAppId";
     final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
     private static final String START = " start";
-    private final String ORIGINAL_REQUEST_ID = "originalRequestId";
+    private final SyncRestClient client;
+    private final String baseUrl;
+    private final Map<String, String> commonHeaders;
     /**
      * The logger.
      */
     EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MsoRestClientNew.class);
 
+    public MsoRestClientNew(SyncRestClient client, String baseUrl) {
+        this.client = client;
+        this.baseUrl = baseUrl;
+        this.commonHeaders = initCommonHeaders();
+    }
+
     @Override
     public MsoResponseWrapper createSvcInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "createSvcInstance ";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+        String path = baseUrl + endpoint;
 
-        return createInstance(requestDetails, endpoint);
+        return createInstance(requestDetails, path);
     }
     
     @Override
     public MsoResponseWrapper createE2eSvcInstance(Object requestDetails, String endpoint) {
         String methodName = "createE2eSvcInstance ";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+        String path = baseUrl + endpoint;
 
-        return createInstance(requestDetails, endpoint);
+        return createInstance(requestDetails, path);
     }
 
     @Override
@@ -48,8 +90,9 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
 
         String methodName = "createVnf";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+        String path = baseUrl + endpoint;
 
-        return createInstance(requestDetails, endpoint);
+        return createInstance(requestDetails, path);
     }
 
     @Override
@@ -57,160 +100,119 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
 
         String methodName = "createNwInstance";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+        String path = baseUrl + endpoint;
 
-        return createInstance(requestDetails, endpoint);
+        return createInstance(requestDetails, path);
     }
 
     @Override
     public MsoResponseWrapper createVolumeGroupInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "createVolumeGroupInstance";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+        String path = baseUrl + endpoint;
 
-        return createInstance(requestDetails, endpoint);
+        return createInstance(requestDetails, path);
     }
 
     @Override
     public MsoResponseWrapper createVfModuleInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "createVfModuleInstance";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+        String path = baseUrl + endpoint;
 
-        return createInstance(requestDetails, endpoint);
+        return createInstance(requestDetails, path);
     }
 
     @Override
     public MsoResponseWrapper createConfigurationInstance(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper, String endpoint) {
         String methodName = "createConfigurationInstance";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
-        return createInstance(requestDetailsWrapper, endpoint);
+        String path = baseUrl + endpoint;
+
+        return createInstance(requestDetailsWrapper, path);
     }
 
     @Override
     public MsoResponseWrapper deleteE2eSvcInstance(Object requestDetails, String endpoint) {
         String methodName = "deleteE2eSvcInstance";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
-
-        return deleteInstance(requestDetails, endpoint);
+        String path = baseUrl + endpoint;
+        return deleteInstance(requestDetails, path);
     }
 
     @Override
     public MsoResponseWrapper deleteSvcInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "deleteSvcInstance";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
-
-        return deleteInstance(requestDetails, endpoint);
+        String path = baseUrl + endpoint;
+        return deleteInstance(requestDetails, path);
     }
 
     @Override
     public MsoResponseWrapper unassignSvcInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "unassignSvcInstance";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
-
-        RestObject<String> msoResponse = PostForObject(requestDetails, "", endpoint, String.class);
-        return MsoUtil.wrapResponse(msoResponse);
+        HttpResponse<String> response = client.post(endpoint, commonHeaders, requestDetails, String.class);
+        return MsoUtil.wrapResponse(response);
     }
 
     @Override
     public MsoResponseWrapper deleteVnf(RequestDetails requestDetails, String endpoint) {
         String methodName = "deleteVnf";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+        String path = baseUrl + endpoint;
 
-        return deleteInstance(requestDetails, endpoint);
+        return deleteInstance(requestDetails, path);
     }
 
     @Override
     public MsoResponseWrapper deleteVfModule(RequestDetails requestDetails, String endpoint) {
         String methodName = "deleteVfModule";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+        String path = baseUrl + endpoint;
 
-        return deleteInstance(requestDetails, endpoint);
+        return deleteInstance(requestDetails, path);
     }
 
     @Override
     public MsoResponseWrapper deleteVolumeGroupInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "deleteVolumeGroupInstance";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+        String path = baseUrl + endpoint;
 
-        return deleteInstance(requestDetails, endpoint);
+        return deleteInstance(requestDetails, path);
     }
 
     @Override
     public MsoResponseWrapper deleteNwInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "deleteNwInstance";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+        String path = baseUrl + endpoint;
 
-        return deleteInstance(requestDetails, endpoint);
+        return deleteInstance(requestDetails, path);
     }
 
     @Override
-    public void getOrchestrationRequest(String t, String sourceId, String endpoint, RestObject restObject) {
-        Get(t, sourceId, endpoint, restObject);
-    }
+    public MsoResponseWrapper getOrchestrationRequest(String endpoint) {
+        String path = baseUrl + endpoint;
 
-    public void getManualTasks(String t, String sourceId, String endpoint, RestObject restObject) {
-        Get(t, sourceId, endpoint, restObject);
+        HttpResponse<String> response = client.get(path, commonHeaders, new HashMap<>(), String.class);
+        return MsoUtil.wrapResponse(response);
     }
 
-    public MsoResponseWrapper createInstance(Object request, String path) {
-        String methodName = "createInstance";
-        logger.debug(dateFormat.format(new Date()) + "<== " + methodName + START);
-
-        try {
-            RestObject<String> restObjStr = new RestObject<String>();
-
-            String str = new String();
-
-            restObjStr.set(str);
-
-            Post(str, request, "", path, restObjStr);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObjStr);
+    public MsoResponseWrapper getManualTasks(String endpoint) {
+        String path = baseUrl + endpoint;
 
-            return w;
-        } catch (Exception e) {
-            logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            throw e;
-        }
+        HttpResponse<String> response = client.get(path, commonHeaders, new HashMap<>(), String.class);
+        return MsoUtil.wrapResponse(response);
     }
 
-    /**
-     * Delete instance.
-     *
-     * @param request the request
-     * @param path    the path
-     * @return the mso response wrapper
-     * @throws Exception the exception
-     */
-    public MsoResponseWrapper deleteInstance(Object request, String path) {
-        String methodName = "deleteInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
-
-        try {
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Delete, path =[" + path + "]");
-
-            RestObject<String> restObjStr = new RestObject<String>();
-            String str = new String();
-            restObjStr.set(str);
-            Delete(str, request, "", path, restObjStr);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObjStr);
-
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
-            return w;
-
-        } catch (Exception e) {
-            logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            throw e;
-        }
-
-    }
-
-    public MsoResponseWrapper getOrchestrationRequestsForDashboard(String t, String sourceId, String endpoint, RestObject restObject) {
+    public MsoResponseWrapper getOrchestrationRequestsForDashboard(String t, String sourceId, String path, RestObject restObject) {
         String methodName = "getOrchestrationRequestsForDashboard";
         logger.debug(dateFormat.format(new Date()) + "<== " + methodName + START);
 
         try {
-            getOrchestrationRequest(t, sourceId, endpoint, restObject);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObject);
+            MsoResponseWrapper w = getOrchestrationRequest(path);
             logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
 
             return w;
@@ -227,11 +229,12 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
         logger.debug(dateFormat.format(new Date()) + "<== " + methodName + START);
 
         try {
-            getManualTasks(t, sourceId, endpoint, restObject);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObject);
+            String path = baseUrl + endpoint;
+
+            MsoResponseWrapper w =getManualTasks(path);
             logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
 
-            return MsoUtil.wrapResponse(restObject);
+            return w;
 
         } catch (Exception e) {
             logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
@@ -245,9 +248,10 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
         String methodName = "completeManualTask";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Complete ");
         try {
+            String path = baseUrl + endpoint;
 
-            Post(t, requestDetails, sourceId, endpoint, restObject);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObject);
+            HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
+            MsoResponseWrapper w = MsoUtil.wrapResponse(response);
 
             logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
             return w;
@@ -263,7 +267,8 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
     public MsoResponseWrapper replaceVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String endpoint) {
         String methodName = "replaceVnf";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
-        return replaceInstance(requestDetails, endpoint);
+        String path = baseUrl + endpoint;
+        return replaceInstance(requestDetails, path);
     }
 
     @Override
@@ -271,25 +276,23 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
         String methodName = "deleteConfiguration";
         logger.debug(EELFLoggerDelegate.debugLogger,
                 dateFormat.format(new Date()) + "<== " + methodName + START);
+        String path = baseUrl + pmc_endpoint;
 
-        return deleteInstance(requestDetailsWrapper, pmc_endpoint);
+        return deleteInstance(requestDetailsWrapper, path);
     }
 
     @Override
-    public MsoResponseWrapper setConfigurationActiveStatus(RequestDetails request, String path) {
+    public MsoResponseWrapper setConfigurationActiveStatus(RequestDetails request, String endpoint) {
         String methodName = "setConfigurationActiveStatus";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
 
         try {
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling change configuration active status, path =[" + path + "]");
-
-            RestObject<String> restObjStr = new RestObject<String>();
-            String str = new String();
-            restObjStr.set(str);
-            Post(str, request, "", path, restObjStr);
-            MsoResponseWrapper msoResponseWrapperObject = MsoUtil.wrapResponse(restObjStr);
+            String path = baseUrl + endpoint;
 
-            return msoResponseWrapperObject;
+            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== "
+                  + methodName + " calling change configuration active status, path =[" + path + "]");
+            HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
+            return MsoUtil.wrapResponse(response);
         } catch (Exception e) {
             logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
             logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
@@ -298,20 +301,16 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
     }
 
     @Override
-    public MsoResponseWrapper setPortOnConfigurationStatus(RequestDetails request, String path) {
+    public MsoResponseWrapper setPortOnConfigurationStatus(RequestDetails request, String endpoint) {
         String methodName = "setPortOnConfigurationStatus";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
 
         try {
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling change port configuration status, path =[" + path + "]");
-
-            RestObject<String> restObjStr = new RestObject<String>();
-            String str = new String();
-            restObjStr.set(str);
-            Post(str, request, "", path, restObjStr);
-            MsoResponseWrapper msoResponseWrapperObject = MsoUtil.wrapResponse(restObjStr);
-
-            return msoResponseWrapperObject;
+            String path = baseUrl + endpoint;
+            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== "
+                + methodName + " calling change port configuration status, path =[" + path + "]");
+            HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
+            return MsoUtil.wrapResponse(response);
         } catch (Exception e) {
             logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
             logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
@@ -321,8 +320,9 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
 
     @Override
     public MsoResponseWrapperInterface changeManagementUpdate(RequestDetailsWrapper requestDetails, String endpoint) {
-        RestObject<RequestReferencesContainer> msoResponse = PostForObject(requestDetails, "", endpoint, RequestReferencesContainer.class);
-        return new MsoResponseWrapper2<>(msoResponse);
+        String path = baseUrl + endpoint;
+        HttpResponse<RequestReferencesContainer> response = client.post(path, commonHeaders, requestDetails, RequestReferencesContainer.class);
+        return MsoUtil.wrapResponse(response);
     }
 
     public MsoResponseWrapper replaceInstance(org.onap.vid.changeManagement.RequestDetails request, String path) {
@@ -330,17 +330,10 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
 
         try {
-
-
             logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Replace VNF, path =[" + path + "]");
-            RestObject<String> restObjStr = new RestObject<String>();
-            String str = new String();
-            restObjStr.set(str);
-            RequestDetailsWrapper requestDetailsWrapper = new RequestDetailsWrapper();
-            requestDetailsWrapper.requestDetails = new MsoRequestDetails(request);
-
-            Post(str, requestDetailsWrapper, "", path, restObjStr);
-            MsoResponseWrapper msoResponseWrapperObject = MsoUtil.wrapResponse(restObjStr);
+
+            HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
+            MsoResponseWrapper msoResponseWrapperObject = MsoUtil.wrapResponse(response);
             int status = msoResponseWrapperObject.getStatus();
             if (status == 202) {
                 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName +
@@ -365,9 +358,11 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
     public MsoResponseWrapper updateVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String endpoint) {
         String methodName = "updateVnf";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+        String path = baseUrl + endpoint;
+
         RequestDetailsWrapper wrapper = new RequestDetailsWrapper();
         wrapper.requestDetails = new MsoRequestDetails(requestDetails);
-        return updateInstance(requestDetails, endpoint);
+        return updateInstance(requestDetails, path);
     }
 
     public MsoResponseWrapper updateInstance(org.onap.vid.changeManagement.RequestDetails request, String path) {
@@ -376,13 +371,9 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
 
         try {
             logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Delete, path =[" + path + "]");
-            RestObject<String> restObjStr = new RestObject<String>();
-            String str = new String();
-            restObjStr.set(str);
-            RequestDetailsWrapper requestDetailsWrapper = new RequestDetailsWrapper();
-            requestDetailsWrapper.requestDetails = new MsoRequestDetails(request);
-            Put(str, requestDetailsWrapper, "", path, restObjStr);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObjStr);
+
+            HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
+            MsoResponseWrapper w = MsoUtil.wrapResponse(response);
 
             logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
             return w;
@@ -399,10 +390,9 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
         String methodName = "activateServiceInstance";
         logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start ");
         try {
-
-            Post(t, requestDetails, sourceId, endpoint, restObject);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObject);
-
+            String path = baseUrl + endpoint;
+            HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
+            MsoResponseWrapper w = MsoUtil.wrapResponse(response);
             logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w =" + w.getResponse());
 
         } catch (Exception e) {
@@ -419,13 +409,9 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
 
         try {
             logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Remove relationship from service instance, path =[" + endpoint + "]");
-
-            RestObject<String> restObjStr = new RestObject<String>();
-            String str = "";
-            restObjStr.set(str);
-            Post(str, requestDetails, "", endpoint, restObjStr);
-
-            return MsoUtil.wrapResponse(restObjStr);
+            String path = baseUrl + endpoint;
+            HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
+            return MsoUtil.wrapResponse(response);
         } catch (Exception e) {
             logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
             logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
@@ -440,16 +426,89 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
 
         try {
             logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Add relationship to service instance, path =[" + addRelationshipsPath + "]");
+            String path = baseUrl + addRelationshipsPath;
 
-            RestObject<String> restObjStr = new RestObject<>();
-            restObjStr.set("");
-            Post("", requestDetails, "", addRelationshipsPath, restObjStr);
-
-            return MsoUtil.wrapResponse(restObjStr);
+            HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
+            return MsoUtil.wrapResponse(response);
         } catch (Exception e) {
             logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
             logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
             throw e;
         }
     }
+
+    @Override
+    public <T> HttpResponse<T> get(String path, Class<T> responseClass) {
+        return client.get(path, commonHeaders, new HashMap<>(), responseClass);
+    }
+
+    @Override
+    public <T> HttpResponse<T> post(String path, RequestDetailsWrapper<?> requestDetailsWrapper,
+        Class<T> responseClass) {
+        return client.post(path, commonHeaders, requestDetailsWrapper, responseClass);
+    }
+
+
+    private MsoResponseWrapper createInstance(Object request, String endpoint) {
+        String methodName = "createInstance";
+        logger.debug(dateFormat.format(new Date()) + "<== " + methodName + START);
+
+        try {
+            HttpResponse<String> response = client.post(endpoint, commonHeaders, request, String.class);
+            return MsoUtil.wrapResponse(response);
+        } catch (Exception e) {
+            logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            throw e;
+        }
+    }
+
+    /**
+     * Delete instance.
+     *
+     * @param request the request
+     * @param path    the path
+     * @return the mso response wrapper
+     * @throws Exception the exception
+     */
+    private MsoResponseWrapper deleteInstance(Object request, String path) {
+        String methodName = "deleteInstance";
+        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
+
+        try {
+            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Delete, path =[" + path + "]");
+
+            HttpResponse<String> response = client.delete(path, commonHeaders, String.class);
+            MsoResponseWrapper w = MsoUtil.wrapResponse(response);
+
+            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
+            return w;
+
+        } catch (Exception e) {
+            logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            throw e;
+        }
+
+    }
+
+    private Map<String, String> initCommonHeaders() {
+        String username = SystemProperties.getProperty(MsoProperties.MSO_USER_NAME);
+        String password = SystemProperties.getProperty(MsoProperties.MSO_PASSWORD);
+        String decrypted_password = Password.deobfuscate(password);
+
+        String authString = username + ":" + decrypted_password;
+
+        byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
+        String authStringEnc = new String(authEncBytes);
+
+        Map<String, String> map = new HashMap<>();
+        map.put(HttpHeaders.AUTHORIZATION,  "Basic " + authStringEnc);
+        map.put(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
+        map.put(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
+        map.put(X_FROM_APP_ID, SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME));
+        map.put(SystemProperties.ECOMP_REQUEST_ID, Logging.extractOrGenerateRequestId());
+        return ImmutableMap.copyOf(map);
+    }
+
 }
\ No newline at end of file
index 59c2c70..402386a 100644 (file)
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.vid.mso.rest;
 
+import com.xebialabs.restito.server.StubServer;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Properties;
+import java.util.UUID;
+import org.glassfish.grizzly.http.util.HttpStatus;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
+import org.onap.vid.client.SyncRestClient;
+import org.onap.vid.controllers.MsoController;
+import org.onap.vid.mso.MsoInterface;
+import org.onap.vid.mso.MsoProperties;
 import org.onap.vid.mso.MsoResponseWrapper;
 import org.onap.vid.mso.MsoResponseWrapperInterface;
 import org.onap.vid.mso.RestObject;
 
 public class MsoRestClientNewTest {
 
-    private MsoRestClientNew createTestSubject() {
-        return new MsoRestClientNew();
+    private static StubServer server;
+    private static StubServer securedServer;
+    private static Properties props = new Properties();
+    private static String msoCreateServiceInstanceJson;
+    private final static String CREATE_INSTANCE_RESPONSE_STR =
+        "{\"requestReferences\":{\"instanceId\":\"baa13544-0e95-4644-9565-9a198a29a294\","
+            + "\"requestId\":\"a42a1a35-3d63-4629-bbe0-4989fa7414cb\"}}";
+    private final static String SERVICE_INSTANCE_ID = "12345";
+    private static final String SAMPLE_VNF_INSTANCE_ID = "111";
+    private static final String SAMPLE_VNF_MODULE_ID = "987";
+    private static final String SAMPLE_NETWORK_INSTANCE_ID = "666";
+    private static final String SAMPLE_CONFIGURATION_ID = "997";
+    private static final String SAMPLE_REQUEST_ID = "7777";
+
+
+    @BeforeClass
+    public static void start() throws IOException {
+        server = new StubServer().run();
+        securedServer = new StubServer().secured().run();
+
+        Path resourceDirectory =
+            Paths.get("src", "test", "resources", "WEB-INF", "conf", "system.properties");
+        try(InputStream is = Files.newInputStream(resourceDirectory)) {
+            props.load(is);
+        }
+
+        Path msoServiceInstantiationJsonFilePath =
+            Paths.get("src", "test", "resources", "payload_jsons", "mso_service_instantiation.json");
+        msoCreateServiceInstanceJson =
+            String.join("\n", Files.readAllLines(msoServiceInstantiationJsonFilePath));
+    }
+
+    @AfterClass
+    public static void stop() {
+        server.stop();
+        securedServer.stop();
+    }
+
+
+    private String baseUrl() {
+        return String.format("http://localhost:%d", server.getPort());
     }
 
     @Test
     public void testCreateSvcInstance() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails requestDetails = null;
-        String endpoint = "";
-        MsoResponseWrapper result;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.createSvcInstance(requestDetails, endpoint);
-        } catch (Exception e) {
+        String endpoint = props.getProperty(MsoProperties.MSO_REST_API_CONFIGURATIONS);
+        endpoint = endpoint.replace(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID);
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            endpoint,
+            HttpStatus.ACCEPTED_202,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            closure.executePost(msoCreateServiceInstanceJson, msoRestClient()::createSvcInstance);
         }
     }
 
     @Test
     public void testCreateVnf() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails requestDetails = null;
-        String endpoint = "";
-        MsoResponseWrapper result;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.createVnf(requestDetails, endpoint);
-        } catch (Exception e) {
+        String endpoint = props.getProperty(MsoProperties.MSO_REST_API_VNF_INSTANCE);
+        endpoint = endpoint.replace(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID);
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            endpoint,
+            HttpStatus.ACCEPTED_202,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            
+            closure.executePost(msoCreateServiceInstanceJson, msoRestClient()::createVnf);
         }
     }
 
     @Test
     public void testCreateNwInstance() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails requestDetails = null;
-        String endpoint = "";
-        MsoResponseWrapper result;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.createNwInstance(requestDetails, endpoint);
-        } catch (Exception e) {
+        String endpoint = props.getProperty(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
+        String nw_endpoint = endpoint.replaceFirst(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID);
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            nw_endpoint,
+            HttpStatus.ACCEPTED_202,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            closure.executePost(msoCreateServiceInstanceJson, msoRestClient()::createNwInstance);
         }
     }
 
     @Test
     public void testCreateVolumeGroupInstance() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails requestDetails = null;
-        String endpoint = "";
-        MsoResponseWrapper result;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.createVolumeGroupInstance(requestDetails, endpoint);
-        } catch (Exception e) {
+        String endpoint = props.getProperty(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
+        String vnf_endpoint = endpoint.replaceFirst(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID);
+        vnf_endpoint = vnf_endpoint.replaceFirst(MsoController.VNF_INSTANCE_ID, SAMPLE_VNF_INSTANCE_ID);
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            vnf_endpoint,
+            HttpStatus.ACCEPTED_202,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            closure.executePost(msoCreateServiceInstanceJson, msoRestClient()::createVolumeGroupInstance);
         }
     }
 
     @Test
     public void testCreateVfModuleInstance() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails requestDetails = null;
-        String endpoint = "";
-        MsoResponseWrapper result;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.createVfModuleInstance(requestDetails, endpoint);
-        } catch (Exception e) {
+        String endpoint = props.getProperty(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
+        String partial_endpoint = endpoint.replaceFirst(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID);
+        String vf_module_endpoint =
+            partial_endpoint.replaceFirst(MsoController.VNF_INSTANCE_ID, SAMPLE_VNF_INSTANCE_ID);
+
+
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            vf_module_endpoint,
+            HttpStatus.ACCEPTED_202,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            closure.executePost(msoCreateServiceInstanceJson, msoRestClient()::createVfModuleInstance);
         }
     }
 
@@ -103,138 +173,105 @@ public class MsoRestClientNewTest {
 
     @Test
     public void testDeleteSvcInstance() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails requestDetails = null;
-        String endpoint = "";
-        MsoResponseWrapper result;
+        String endpoint = props.getProperty(MsoProperties.MSO_REST_API_SVC_INSTANCE);
+        endpoint = endpoint.replaceFirst(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID);
 
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.deleteSvcInstance(requestDetails, endpoint);
-        } catch (Exception e) {
+
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            endpoint,
+            HttpStatus.NO_CONTENT_204,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            closure.executeDelete(msoCreateServiceInstanceJson, msoRestClient()::deleteSvcInstance);
         }
     }
 
     @Test
     public void testDeleteVnf() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails requestDetails = null;
-        String endpoint = "";
-        MsoResponseWrapper result;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.deleteVnf(requestDetails, endpoint);
-        } catch (Exception e) {
+        String endpoint = props.getProperty(MsoProperties.MSO_REST_API_VNF_INSTANCE);
+        endpoint = endpoint.replaceFirst(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID);
+
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            endpoint,
+            HttpStatus.NO_CONTENT_204,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            closure.executeDelete(msoCreateServiceInstanceJson, msoRestClient()::deleteVnf);
         }
     }
 
     @Test
     public void testDeleteVfModule() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails requestDetails = null;
-        String endpoint = "";
-        MsoResponseWrapper result;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.deleteVfModule(requestDetails, endpoint);
-        } catch (Exception e) {
+        String endpoint = props.getProperty(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
+        String part_endpoint = endpoint.replaceFirst(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID);
+        String vf_modules_endpoint = part_endpoint.replaceFirst(MsoController.VNF_INSTANCE_ID, SAMPLE_VNF_INSTANCE_ID);
+        String delete_vf_endpoint = vf_modules_endpoint + '/' + SAMPLE_VNF_MODULE_ID;
+
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            delete_vf_endpoint,
+            HttpStatus.NO_CONTENT_204,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            closure.executeDelete(msoCreateServiceInstanceJson, msoRestClient()::deleteVfModule);
         }
     }
 
     @Test
     public void testDeleteVolumeGroupInstance() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails requestDetails = null;
-        String endpoint = "";
-        MsoResponseWrapper result;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.deleteVolumeGroupInstance(requestDetails, endpoint);
-        } catch (Exception e) {
+        String endpoint = props.getProperty(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
+        String svc_endpoint = endpoint.replaceFirst(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID);
+        String vnf_endpoint = svc_endpoint.replaceFirst(MsoController.VNF_INSTANCE_ID, SAMPLE_VNF_INSTANCE_ID);
+        String delete_volume_group_endpoint = vnf_endpoint + "/" + SAMPLE_VNF_MODULE_ID;
+
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            delete_volume_group_endpoint,
+            HttpStatus.NO_CONTENT_204,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            closure.executeDelete(msoCreateServiceInstanceJson, msoRestClient()::deleteVolumeGroupInstance);
         }
     }
 
     @Test
     public void testDeleteNwInstance() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails requestDetails = null;
-        String endpoint = "";
-        MsoResponseWrapper result;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.deleteNwInstance(requestDetails, endpoint);
-        } catch (Exception e) {
+        String endpoint = props.getProperty(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
+        String svc_endpoint = endpoint.replaceFirst(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID);
+        String delete_nw_endpoint = svc_endpoint + "/" + SAMPLE_NETWORK_INSTANCE_ID;
+
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            delete_nw_endpoint,
+            HttpStatus.NO_CONTENT_204,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            closure.executeDelete(msoCreateServiceInstanceJson, msoRestClient()::deleteNwInstance);
         }
     }
 
     @Test
-    public void testGetOrchestrationRequest() throws Exception {
-        MsoRestClientNew testSubject;
-        String t = "";
-        String sourceId = "";
-        String endpoint = "";
-        RestObject restObject = null;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            testSubject.getOrchestrationRequest(t, sourceId, endpoint, restObject);
-        } catch (Exception e) {
+    public void testGetOrchestrationRequest() {
+        String p = props.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQ);
+        String path = p + "/" + SAMPLE_REQUEST_ID;
+
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            path,
+            HttpStatus.OK_200,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            closure.executeGet(msoRestClient()::getOrchestrationRequest);
         }
     }
 
     @Test
-    public void testGetManualTasks() throws Exception {
-        MsoRestClientNew testSubject;
-        String t = "";
-        String sourceId = "";
-        String endpoint = "";
-        RestObject restObject = null;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            testSubject.getManualTasks(t, sourceId, endpoint, restObject);
-        } catch (Exception e) {
-        }
-    }
-
-    @Test
-    public void testCreateInstance() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails request = null;
-        String path = "";
-        MsoResponseWrapper result;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.createInstance(request, path);
-        } catch (Exception e) {
-        }
-    }
-
-    @Test
-    public void testDeleteInstance() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails request = null;
-        String path = "";
-        MsoResponseWrapper result;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.deleteInstance(request, path);
-        } catch (Exception e) {
+    public void testGetManualTasks() {
+        String p = props.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQ);
+        String path = p + "/" + UUID.randomUUID();
+
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            path,
+            HttpStatus.OK_200,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            closure.executeGet(msoRestClient()::getManualTasks);
         }
     }
 
@@ -307,16 +344,17 @@ public class MsoRestClientNewTest {
 
     @Test
     public void testSetConfigurationActiveStatus() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails request = null;
-        String path = "";
-        MsoResponseWrapper result;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.setConfigurationActiveStatus(request, path);
-        } catch (Exception e) {
+        String endpoint = "/serviceInstances/v5/<service_instance_id>/configurations/<configuration_id>";
+        endpoint = endpoint.replace(MsoController.SVC_INSTANCE_ID, SERVICE_INSTANCE_ID);
+        endpoint = endpoint.replace(MsoController.CONFIGURATION_ID, SAMPLE_CONFIGURATION_ID);
+        endpoint = endpoint + "/activate";
+
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            endpoint,
+            HttpStatus.ACCEPTED_202,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            closure.executePost(msoCreateServiceInstanceJson, msoRestClient()::setConfigurationActiveStatus);
         }
     }
 
@@ -369,16 +407,15 @@ public class MsoRestClientNewTest {
 
     @Test
     public void testRemoveRelationshipFromServiceInstance() throws Exception {
-        MsoRestClientNew testSubject;
-        RequestDetails requestDetails = null;
-        String endpoint = "";
-        MsoResponseWrapper result;
-
-        // default test
-        try {
-            testSubject = createTestSubject();
-            result = testSubject.removeRelationshipFromServiceInstance(requestDetails, endpoint);
-        } catch (Exception e) {
+        String serviceEndpoint = props.getProperty(MsoProperties.MSO_REST_API_SVC_INSTANCE);
+        String removeRelationshipsPath = serviceEndpoint + "/" + SERVICE_INSTANCE_ID + "/removeRelationships";
+
+        try(MsoRestClientTestUtil closure = new MsoRestClientTestUtil(
+            server,
+            removeRelationshipsPath,
+            HttpStatus.ACCEPTED_202,
+            CREATE_INSTANCE_RESPONSE_STR,CREATE_INSTANCE_RESPONSE_STR)) {
+            closure.executePost(msoCreateServiceInstanceJson, msoRestClient()::removeRelationshipFromServiceInstance);
         }
     }
 
@@ -396,4 +433,12 @@ public class MsoRestClientNewTest {
         } catch (Exception e) {
         }
     }
+
+    private MsoRestClientNew msoRestClient() {
+        return new MsoRestClientNew(new SyncRestClient(MsoInterface.objectMapper()), baseUrl());
+    }
+
+    private MsoRestClientNew createTestSubject() {
+        return new MsoRestClientNew(null, "");
+    }
 }
\ No newline at end of file
index 0cfc0be..2b067b2 100644 (file)
@@ -1,9 +1,30 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.vid.mso.rest;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.json.JSONObject;
 import org.junit.Assert;
 import org.onap.vid.changeManagement.RequestDetails;
+import org.onap.vid.client.SyncRestClient;
 import org.onap.vid.domain.mso.CloudConfiguration;
 import org.onap.vid.domain.mso.ModelInfo;
 import org.onap.vid.domain.mso.RequestInfo;
@@ -24,7 +45,7 @@ import org.togglz.core.manager.FeatureManager;
 public class MsoRestClientTest {
 
 
-    private MsoBusinessLogic msoBusinessLogic = new MsoBusinessLogicImpl(new MsoRestClientNew(), null);
+    private MsoBusinessLogic msoBusinessLogic = new MsoBusinessLogicImpl(new MsoRestClientNew(new SyncRestClient(), ""), null);
     private ObjectMapper om = new ObjectMapper();
 
     @Test
diff --git a/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientTestUtil.java b/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientTestUtil.java
new file mode 100644 (file)
index 0000000..e8f5569
--- /dev/null
@@ -0,0 +1,108 @@
+package org.onap.vid.mso.rest;
+
+import static com.xebialabs.restito.builder.stub.StubHttp.whenHttp;
+import static com.xebialabs.restito.builder.verify.VerifyHttp.verifyHttp;
+import static com.xebialabs.restito.semantics.Action.contentType;
+import static com.xebialabs.restito.semantics.Action.status;
+import static com.xebialabs.restito.semantics.Action.stringContent;
+import static com.xebialabs.restito.semantics.Condition.delete;
+import static com.xebialabs.restito.semantics.Condition.get;
+import static com.xebialabs.restito.semantics.Condition.method;
+import static com.xebialabs.restito.semantics.Condition.post;
+import static com.xebialabs.restito.semantics.Condition.uri;
+import static com.xebialabs.restito.semantics.Condition.withHeader;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.xebialabs.restito.semantics.Action;
+import com.xebialabs.restito.server.StubServer;
+import java.io.IOException;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import org.glassfish.grizzly.http.Method;
+import org.glassfish.grizzly.http.util.HttpStatus;
+import org.json.JSONObject;
+import org.junit.Assert;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.vid.mso.MsoResponseWrapper;
+
+class MsoRestClientTestUtil implements AutoCloseable {
+  private final StubServer server;
+  private final String endpoint;
+  private final String responsePayload;
+  private final HttpStatus expectedStatus;
+  private final String expectedResponseStr;
+
+  MsoRestClientTestUtil(StubServer server, String endpoint, HttpStatus expectedStatus,
+      String responsePayload,
+      String expectedResponseStr) {
+    this.server = server;
+    this.endpoint = endpoint;
+    this.responsePayload = responsePayload;
+    this.expectedStatus = expectedStatus;
+    this.expectedResponseStr = expectedResponseStr;
+  }
+
+  void executePost(String jsonPayload, BiFunction<RequestDetails, String, MsoResponseWrapper> func) throws IOException {
+    whenHttp(server)
+        .match(post(endpoint))
+        .then(status(expectedStatus), jsonContent(responsePayload), contentType(MediaType.APPLICATION_JSON));
+
+    RequestDetails sampleRequestDetails =
+        new ObjectMapper().readValue(jsonPayload, RequestDetails.class);
+
+    MsoResponseWrapper response = func.apply(sampleRequestDetails, endpoint);
+    JSONObject actualJson = new JSONObject(response.getEntity());
+
+    Assert.assertEquals(expectedStatus.getStatusCode(), response.getStatus());
+    Assert.assertEquals(expectedResponseStr, actualJson.toString());
+    verifyServer(server, endpoint, Method.POST);
+
+  }
+
+  void executeDelete(String jsonPayload, BiFunction<RequestDetails, String, MsoResponseWrapper> func)
+      throws IOException {
+    whenHttp(server)
+        .match(delete(endpoint))
+        .then(status(expectedStatus), jsonContent(responsePayload), contentType(MediaType.APPLICATION_JSON));
+
+    RequestDetails sampleRequestDetails =
+        new ObjectMapper().readValue(jsonPayload, RequestDetails.class);
+    MsoResponseWrapper response = func.apply(sampleRequestDetails, endpoint);
+
+    Assert.assertEquals(expectedStatus.getStatusCode(), response.getStatus());
+    verifyServer(server, endpoint, Method.DELETE);
+  }
+
+  void executeGet(Function<String, MsoResponseWrapper> func) {
+    whenHttp(server)
+        .match(get(endpoint))
+        .then(status(expectedStatus), jsonContent(responsePayload), contentType(MediaType.APPLICATION_JSON));
+
+    MsoResponseWrapper response = func.apply(endpoint);
+
+    Assert.assertEquals(expectedStatus.getStatusCode(), response.getStatus());
+    verifyServer(server, endpoint, Method.GET);
+  }
+
+  private void verifyServer(StubServer server, String endpoint, Method httpMethod) {
+    verifyHttp(server).once(
+        method(httpMethod),
+        uri(endpoint),
+        withHeader(HttpHeaders.AUTHORIZATION),
+        withHeader(HttpHeaders.ACCEPT),
+        withHeader(HttpHeaders.CONTENT_TYPE),
+        withHeader(MsoRestClientNew.X_FROM_APP_ID),
+        withHeader(SystemProperties.ECOMP_REQUEST_ID));
+  }
+
+  private Action jsonContent(String str) {
+    return stringContent(str);
+  }
+
+  @Override
+  public void close() {
+  }
+}
+
index 5a21d8c..8aafda3 100644 (file)
@@ -1,20 +1,41 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.vid.services;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import io.joshworks.restclient.http.HttpResponse;
 import org.apache.commons.io.IOUtils;
 import org.mockito.ArgumentCaptor;
 import org.onap.vid.changeManagement.ChangeManagementRequest;
+import org.onap.vid.changeManagement.RequestDetailsWrapper;
+import org.onap.vid.client.SyncRestClient;
 import org.onap.vid.controllers.MsoConfig;
 import org.onap.vid.controllers.WebConfig;
 import org.onap.vid.model.RequestReferencesContainer;
 import org.onap.vid.mso.MsoBusinessLogic;
-import org.onap.vid.mso.RestObject;
+import org.onap.vid.mso.MsoInterface;
 import org.onap.vid.mso.rest.MsoRestClientNew;
 import org.onap.vid.mso.rest.RequestDetails;
 import org.onap.vid.properties.AsdcClientConfiguration;
 import org.onap.vid.scheduler.SchedulerRestInterfaceIfc;
-import org.onap.vid.services.ChangeManagementService;
-import org.onap.vid.services.ChangeManagementServiceImpl;
 import org.onap.vid.testUtils.RegExMatcher;
 import org.onap.portalsdk.core.service.DataAccessService;
 import org.onap.portalsdk.core.util.SystemProperties;
@@ -47,23 +68,22 @@ public class ChangeManagementServiceUnitTest extends AbstractTestNGSpringContext
     @Inject
     private ChangeManagementService changeManagementService;
     @Inject
-    private MsoRestClientNew restClientUnderTest;
+    private MsoInterface restClientUnderTest;
 
    // @Test
     void testInPlaceSoftwareUpdateRequest() throws Exception {
 
 
-        doReturn(new RestObject<RequestReferencesContainer>()).when(restClientUnderTest).PostForObject(anyObject(), anyString(), anyString(), anyObject());
+        doReturn(new HttpResponse<>(anyObject(), RequestReferencesContainer.class, anyObject())).when(restClientUnderTest).post(anyString(), anyObject(), anyObject());
 
         URL requestJsonUrl = this.getClass().getResource("/services/change_management_software_update_request.json");
         ChangeManagementRequest changeManagementRequest = objectMapper.readValue(requestJsonUrl, ChangeManagementRequest.class);
         changeManagementService.doChangeManagement(changeManagementRequest, "vidVnf");
 
         ArgumentCaptor<String> endpointCaptor = ArgumentCaptor.forClass(String.class);
-        ArgumentCaptor<String> sourceIdCaptor = ArgumentCaptor.forClass(String.class);
-        ArgumentCaptor<Object> requestCaptor = ArgumentCaptor.forClass(Object.class);
+        ArgumentCaptor<RequestDetailsWrapper> requestCaptor = ArgumentCaptor.forClass(RequestDetailsWrapper.class);
         ArgumentCaptor<Class> responseTypeCaptor = ArgumentCaptor.forClass(Class.class);
-        verify(restClientUnderTest).PostForObject(requestCaptor.capture(), sourceIdCaptor.capture(), endpointCaptor.capture(), responseTypeCaptor.capture());
+        verify(restClientUnderTest).post(endpointCaptor.capture(), requestCaptor.capture(), responseTypeCaptor.capture());
 
         org.onap.vid.changeManagement.RequestDetails expectedRequest = changeManagementRequest.getRequestDetails().get(0);
 
@@ -73,7 +93,7 @@ public class ChangeManagementServiceUnitTest extends AbstractTestNGSpringContext
         String regEx = String.format("/serviceInstances/v[0-9]+/%s/vnfs/%s/inPlaceSoftwareUpdate", serviceInstanceId, vnfInstanceId);
         assertThat(endpointCaptor.getValue(), RegExMatcher.matchesRegEx(regEx));
         assertThat(requestCaptor.getValue(), instanceOf(RequestDetails.class));
-        RequestDetails actualRequest = ((RequestDetails) requestCaptor.getValue());
+        RequestDetails actualRequest = ((RequestDetails) requestCaptor.getValue().requestDetails);
 
         assertThat(actualRequest.getCloudConfiguration().getTenantId(), equalTo(expectedRequest.getCloudConfiguration().getTenantId()));
         assertThat(actualRequest.getCloudConfiguration().getLcpCloudRegionId(), equalTo(expectedRequest.getCloudConfiguration().getLcpCloudRegionId()));
@@ -98,7 +118,7 @@ public class ChangeManagementServiceUnitTest extends AbstractTestNGSpringContext
 
         @Override
         public MsoRestClientNew getMsoClient() {
-            MsoRestClientNew spyClient = spy(new MsoRestClientNew());
+            MsoRestClientNew spyClient = spy(new MsoRestClientNew(new SyncRestClient(), ""));
             return spyClient;
         }
 
index 6c515ec..537b8d6 100644 (file)
@@ -29,7 +29,7 @@
       "requestorId": "az2016"
     },
     "requestParameters": {
-      "subscriptionServiceType":"MOG", //   "subscriptionServiceType":"VMX",
+      "subscriptionServiceType":"MOG",
       "aLaCarte": false,
       "userParams": [{
         "name": "TODO",