diff options
author | Plummer, Brittany <brittany.plummer@att.com> | 2020-04-27 14:40:36 -0400 |
---|---|---|
committer | Benjamin, Max (mb388a) <mb388a@att.com> | 2020-04-27 21:53:38 -0400 |
commit | 593187e78b52cada60430d4006900a3b50da170c (patch) | |
tree | d15e63f4e77f843b5bbafde6a9e325a55ac256f3 /mso-api-handlers/mso-api-handler-infra | |
parent | 0151f5c120f7d325a337efd522f7b46b0f027a1f (diff) |
refactor camunda client in apih
Switched CamundaClient to use restTemplate
Combined clients into one CamundaClient
Initial setup of exception handling in camundaclient
Initial fix of compilation issues
Switched CamundaClient constructor
Updated how url is set in CamundaClient
Updated auth to fix tag mismatch warning
Added throwing ClientConnectionException to client
Updated ServiceInstancesTest cases
Updated error handling for CamundaClient
Updated how response is returned
Fixed failing unit tests in apih infra
Refactored response handler for responseentity
Fixed failing unit tests in apih
Removed old unit tests for client
Import cleanup for unneeded changes
Updated to use new CamundaClient
Updated CamundaClient and ResponseHandler tests
Removed unused RequestHandler
Issue-ID: SO-2834
Signed-off-by: Benjamin, Max (mb388a) <mb388a@att.com>
Change-Id: I82ff489c9c939a7e8ec0e48476daf7e45baa5f20
Diffstat (limited to 'mso-api-handlers/mso-api-handler-infra')
9 files changed, 204 insertions, 527 deletions
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/E2EServiceInstances.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/E2EServiceInstances.java index d4bc4fd165..fae55ff84b 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/E2EServiceInstances.java +++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/E2EServiceInstances.java @@ -40,13 +40,12 @@ import org.onap.so.client.aai.AAIObjectType; import org.onap.so.client.aai.AAIResourcesClient; import org.onap.so.client.aai.entities.uri.AAIResourceUri; import org.onap.so.client.aai.entities.uri.AAIUriFactory; -import org.onap.so.logger.LoggingAnchor; -import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.json.JSONObject; +import org.onap.logging.filter.base.ErrorCode; +import org.onap.so.apihandler.camundabeans.CamundaResponse; +import org.onap.so.apihandler.common.CamundaClient; import org.onap.so.apihandler.common.ErrorNumbers; -import org.onap.so.apihandler.common.RequestClient; -import org.onap.so.apihandler.common.RequestClientFactory; import org.onap.so.apihandler.common.RequestClientParameter; import org.onap.so.apihandler.common.ResponseBuilder; import org.onap.so.apihandler.common.ResponseHandler; @@ -56,6 +55,7 @@ import org.onap.so.apihandlerinfra.e2eserviceinstancebeans.E2EServiceInstanceReq import org.onap.so.apihandlerinfra.e2eserviceinstancebeans.E2EServiceInstanceScaleRequest; import org.onap.so.apihandlerinfra.e2eserviceinstancebeans.GetE2EServiceInstanceResponse; import org.onap.so.apihandlerinfra.exceptions.ApiException; +import org.onap.so.apihandlerinfra.exceptions.BPMNFailureException; import org.onap.so.apihandlerinfra.exceptions.ValidateException; import org.onap.so.apihandlerinfra.logging.ErrorLoggerInfo; import org.onap.so.constants.Status; @@ -64,7 +64,7 @@ import org.onap.so.db.catalog.beans.ServiceRecipe; import org.onap.so.db.catalog.client.CatalogDbClient; import org.onap.so.db.request.beans.OperationStatus; import org.onap.so.db.request.client.RequestsDbClient; -import org.onap.logging.filter.base.ErrorCode; +import org.onap.so.logger.LoggingAnchor; import org.onap.so.logger.MessageEnum; import org.onap.so.serviceinstancebeans.ModelInfo; import org.onap.so.serviceinstancebeans.ModelType; @@ -76,6 +76,7 @@ import org.onap.so.serviceinstancebeans.SubscriberInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.v3.oas.annotations.OpenAPIDefinition; @@ -106,9 +107,6 @@ public class E2EServiceInstances { private MsoRequest msoRequest; @Autowired - private RequestClientFactory requestClientFactory; - - @Autowired private RequestsDbClient requestsDbClient; @Autowired @@ -117,6 +115,12 @@ public class E2EServiceInstances { @Autowired private ResponseBuilder builder; + @Autowired + private CamundaClient camundaClient; + + @Autowired + private ResponseHandler responseHandler; + /** * POST Requests for E2E Service create Instance on a version provided * @@ -288,24 +292,16 @@ public class E2EServiceInstances { String workflowUrl = "/mso/async/services/CompareModelofE2EServiceInstance"; int recipeTimeout = 180; - RequestClient requestClient; - HttpResponse response; - + String bpmnRequest = null; + RequestClientParameter postParam = null; try { - requestClient = requestClientFactory.getRequestClient(workflowUrl); - JSONObject jjo = new JSONObject(requestJSON); - String bpmnRequest = jjo.toString(); - - // Capture audit event - logger.debug("MSO API Handler Posting call to BPEL engine for url: " + requestClient.getUrl()); + bpmnRequest = jjo.toString(); String serviceId = instanceIdMap.get(SERVICE_ID); String serviceType = e2eCompareModelReq.getServiceType(); - RequestClientParameter postParam = new RequestClientParameter.Builder().setRequestId(requestId) - .setBaseVfModule(false).setRecipeTimeout(recipeTimeout).setRequestAction(action.name()) - .setServiceInstanceId(serviceId).setServiceType(serviceType).setRequestDetails(bpmnRequest) - .setALaCarte(false).build(); - response = requestClient.post(postParam); + postParam = new RequestClientParameter.Builder().setRequestId(requestId).setBaseVfModule(false) + .setRecipeTimeout(recipeTimeout).setRequestAction(action.name()).setServiceInstanceId(serviceId) + .setServiceType(serviceType).setRequestDetails(bpmnRequest).setALaCarte(false).build(); } catch (Exception e) { Response resp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException, "Failed calling bpmn " + e.getMessage(), @@ -315,21 +311,7 @@ public class E2EServiceInstances { logger.debug(END_OF_THE_TRANSACTION + resp.getEntity().toString()); return resp; } - - if (response == null) { - Response resp = - msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException, - "bpelResponse is null", ErrorNumbers.SVC_NO_SERVER_RESOURCES, null, version); - logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_BPEL_COMMUNICATE_ERROR.toString(), - MSO_PROP_APIHANDLER_INFRA, ErrorCode.BusinessProcessError.getValue(), "Null response from BPEL"); - logger.debug(END_OF_THE_TRANSACTION + resp.getEntity().toString()); - return resp; - } - - ResponseHandler respHandler = new ResponseHandler(response, requestClient.getType()); - int bpelStatus = respHandler.getStatus(); - - return beplStatusUpdate(requestClient, respHandler, bpelStatus, version); + return postRequest(workflowUrl, postParam, version); } private Response getE2EServiceInstance(String serviceId, String operationId, String version) { @@ -431,29 +413,21 @@ public class E2EServiceInstances { return response; } - RequestClient requestClient; - HttpResponse response; + String bpmnRequest = null; + RequestClientParameter postParam = null; try { - requestClient = requestClientFactory.getRequestClient(recipeLookupResult.getOrchestrationURI()); - JSONObject jjo = new JSONObject(requestJSON); jjo.put("operationId", requestId); - - String bpmnRequest = jjo.toString(); - - // Capture audit event - logger.debug("MSO API Handler Posting call to BPEL engine for url: " + requestClient.getUrl()); + bpmnRequest = jjo.toString(); String serviceId = instanceIdMap.get(SERVICE_ID); String operationType = instanceIdMap.get("operationType"); String serviceInstanceType = e2eActReq.getServiceType(); - RequestClientParameter clientParam = new RequestClientParameter.Builder().setRequestId(requestId) - .setBaseVfModule(false).setRecipeTimeout(recipeLookupResult.getRecipeTimeout()) - .setRequestAction(action.name()).setServiceInstanceId(serviceId).setOperationType(operationType) - .setServiceType(serviceInstanceType).setRequestDetails(bpmnRequest).setApiVersion(version) - .setALaCarte(false).setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build(); - response = requestClient.post(clientParam); - + postParam = new RequestClientParameter.Builder().setRequestId(requestId).setBaseVfModule(false) + .setRecipeTimeout(recipeLookupResult.getRecipeTimeout()).setRequestAction(action.name()) + .setServiceInstanceId(serviceId).setOperationType(operationType).setServiceType(serviceInstanceType) + .setRequestDetails(bpmnRequest).setApiVersion(version).setALaCarte(false) + .setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build(); } catch (Exception e) { Response resp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException, "Failed calling bpmn " + e.getMessage(), @@ -464,21 +438,7 @@ public class E2EServiceInstances { logger.debug("End of the transaction, the final response is: " + resp.getEntity()); return resp; } - - if (response == null) { - Response resp = - msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException, - "bpelResponse is null", ErrorNumbers.SVC_NO_SERVER_RESOURCES, null, version); - logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_BPEL_COMMUNICATE_ERROR.toString(), - MSO_PROP_APIHANDLER_INFRA, ErrorCode.BusinessProcessError.getValue(), "Null response from BPEL"); - logger.debug(END_OF_THE_TRANSACTION + resp.getEntity()); - return resp; - } - - ResponseHandler respHandler = new ResponseHandler(response, requestClient.getType()); - int bpelStatus = respHandler.getStatus(); - - return beplStatusUpdate(requestClient, respHandler, bpelStatus, version); + return postRequest(recipeLookupResult.getOrchestrationURI(), postParam, version); } private Response deleteE2EserviceInstances(String requestJSON, Action action, HashMap<String, String> instanceIdMap, @@ -540,29 +500,19 @@ public class E2EServiceInstances { logger.debug(END_OF_THE_TRANSACTION + response.getEntity()); return response; } - - RequestClient requestClient; - HttpResponse response; - + String bpmnRequest = null; + RequestClientParameter clientParam = null; try { - requestClient = requestClientFactory.getRequestClient(recipeLookupResult.getOrchestrationURI()); - JSONObject jjo = new JSONObject(requestJSON); jjo.put("operationId", requestId); - - String bpmnRequest = jjo.toString(); - - // Capture audit event - logger.debug("MSO API Handler Posting call to BPEL engine for url: " + requestClient.getUrl()); + bpmnRequest = jjo.toString(); String serviceId = instanceIdMap.get(SERVICE_ID); String serviceInstanceType = e2eDelReq.getServiceType(); - RequestClientParameter clientParam = new RequestClientParameter.Builder().setRequestId(requestId) - .setBaseVfModule(false).setRecipeTimeout(recipeLookupResult.getRecipeTimeout()) - .setRequestAction(action.name()).setServiceInstanceId(serviceId).setServiceType(serviceInstanceType) - .setRequestDetails(bpmnRequest).setApiVersion(version).setALaCarte(false) - .setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build(); - response = requestClient.post(clientParam); - + clientParam = new RequestClientParameter.Builder().setRequestId(requestId).setBaseVfModule(false) + .setRecipeTimeout(recipeLookupResult.getRecipeTimeout()).setRequestAction(action.name()) + .setServiceInstanceId(serviceId).setServiceType(serviceInstanceType).setRequestDetails(bpmnRequest) + .setApiVersion(version).setALaCarte(false).setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()) + .build(); } catch (Exception e) { Response resp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException, "Failed calling bpmn " + e.getMessage(), @@ -574,20 +524,7 @@ public class E2EServiceInstances { return resp; } - if (response == null) { - Response resp = - msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException, - "bpelResponse is null", ErrorNumbers.SVC_NO_SERVER_RESOURCES, null, version); - logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_BPEL_COMMUNICATE_ERROR.toString(), - MSO_PROP_APIHANDLER_INFRA, ErrorCode.BusinessProcessError.getValue(), "Null response from BPEL"); - logger.debug(END_OF_THE_TRANSACTION + resp.getEntity()); - return resp; - } - - ResponseHandler respHandler = new ResponseHandler(response, requestClient.getType()); - int bpelStatus = respHandler.getStatus(); - - return beplStatusUpdate(requestClient, respHandler, bpelStatus, version); + return postRequest(recipeLookupResult.getOrchestrationURI(), clientParam, version); } private Response updateE2EserviceInstances(String requestJSON, Action action, String version) throws ApiException { @@ -657,51 +594,14 @@ public class E2EServiceInstances { } String serviceInstanceType = e2eSir.getService().getServiceType(); - - RequestClient requestClient; - HttpResponse response; - String sirRequestJson = convertToString(sir); + RequestClientParameter postParam = new RequestClientParameter.Builder().setRequestId(requestId) + .setBaseVfModule(false).setRecipeTimeout(recipeLookupResult.getRecipeTimeout()) + .setRequestAction(action.name()).setServiceInstanceId(serviceId).setServiceType(serviceInstanceType) + .setRequestDetails(sirRequestJson).setApiVersion(version).setALaCarte(false) + .setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build(); - try { - requestClient = requestClientFactory.getRequestClient(recipeLookupResult.getOrchestrationURI()); - - // Capture audit event - logger.debug("MSO API Handler Posting call to BPEL engine for url: " + requestClient.getUrl()); - RequestClientParameter postParam = new RequestClientParameter.Builder().setRequestId(requestId) - .setBaseVfModule(false).setRecipeTimeout(recipeLookupResult.getRecipeTimeout()) - .setRequestAction(action.name()).setServiceInstanceId(serviceId).setServiceType(serviceInstanceType) - .setRequestDetails(sirRequestJson).setApiVersion(version).setALaCarte(false) - .setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build(); - response = requestClient.post(postParam); - } catch (Exception e) { - logger.debug("Exception while communicate with BPMN engine", e); - Response getBPMNResp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, - MsoException.ServiceException, "Failed calling bpmn " + e.getMessage(), - ErrorNumbers.SVC_NO_SERVER_RESOURCES, null, version); - - logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_BPEL_COMMUNICATE_ERROR.toString(), - MSO_PROP_APIHANDLER_INFRA, ErrorCode.AvailabilityError.getValue(), - "Exception while communicate with BPMN engine"); - logger.debug(END_OF_THE_TRANSACTION + getBPMNResp.getEntity()); - - return getBPMNResp; - } - - if (response == null) { - Response getBPMNResp = - msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException, - "bpelResponse is null", ErrorNumbers.SVC_NO_SERVER_RESOURCES, null, version); - logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_BPEL_COMMUNICATE_ERROR.toString(), - MSO_PROP_APIHANDLER_INFRA, ErrorCode.BusinessProcessError.getValue(), "Null response from BPEL"); - logger.debug(END_OF_THE_TRANSACTION + getBPMNResp.getEntity()); - return getBPMNResp; - } - - ResponseHandler respHandler = new ResponseHandler(response, requestClient.getType()); - int bpelStatus = respHandler.getStatus(); - - return beplStatusUpdate(requestClient, respHandler, bpelStatus, version); + return postRequest(recipeLookupResult.getOrchestrationURI(), postParam, version); } private Response processE2EserviceInstances(String requestJSON, Action action, @@ -771,48 +671,14 @@ public class E2EServiceInstances { String serviceInstanceType = e2eSir.getService().getServiceType(); String serviceId = e2eSir.getService().getServiceId(); - RequestClient requestClient; - HttpResponse response; - String sirRequestJson = convertToString(sir); + RequestClientParameter parameter = new RequestClientParameter.Builder().setRequestId(requestId) + .setBaseVfModule(false).setRecipeTimeout(recipeLookupResult.getRecipeTimeout()) + .setRequestAction(action.name()).setServiceInstanceId(serviceId).setServiceType(serviceInstanceType) + .setRequestDetails(sirRequestJson).setApiVersion(version).setALaCarte(false) + .setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build(); - try { - requestClient = requestClientFactory.getRequestClient(recipeLookupResult.getOrchestrationURI()); - - // Capture audit event - logger.debug("MSO API Handler Posting call to BPEL engine for url: " + requestClient.getUrl()); - RequestClientParameter parameter = new RequestClientParameter.Builder().setRequestId(requestId) - .setBaseVfModule(false).setRecipeTimeout(recipeLookupResult.getRecipeTimeout()) - .setRequestAction(action.name()).setServiceInstanceId(serviceId).setServiceType(serviceInstanceType) - .setRequestDetails(sirRequestJson).setApiVersion(version).setALaCarte(false) - .setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build(); - response = requestClient.post(parameter); - } catch (Exception e) { - Response resp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, - MsoException.ServiceException, "Failed calling bpmn " + e.getMessage(), - ErrorNumbers.SVC_NO_SERVER_RESOURCES, null, version); - - logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_BPEL_COMMUNICATE_ERROR.toString(), - MSO_PROP_APIHANDLER_INFRA, ErrorCode.AvailabilityError.getValue(), - "Exception while communicate with BPMN engine"); - logger.debug(END_OF_THE_TRANSACTION + resp.getEntity()); - return resp; - } - - if (response == null) { - Response resp = - msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException, - "bpelResponse is null", ErrorNumbers.SVC_NO_SERVER_RESOURCES, null, version); - logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_BPEL_COMMUNICATE_ERROR.toString(), - MSO_PROP_APIHANDLER_INFRA, ErrorCode.BusinessProcessError.getValue(), "Null response from BPEL"); - logger.debug(END_OF_THE_TRANSACTION + resp.getEntity()); - return resp; - } - - ResponseHandler respHandler = new ResponseHandler(response, requestClient.getType()); - int bpelStatus = respHandler.getStatus(); - - return beplStatusUpdate(requestClient, respHandler, bpelStatus, version); + return postRequest(recipeLookupResult.getOrchestrationURI(), parameter, version); } private Response scaleE2EserviceInstances(String requestJSON, Action action, String version) throws ApiException { @@ -865,90 +731,67 @@ public class E2EServiceInstances { logger.debug(END_OF_THE_TRANSACTION + response.getEntity()); return response; } - - RequestClient requestClient; - HttpResponse response; - + String bpmnRequest = null; + RequestClientParameter postParam = null; try { - requestClient = requestClientFactory.getRequestClient(recipeLookupResult.getOrchestrationURI()); - JSONObject jjo = new JSONObject(requestJSON); jjo.put("operationId", requestId); - - String bpmnRequest = jjo.toString(); - - // Capture audit event - logger.debug("MSO API Handler Posting call to BPEL engine for url: " + requestClient.getUrl()); + bpmnRequest = jjo.toString(); String serviceId = instanceIdMap.get(SERVICE_ID); String serviceInstanceType = e2eScaleReq.getService().getServiceType(); - RequestClientParameter postParam = new RequestClientParameter.Builder().setRequestId(requestId) - .setBaseVfModule(false).setRecipeTimeout(recipeLookupResult.getRecipeTimeout()) - .setRequestAction(action.name()).setServiceInstanceId(serviceId).setServiceType(serviceInstanceType) - .setRequestDetails(bpmnRequest).setApiVersion(version).setALaCarte(false) - .setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build(); - response = requestClient.post(postParam); + postParam = new RequestClientParameter.Builder().setRequestId(requestId).setBaseVfModule(false) + .setRecipeTimeout(recipeLookupResult.getRecipeTimeout()).setRequestAction(action.name()) + .setServiceInstanceId(serviceId).setServiceType(serviceInstanceType).setRequestDetails(bpmnRequest) + .setApiVersion(version).setALaCarte(false).setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()) + .build(); } catch (Exception e) { Response resp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, - MsoException.ServiceException, "Failed calling bpmn " + e.getMessage(), + MsoException.ServiceException, "Failed creating bpmnRequest " + e.getMessage(), ErrorNumbers.SVC_NO_SERVER_RESOURCES, null, version); logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_BPEL_COMMUNICATE_ERROR.toString(), MSO_PROP_APIHANDLER_INFRA, ErrorCode.AvailabilityError.getValue(), - "Exception while communicate with BPMN engine", e); + "Exception while creating bpmnRequest", e); logger.debug(END_OF_THE_TRANSACTION + resp.getEntity()); return resp; } + return postRequest(recipeLookupResult.getOrchestrationURI(), postParam, version); + } - if (response == null) { - Response resp = - msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException, - "bpelResponse is null", ErrorNumbers.SVC_NO_SERVER_RESOURCES, null, version); + protected Response postRequest(String orchestrationURI, RequestClientParameter postParam, String version) + throws ApiException { + ResponseEntity<String> response = null; + try { + response = camundaClient.post(postParam, orchestrationURI); + } catch (BPMNFailureException e) { + Response resp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR, + MsoException.ServiceException, "Failed calling bpmn " + e.getMessage(), + ErrorNumbers.SVC_NO_SERVER_RESOURCES, null, version); logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_BPEL_COMMUNICATE_ERROR.toString(), - MSO_PROP_APIHANDLER_INFRA, ErrorCode.BusinessProcessError.getValue(), "Null response from BPEL"); + MSO_PROP_APIHANDLER_INFRA, ErrorCode.AvailabilityError.getValue(), + "Exception while communicate with BPMN engine"); + logger.debug(END_OF_THE_TRANSACTION + resp.getEntity()); + return resp; + } catch (Exception e) { + Response resp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, + MsoException.ServiceException, "Failed calling bpmn " + e.getMessage(), + ErrorNumbers.SVC_NO_SERVER_RESOURCES, null, version); + logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_BPEL_COMMUNICATE_ERROR.toString(), + MSO_PROP_APIHANDLER_INFRA, ErrorCode.AvailabilityError.getValue(), + "Exception while communicate with BPMN engine"); logger.debug(END_OF_THE_TRANSACTION + resp.getEntity()); return resp; } - - ResponseHandler respHandler = new ResponseHandler(response, requestClient.getType()); - int bpelStatus = respHandler.getStatus(); - - return beplStatusUpdate(requestClient, respHandler, bpelStatus, version); + return bpelStatusUpdate(response, version); } - private Response beplStatusUpdate(RequestClient requestClient, ResponseHandler respHandler, int bpelStatus, - String version) { - + private Response bpelStatusUpdate(ResponseEntity<String> responseEntity, String version) throws ApiException { String apiVersion = version.substring(1); - - // BPMN accepted the request, the request is in progress - if (bpelStatus == HttpStatus.SC_ACCEPTED) { - String camundaJSONResponseBody = respHandler.getResponseBody(); - logger.debug("Received from Camunda: " + camundaJSONResponseBody); - logger.debug(END_OF_THE_TRANSACTION + camundaJSONResponseBody); - return builder.buildResponse(HttpStatus.SC_ACCEPTED, null, camundaJSONResponseBody, apiVersion); - } else { - List<String> variables = new ArrayList<>(); - variables.add(bpelStatus + ""); - String camundaJSONResponseBody = respHandler.getResponseBody(); - if (camundaJSONResponseBody != null && !camundaJSONResponseBody.isEmpty()) { - Response resp = msoRequest.buildServiceErrorResponse(bpelStatus, MsoException.ServiceException, - "Request Failed due to BPEL error with HTTP Status= %1 " + '\n' + camundaJSONResponseBody, - ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, variables, version); - logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_BPEL_RESPONSE_ERROR.toString(), - requestClient.getUrl(), ErrorCode.BusinessProcessError.getValue(), - "Response from BPEL engine is failed with HTTP Status=" + bpelStatus); - logger.debug(END_OF_THE_TRANSACTION + resp.getEntity()); - return resp; - } else { - Response resp = msoRequest.buildServiceErrorResponse(bpelStatus, MsoException.ServiceException, - "Request Failed due to BPEL error with HTTP Status= %1", - ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, variables, version); - logger.error("", MessageEnum.APIH_BPEL_RESPONSE_ERROR.toString(), requestClient.getUrl(), - ErrorCode.BusinessProcessError.getValue(), "Response from BPEL engine is empty"); - logger.debug(END_OF_THE_TRANSACTION + resp.getEntity()); - return resp; - } - } + responseHandler.acceptedResponse(responseEntity); + CamundaResponse camundaResponse = responseHandler.getCamundaResponse(responseEntity); + String response = camundaResponse.getResponse(); + logger.debug(END_OF_THE_TRANSACTION + response); + return builder.buildResponse(HttpStatus.SC_ACCEPTED, null, response, apiVersion); } /** diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/ManualTasks.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/ManualTasks.java index 0ec61785fd..b9995bb855 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/ManualTasks.java +++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/ManualTasks.java @@ -34,11 +34,10 @@ import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; +import org.onap.logging.filter.base.ErrorCode; +import org.onap.so.apihandler.common.CamundaClient; import org.onap.so.apihandler.common.ErrorNumbers; -import org.onap.so.apihandler.common.RequestClient; -import org.onap.so.apihandler.common.RequestClientFactory; import org.onap.so.apihandler.common.ResponseBuilder; import org.onap.so.apihandler.common.ResponseHandler; import org.onap.so.apihandlerinfra.exceptions.ApiException; @@ -50,12 +49,12 @@ import org.onap.so.apihandlerinfra.tasksbeans.TasksRequest; import org.onap.so.apihandlerinfra.tasksbeans.Value; import org.onap.so.apihandlerinfra.tasksbeans.Variables; import org.onap.so.exceptions.ValidationException; -import org.onap.logging.filter.base.ErrorCode; import org.onap.so.logger.LoggingAnchor; import org.onap.so.logger.MessageEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -76,13 +75,13 @@ public class ManualTasks { private String taskUri; @Autowired - private RequestClientFactory reqClientFactory; + private ResponseBuilder builder; @Autowired - private MsoRequest msoRequest; + private CamundaClient camundaClient; @Autowired - private ResponseBuilder builder; + private ResponseHandler responseHandler; @POST @Path("/{version:[vV]1}/{taskId}/complete") @@ -161,100 +160,37 @@ public class ManualTasks { mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); camundaJsonReq = mapper.writeValueAsString(variablesForComplete); } catch (JsonProcessingException e) { - - ErrorLoggerInfo errorLoggerInfo = - new ErrorLoggerInfo.Builder(MessageEnum.APIH_GENERAL_EXCEPTION, ErrorCode.UnknownError) - .errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build(); - - + logger.error("Mapping of JSON object to Camunda request failed"); ValidateException validateException = new ValidateException.Builder("Mapping of JSON object to Camunda request failed", - HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_GENERAL_SERVICE_ERROR) - .errorInfo(errorLoggerInfo).build(); + HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_GENERAL_SERVICE_ERROR).build(); throw validateException; } - RequestClient requestClient; - HttpResponse response; String requestUrl = taskUri + "/" + taskId + "/complete"; - try { - requestClient = reqClientFactory.getRequestClient(requestUrl); - // Capture audit event - - response = requestClient.post(camundaJsonReq); - - } catch (Exception e) { - - ErrorLoggerInfo errorLoggerInfo = - new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, ErrorCode.AvailabilityError) - .errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build(); - - - - BPMNFailureException bpmnFailureException = - new BPMNFailureException.Builder(String.valueOf(HttpStatus.SC_BAD_GATEWAY), - HttpStatus.SC_BAD_GATEWAY, ErrorNumbers.SVC_NO_SERVER_RESOURCES).errorInfo(errorLoggerInfo) - .build(); - - throw bpmnFailureException; - } - - if (response == null) { - ErrorLoggerInfo errorLoggerInfo = - new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, ErrorCode.BusinessProcessError) - .errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build(); + ResponseEntity<String> response = camundaClient.post(camundaJsonReq, requestUrl); + int bpelStatus = responseHandler.setStatus(response.getStatusCodeValue()); - BPMNFailureException bpmnFailureException = - new BPMNFailureException.Builder(String.valueOf(HttpStatus.SC_BAD_GATEWAY), - HttpStatus.SC_BAD_GATEWAY, ErrorNumbers.SVC_NO_SERVER_RESOURCES).errorInfo(errorLoggerInfo) - .build(); - - throw bpmnFailureException; - - } - - ResponseHandler respHandler = new ResponseHandler(response, requestClient.getType()); - int bpelStatus = respHandler.getStatus(); - - // BPEL accepted the request, the request is in progress - if (bpelStatus == HttpStatus.SC_NO_CONTENT || bpelStatus == HttpStatus.SC_ACCEPTED) { - logger.debug("Received good response from Camunda"); - TaskRequestReference trr = new TaskRequestReference(); - trr.setTaskId(taskId); - String completeResp = null; - try { - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); - completeResp = mapper.writeValueAsString(trr); - } catch (JsonProcessingException e) { - - ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, - ErrorCode.BusinessProcessError).build(); - - - ValidateException validateException = - new ValidateException.Builder("Request Failed due to bad response format", bpelStatus, - ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).errorInfo(errorLoggerInfo).build(); - - throw validateException; - } - logger.debug("Response to the caller: {}", completeResp); - logger.debug("End of the transaction, the final response is: {}", completeResp); - return builder.buildResponse(HttpStatus.SC_ACCEPTED, requestId, completeResp, apiVersion); - } else { - ErrorLoggerInfo errorLoggerInfo = - new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.BusinessProcessError) - .build(); - - - BPMNFailureException bpmnFailureException = new BPMNFailureException.Builder(String.valueOf(bpelStatus), - bpelStatus, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).errorInfo(errorLoggerInfo).build(); - - throw bpmnFailureException; - + responseHandler.acceptedOrNoContentResponse(response); + logger.debug("Received good response from Camunda"); + TaskRequestReference trr = new TaskRequestReference(); + trr.setTaskId(taskId); + String completeResp = null; + try { + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); + completeResp = mapper.writeValueAsString(trr); + } catch (JsonProcessingException e) { + logger.error("Unable to map response from Camunda"); + ValidateException validateException = + new ValidateException.Builder("Request Failed due to bad response format", bpelStatus, + ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).build(); + throw validateException; } - + logger.debug("Response to the caller: {}", completeResp); + logger.debug("End of the transaction, the final response is: {}", completeResp); + return builder.buildResponse(HttpStatus.SC_ACCEPTED, requestId, completeResp, apiVersion); } private static boolean empty(String s) { diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/RequestHandlerUtils.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/RequestHandlerUtils.java index a1e878176b..a61975f529 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/RequestHandlerUtils.java +++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/RequestHandlerUtils.java @@ -38,21 +38,19 @@ import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; import org.apache.commons.lang.StringUtils; -import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.camunda.bpm.engine.impl.persistence.entity.HistoricProcessInstanceEntity; +import org.onap.logging.filter.base.ErrorCode; import org.onap.logging.ref.slf4j.ONAPLogConstants; import org.onap.so.apihandler.camundabeans.CamundaResponse; +import org.onap.so.apihandler.common.CamundaClient; import org.onap.so.apihandler.common.CommonConstants; import org.onap.so.apihandler.common.ErrorNumbers; -import org.onap.so.apihandler.common.RequestClient; -import org.onap.so.apihandler.common.RequestClientFactory; import org.onap.so.apihandler.common.RequestClientParameter; import org.onap.so.apihandler.common.ResponseBuilder; import org.onap.so.apihandler.common.ResponseHandler; import org.onap.so.apihandlerinfra.exceptions.ApiException; import org.onap.so.apihandlerinfra.exceptions.BPMNFailureException; -import org.onap.so.apihandlerinfra.exceptions.ClientConnectionException; import org.onap.so.apihandlerinfra.exceptions.ContactCamundaException; import org.onap.so.apihandlerinfra.exceptions.DuplicateRequestException; import org.onap.so.apihandlerinfra.exceptions.RecipeNotFoundException; @@ -74,7 +72,6 @@ import org.onap.so.db.catalog.beans.VnfResourceCustomization; import org.onap.so.db.catalog.client.CatalogDbClient; import org.onap.so.db.request.beans.InfraActiveRequests; import org.onap.so.exceptions.ValidationException; -import org.onap.logging.filter.base.ErrorCode; import org.onap.so.logger.LogConstants; import org.onap.so.logger.MessageEnum; import org.onap.so.serviceinstancebeans.CloudConfiguration; @@ -115,9 +112,6 @@ public class RequestHandlerUtils extends AbstractRestHandler { private Environment env; @Autowired - private RequestClientFactory reqClientFactory; - - @Autowired private ResponseBuilder builder; @Autowired @@ -129,122 +123,62 @@ public class RequestHandlerUtils extends AbstractRestHandler { @Autowired private CatalogDbClient catalogDbClient; - public Response postBPELRequest(InfraActiveRequests currentActiveReq, RequestClientParameter requestClientParameter, - String orchestrationUri, String requestScope) throws ApiException { - HttpResponse response = null; - RequestClient requestClient = null; - - try { - requestClient = reqClientFactory.getRequestClient(orchestrationUri); - response = requestClient.post(requestClientParameter); - } catch (Exception e) { - logger.error("Error posting request to BPMN", e); - ErrorLoggerInfo errorLoggerInfo = - new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, ErrorCode.AvailabilityError) - .errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build(); - String url = requestClient != null ? requestClient.getUrl() : ""; - ClientConnectionException clientException = - new ClientConnectionException.Builder(url, HttpStatus.SC_BAD_GATEWAY, - ErrorNumbers.SVC_NO_SERVER_RESOURCES).cause(e).errorInfo(errorLoggerInfo).build(); - updateStatus(currentActiveReq, Status.FAILED, clientException.getMessage()); - throw clientException; - } - - if (response == null) { + @Autowired + private CamundaClient camundaClient; - ErrorLoggerInfo errorLoggerInfo = - new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, ErrorCode.BusinessProcessError) - .errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build(); - ClientConnectionException clientException = new ClientConnectionException.Builder(requestClient.getUrl(), - HttpStatus.SC_BAD_GATEWAY, ErrorNumbers.SVC_NO_SERVER_RESOURCES).errorInfo(errorLoggerInfo).build(); - updateStatus(currentActiveReq, Status.FAILED, clientException.getMessage()); - throw clientException; - } + @Autowired + private ResponseHandler responseHandler; - ResponseHandler respHandler = null; - int bpelStatus = 500; + protected ResponseEntity<String> postRequest(InfraActiveRequests currentActiveReq, + RequestClientParameter requestClientParameter, String orchestrationUri) throws ApiException { try { - respHandler = new ResponseHandler(response, requestClient.getType()); - bpelStatus = respHandler.getStatus(); + return camundaClient.post(requestClientParameter, orchestrationUri); } catch (ApiException e) { - logger.error("Exception occurred", e); - ErrorLoggerInfo errorLoggerInfo = - new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.SchemaError) - .errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build(); - ValidateException validateException = - new ValidateException.Builder("Exception caught mapping Camunda JSON response to object", - HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_BAD_PARAMETER).cause(e) - .errorInfo(errorLoggerInfo).build(); - updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage()); - throw validateException; + updateStatus(currentActiveReq, Status.FAILED, e.getMessage()); + throw e; } + } - // BPEL accepted the request, the request is in progress - if (bpelStatus == HttpStatus.SC_ACCEPTED) { - ServiceInstancesResponse jsonResponse; - CamundaResponse camundaResp = respHandler.getResponse(); - - if ("Success".equalsIgnoreCase(camundaResp.getMessage())) { - try { - ObjectMapper mapper = new ObjectMapper(); - jsonResponse = mapper.readValue(camundaResp.getResponse(), ServiceInstancesResponse.class); - jsonResponse.getRequestReferences().setRequestId(requestClientParameter.getRequestId()); - Optional<URL> selfLinkUrl = - buildSelfLinkUrl(currentActiveReq.getRequestUrl(), requestClientParameter.getRequestId()); - if (selfLinkUrl.isPresent()) { - jsonResponse.getRequestReferences().setRequestSelfLink(selfLinkUrl.get()); - } else { - jsonResponse.getRequestReferences().setRequestSelfLink(null); - } - } catch (IOException e) { - logger.error("Exception occurred", e); - ErrorLoggerInfo errorLoggerInfo = - new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.SchemaError) - .errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build(); - ValidateException validateException = - new ValidateException.Builder("Exception caught mapping Camunda JSON response to object", - HttpStatus.SC_NOT_ACCEPTABLE, ErrorNumbers.SVC_BAD_PARAMETER).cause(e) - .errorInfo(errorLoggerInfo).build(); - updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage()); - throw validateException; + public Response postBPELRequest(InfraActiveRequests currentActiveReq, RequestClientParameter requestClientParameter, + String orchestrationUri, String requestScope) throws ApiException { + ObjectMapper mapper = new ObjectMapper(); + ResponseEntity<String> response = postRequest(currentActiveReq, requestClientParameter, orchestrationUri); + ServiceInstancesResponse jsonResponse = null; + int bpelStatus = responseHandler.setStatus(response.getStatusCodeValue()); + try { + responseHandler.acceptedResponse(response); + CamundaResponse camundaResponse = responseHandler.getCamundaResponse(response); + String responseBody = camundaResponse.getResponse(); + if ("Success".equalsIgnoreCase(camundaResponse.getMessage())) { + jsonResponse = mapper.readValue(responseBody, ServiceInstancesResponse.class); + jsonResponse.getRequestReferences().setRequestId(requestClientParameter.getRequestId()); + Optional<URL> selfLinkUrl = + buildSelfLinkUrl(currentActiveReq.getRequestUrl(), requestClientParameter.getRequestId()); + if (selfLinkUrl.isPresent()) { + jsonResponse.getRequestReferences().setRequestSelfLink(selfLinkUrl.get()); + } else { + jsonResponse.getRequestReferences().setRequestSelfLink(null); } - return builder.buildResponse(HttpStatus.SC_ACCEPTED, requestClientParameter.getRequestId(), - jsonResponse, requestClientParameter.getApiVersion()); + } else { + BPMNFailureException bpmnException = + new BPMNFailureException.Builder(String.valueOf(bpelStatus) + responseBody, bpelStatus, + ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).build(); + updateStatus(currentActiveReq, Status.FAILED, bpmnException.getMessage()); + throw bpmnException; } + } catch (ApiException e) { + updateStatus(currentActiveReq, Status.FAILED, e.getMessage()); + throw e; + } catch (IOException e) { + logger.error("Exception caught mapping Camunda JSON response to object: ", e); + updateStatus(currentActiveReq, Status.FAILED, e.getMessage()); + throw new ValidateException.Builder("Exception caught mapping Camunda JSON response to object", + HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_BAD_PARAMETER).cause(e).build(); } - - List<String> variables = new ArrayList<>(); - variables.add(bpelStatus + ""); - String camundaJSONResponseBody = respHandler.getResponseBody(); - if (camundaJSONResponseBody != null && !camundaJSONResponseBody.isEmpty()) { - - ErrorLoggerInfo errorLoggerInfo = - new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.BusinessProcessError) - .errorSource(requestClient.getUrl()).build(); - BPMNFailureException bpmnException = - new BPMNFailureException.Builder(String.valueOf(bpelStatus) + camundaJSONResponseBody, bpelStatus, - ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).errorInfo(errorLoggerInfo).build(); - - updateStatus(currentActiveReq, Status.FAILED, bpmnException.getMessage()); - - throw bpmnException; - } else { - - ErrorLoggerInfo errorLoggerInfo = - new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.BusinessProcessError) - .errorSource(requestClient.getUrl()).build(); - - - BPMNFailureException servException = new BPMNFailureException.Builder(String.valueOf(bpelStatus), - bpelStatus, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).errorInfo(errorLoggerInfo).build(); - updateStatus(currentActiveReq, Status.FAILED, servException.getMessage()); - - throw servException; - } + return builder.buildResponse(HttpStatus.SC_ACCEPTED, requestClientParameter.getRequestId(), jsonResponse, + requestClientParameter.getApiVersion()); } - - @Override public void updateStatus(InfraActiveRequests aq, Status status, String errorMessage) throws RequestDbFailureException { diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/TasksHandler.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/TasksHandler.java index 418c702768..dadb7c7558 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/TasksHandler.java +++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/TasksHandler.java @@ -22,7 +22,6 @@ package org.onap.so.apihandlerinfra; -import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -33,13 +32,12 @@ import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriBuilder; -import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.json.JSONArray; import org.json.JSONObject; +import org.onap.logging.filter.base.ErrorCode; +import org.onap.so.apihandler.common.CamundaClient; import org.onap.so.apihandler.common.ErrorNumbers; -import org.onap.so.apihandler.common.RequestClient; -import org.onap.so.apihandler.common.RequestClientFactory; import org.onap.so.apihandler.common.ResponseBuilder; import org.onap.so.apihandler.common.ResponseHandler; import org.onap.so.apihandlerinfra.exceptions.ApiException; @@ -50,12 +48,12 @@ import org.onap.so.apihandlerinfra.tasksbeans.TaskList; import org.onap.so.apihandlerinfra.tasksbeans.TaskVariableValue; import org.onap.so.apihandlerinfra.tasksbeans.TaskVariables; import org.onap.so.apihandlerinfra.tasksbeans.TasksGetResponse; -import org.onap.logging.filter.base.ErrorCode; import org.onap.so.logger.MessageEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -79,10 +77,13 @@ public class TasksHandler { private String requestUrl; @Autowired - private RequestClientFactory reqClientFactory; + private ResponseBuilder builder; @Autowired - private ResponseBuilder builder; + private CamundaClient camundaClient; + + @Autowired + private ResponseHandler responseHandler; @Path("/{version:[vV]1}") @GET @@ -148,18 +149,12 @@ public class TasksHandler { } tv.setTaskVariables(tvvList); - - RequestClient requestClient = null; - - HttpResponse response = null; + ResponseEntity<String> response = null; + String camundaJsonReq = null; try { - requestClient = reqClientFactory.getRequestClient(requestUrl); - // Capture audit event ObjectMapper mapper = new ObjectMapper(); - String camundaJsonReq = mapper.writeValueAsString(tv); - response = requestClient.post(camundaJsonReq); - + camundaJsonReq = mapper.writeValueAsString(tv); } catch (JsonProcessingException e) { ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_REQUEST_VALIDATION_ERROR, ErrorCode.SchemaError) @@ -167,21 +162,16 @@ public class TasksHandler { throw new ValidateException.Builder("Mapping of request to JSON object failed : " + e.getMessage(), HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e).errorInfo(errorLoggerInfo) .build(); - - } catch (IOException e) { - ErrorLoggerInfo errorLoggerInfo = - new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, ErrorCode.AvailabilityError) - .build(); - throw new BPMNFailureException.Builder(String.valueOf(HttpStatus.SC_BAD_GATEWAY), HttpStatus.SC_BAD_GATEWAY, - ErrorNumbers.SVC_NO_SERVER_RESOURCES).cause(e).errorInfo(errorLoggerInfo).build(); } + + response = camundaClient.post(camundaJsonReq, requestUrl); TasksGetResponse trr = new TasksGetResponse(); List<TaskList> taskList = new ArrayList<>(); - ResponseHandler respHandler = new ResponseHandler(response, requestClient.getType()); - int bpelStatus = respHandler.getStatus(); - String respBody = respHandler.getResponseBody(); - if ((bpelStatus == HttpStatus.SC_NO_CONTENT || bpelStatus == HttpStatus.SC_ACCEPTED) && (null != respBody)) { + int bpelStatus = responseHandler.setStatus(response.getStatusCodeValue()); + String respBody = response.getBody(); + responseHandler.acceptedOrNoContentResponse(response); + if (null != respBody) { JSONArray data = new JSONArray(respBody); @@ -230,45 +220,22 @@ public class TasksHandler { private TaskList getTaskInfo(String taskId) throws ApiException { TaskList taskList; String getRequestUrl = UriBuilder.fromUri(requestUrl).path(taskId).path("variables").build().toString(); - HttpResponse getResponse; - - RequestClient requestClient = reqClientFactory.getRequestClient(getRequestUrl); - // Capture audit event - try { - getResponse = requestClient.get(); - } catch (IOException e) { - ErrorLoggerInfo errorLoggerInfo = - new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, ErrorCode.AvailabilityError) - .build(); - throw new BPMNFailureException.Builder(String.valueOf(HttpStatus.SC_BAD_GATEWAY), HttpStatus.SC_BAD_GATEWAY, - ErrorNumbers.SVC_NO_SERVER_RESOURCES).cause(e).errorInfo(errorLoggerInfo).build(); - } - ResponseHandler respHandler = new ResponseHandler(getResponse, requestClient.getType()); - int bpelStatus = respHandler.getStatus(); - if (bpelStatus == HttpStatus.SC_ACCEPTED) { - String respBody = respHandler.getResponseBody(); - if (respBody != null) { - taskList = buildTaskList(taskId, respBody); - } else { - ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, - ErrorCode.AvailabilityError).build(); - throw new BPMNFailureException.Builder(String.valueOf(HttpStatus.SC_BAD_GATEWAY), - HttpStatus.SC_BAD_GATEWAY, ErrorNumbers.SVC_NO_SERVER_RESOURCES).errorInfo(errorLoggerInfo) - .build(); + ResponseEntity<String> getResponse; - } + getResponse = camundaClient.get(getRequestUrl); + responseHandler.acceptedResponse(getResponse); + String respBody = getResponse.getBody(); + if (respBody != null) { + taskList = buildTaskList(taskId, respBody); } else { ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, ErrorCode.AvailabilityError) .build(); - - throw new BPMNFailureException.Builder(String.valueOf(bpelStatus), bpelStatus, + throw new BPMNFailureException.Builder(String.valueOf(HttpStatus.SC_BAD_GATEWAY), HttpStatus.SC_BAD_GATEWAY, ErrorNumbers.SVC_NO_SERVER_RESOURCES).errorInfo(errorLoggerInfo).build(); } - return taskList; - } private TaskList buildTaskList(String taskId, String respBody) { diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/infra/rest/handler/AbstractRestHandler.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/infra/rest/handler/AbstractRestHandler.java index 3fd672bf42..c806e9fc1b 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/infra/rest/handler/AbstractRestHandler.java +++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/infra/rest/handler/AbstractRestHandler.java @@ -20,16 +20,15 @@ package org.onap.so.apihandlerinfra.infra.rest.handler; -import java.io.IOException; import java.net.URL; import java.sql.Timestamp; import java.util.Map; import java.util.Optional; import javax.ws.rs.container.ContainerRequestContext; import org.apache.http.HttpStatus; +import org.onap.logging.filter.base.ErrorCode; +import org.onap.so.apihandler.common.CamundaClient; import org.onap.so.apihandler.common.ErrorNumbers; -import org.onap.so.apihandler.common.RequestClient; -import org.onap.so.apihandler.common.RequestClientFactory; import org.onap.so.apihandler.common.RequestClientParameter; import org.onap.so.apihandlerinfra.Action; import org.onap.so.apihandlerinfra.Actions; @@ -45,7 +44,6 @@ import org.onap.so.constants.Status; import org.onap.so.db.catalog.client.CatalogDbClient; import org.onap.so.db.request.beans.InfraActiveRequests; import org.onap.so.db.request.client.RequestsDbClient; -import org.onap.logging.filter.base.ErrorCode; import org.onap.so.logger.LogConstants; import org.onap.so.logger.MessageEnum; import org.onap.so.serviceinstancebeans.ModelType; @@ -74,7 +72,7 @@ public abstract class AbstractRestHandler { protected RequestsDbClient infraActiveRequestsClient; @Autowired - protected RequestClientFactory reqClientFactory; + private CamundaClient camundaClient; public String getRequestUri(ContainerRequestContext context) { String requestUri = context.getUriInfo().getPath(); @@ -151,10 +149,9 @@ public abstract class AbstractRestHandler { public void callWorkflowEngine(RequestClientParameter requestClientParameter, String orchestrationUri) throws WorkflowEngineConnectionException { - RequestClient requestClient = reqClientFactory.getRequestClient(orchestrationUri); try { - requestClient.post(requestClientParameter); - } catch (IOException e) { + camundaClient.post(requestClientParameter, orchestrationUri); + } catch (ApiException e) { logger.error("Error Calling Workflow Engine", e); throw new WorkflowEngineConnectionException("Error Calling Workflow Engine", e); } diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/E2EServiceInstancesTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/E2EServiceInstancesTest.java index 979aa8fbb1..86e847234b 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/E2EServiceInstancesTest.java +++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/E2EServiceInstancesTest.java @@ -103,7 +103,7 @@ public class E2EServiceInstancesTest extends BaseTest { String uri = e2eServInstancesUri + "v3"; ResponseEntity<String> response = sendRequest(inputStream("/Request.json"), uri, HttpMethod.POST); - assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value()); + assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value()); } @Test @@ -143,7 +143,7 @@ public class E2EServiceInstancesTest extends BaseTest { String uri = e2eServInstancesUri + "v5/9b9f02c0-298b-458a-bc9c-be3692e4f35e"; ResponseEntity<String> response = sendRequest(inputStream("/DeleteRequest.json"), uri, HttpMethod.DELETE); - assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value()); + assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value()); } @Test @@ -183,14 +183,14 @@ public class E2EServiceInstancesTest extends BaseTest { String uri = e2eServInstancesUri + "v5/9b9f02c0-298b-458a-bc9c-be3692e4f35e/scale"; ResponseEntity<String> response = sendRequest(inputStream("/ScaleRequest.json"), uri, HttpMethod.POST); - assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value()); + assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value()); } @Test public void updateE2EServiceInstance() throws IOException { String uri = e2eServInstancesUri + "v3/9b9f02c0-298b-458a-bc9c-be3692e4f35e"; ResponseEntity<String> response = sendRequest(inputStream("/Request.json"), uri, HttpMethod.PUT); - assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value()); + assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value()); } @Test @@ -240,8 +240,8 @@ public class E2EServiceInstancesTest extends BaseTest { RequestError expectedResponse = new RequestError(); ServiceException exception = new ServiceException(); exception.setMessageId("SVC1000"); - exception.setText( - "Failed calling bpmn localhost:" + env.getProperty("wiremock.server.port") + " failed to respond"); + exception.setText("Failed calling bpmn Client from http://localhost:" + env.getProperty("wiremock.server.port") + + "/mso/async/services/CompareModelofE2EServiceInstance failed to connect or respond"); expectedResponse.setServiceException(exception); String uri = e2eServInstancesUri + "v5/9b9f02c0-298b-458a-bc9c-be3692e4f35e/modeldifferences"; diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ManualTasksTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ManualTasksTest.java index fcf25b23e9..f4ff19f53d 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ManualTasksTest.java +++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ManualTasksTest.java @@ -182,7 +182,8 @@ public class ManualTasksTest extends BaseTest { RequestError expectedResponse = new RequestError(); ServiceException se = new ServiceException(); se.setMessageId("SVC1000"); - se.setText("Request Failed due to BPEL error with HTTP Status = 502"); + se.setText("Client from http://localhost:" + env.getProperty("wiremock.server.port") + + "/sobpmnengine/task/55/complete failed to connect or respond"); expectedResponse.setServiceException(se); HttpHeaders headers = new HttpHeaders(); headers.set("Accept", MediaType.APPLICATION_JSON); diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ServiceInstancesTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ServiceInstancesTest.java index 1332ffd913..143c92861a 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ServiceInstancesTest.java +++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ServiceInstancesTest.java @@ -2214,7 +2214,6 @@ public class ServiceInstancesTest extends BaseTest { wireMockServer.stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB")) .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON) - .withBodyFile("Camunda/UnauthorizedResponse.json") .withStatus(org.apache.http.HttpStatus.SC_UNAUTHORIZED))); wireMockServer.stubFor(get(urlMatching(".*/service/.*")) @@ -2231,7 +2230,7 @@ public class ServiceInstancesTest extends BaseTest { assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value()); RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class); - assertEquals("Exception caught mapping Camunda JSON response to object", + assertEquals("Request Failed due to BPEL error with HTTP Status = 401 UNAUTHORIZED", realResponse.getServiceException().getText()); } @@ -2430,7 +2429,7 @@ public class ServiceInstancesTest extends BaseTest { ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, headers); - assertEquals(Response.Status.NOT_ACCEPTABLE.getStatusCode(), response.getStatusCode().value()); + assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value()); RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class); assertEquals("Exception caught mapping Camunda JSON response to object", realResponse.getServiceException().getText()); diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml b/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml index 1d6722278c..1429ac9b52 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml +++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml @@ -55,8 +55,8 @@ mso: versions: apiMinorVersion: 0 apiPatchVersion: 0 - camundaURL: http://localhost:${wiremock.server.port}/ - camundaAuth: E8E19DD16CC90D2E458E8FF9A884CC0452F8F3EB8E321F96038DE38D5C1B0B02DFAE00B88E2CF6E2A4101AB2C011FC161212EE + camundaURL: http://localhost:${wiremock.server.port} + camundaAuth: 015E7ACF706C6BBF85F2079378BDD2896E226E09D13DC2784BA309E27D59AB9FAD3A5E039DF0BB8408 async: core-pool-size: 50 max-pool-size: 50 |