diff options
Diffstat (limited to 'mso-api-handlers/mso-api-handler-common')
7 files changed, 159 insertions, 8 deletions
diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/BPELRestClient.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/BPELRestClient.java index 511b874e15..a5c1b6fa96 100644 --- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/BPELRestClient.java +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/BPELRestClient.java @@ -92,4 +92,9 @@ public class BPELRestClient extends RequestClient { String requestDetails) { return null; } + + @Override + public HttpResponse get() { + return null; + } } diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaClient.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaClient.java index d893a12b24..0a307f3ce0 100644 --- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaClient.java +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaClient.java @@ -129,6 +129,11 @@ public class CamundaClient extends RequestClient{ return response; } + + @Override + public HttpResponse get() { + return null; + } private String wrapRequest(String reqXML, String requestId, String serviceInstanceId, String requestTimeout, String schemaVersion){ String jsonReq = null; diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaTaskClient.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaTaskClient.java new file mode 100644 index 0000000000..5fbb6f0242 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaTaskClient.java @@ -0,0 +1,114 @@ +/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.openecomp.mso.apihandler.common;
+
+import org.openecomp.mso.logger.MessageEnum;
+import org.openecomp.mso.logger.MsoLogger;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.SerializationConfig;
+
+import javax.xml.bind.DatatypeConverter;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.IOException;
+
+public class CamundaTaskClient extends RequestClient{
+ private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.APIH);
+
+ public CamundaTaskClient() {
+ super(CommonConstants.CAMUNDATASK);
+ }
+
+ @Override
+ public HttpResponse post(String jsonReq)
+ throws ClientProtocolException, IOException{
+ HttpPost post = new HttpPost(url);
+ msoLogger.debug("Camunda Task url is: "+ url);
+
+ StringEntity input = new StringEntity(jsonReq);
+ input.setContentType(CommonConstants.CONTENT_TYPE_JSON);
+
+ String encryptedCredentials = null;
+ if(props!=null){
+ encryptedCredentials = props.getProperty(CommonConstants.CAMUNDA_AUTH,null);
+ if(encryptedCredentials != null){
+ String userCredentials = getEncryptedPropValue(encryptedCredentials, CommonConstants.DEFAULT_BPEL_AUTH, CommonConstants.ENCRYPTION_KEY);
+ if(userCredentials != null){
+ post.addHeader("Authorization", "Basic " + new String(DatatypeConverter.printBase64Binary(userCredentials.getBytes())));
+ }
+ }
+ }
+
+ post.setEntity(input);
+ HttpResponse response = client.execute(post);
+
+ return response;
+ }
+
+ @Override
+ public HttpResponse post(String camundaReqXML, String requestId,
+ String requestTimeout, String schemaVersion, String serviceInstanceId, String action)
+ throws ClientProtocolException, IOException{
+ msoLogger.debug("Method not supported");
+ return null;
+ }
+
+ @Override
+ public HttpResponse post(String requestId, boolean isBaseVfModule,
+ int recipeTimeout, String requestAction, String serviceInstanceId,
+ String vnfId, String vfModuleId, String volumeGroupId, String networkId,
+ String serviceType, String vnfType, String vfModuleType, String networkType,
+ String requestDetails)
+ throws ClientProtocolException, IOException{
+ msoLogger.debug("Method not supported");
+ return null;
+ }
+
+ @Override
+ public HttpResponse get()
+ throws ClientProtocolException, IOException{
+ HttpGet get = new HttpGet(url);
+ msoLogger.debug("Camunda Task url is: "+ url);
+ String encryptedCredentials = null;
+ if(props!=null){
+ encryptedCredentials = props.getProperty(CommonConstants.CAMUNDA_AUTH,null);
+ if(encryptedCredentials != null){
+ String userCredentials = getEncryptedPropValue(encryptedCredentials, CommonConstants.DEFAULT_BPEL_AUTH, CommonConstants.ENCRYPTION_KEY);
+ if(userCredentials != null){
+ get.addHeader("Authorization", "Basic " + new String(DatatypeConverter.printBase64Binary(userCredentials.getBytes())));
+ }
+ }
+ }
+
+ HttpResponse getResponse = client.execute(get);
+
+ return getResponse;
+}
+
+
+
+
+}
diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CommonConstants.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CommonConstants.java index 187e0ed0a6..44a058dc4f 100644 --- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CommonConstants.java +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CommonConstants.java @@ -40,10 +40,12 @@ public final class CommonConstants { public static final String CAMUNDA_URL = "camundaURL"; public static final String CAMUNDA_AUTH = "camundaAuth"; public static final String BPEL_SEARCH_STR = "active-bpel"; + public static final String TASK_SEARCH_STR = "task"; public static final String BPEL_URL = "bpelURL"; public static final String BPEL_AUTH = "bpelAuth"; public static final int BPEL = 0; public static final int CAMUNDA = 1; + public static final int CAMUNDATASK = 2; public static final String CAMUNDA_HOST = "host"; public static final String SDNC_UUID_HEADER = "mso-sdnc-request-id"; diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClient.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClient.java index 0b796d5ac2..eef61fa589 100644 --- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClient.java +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClient.java @@ -78,6 +78,9 @@ public abstract class RequestClient { String requestDetails) throws ClientProtocolException, IOException; + public abstract HttpResponse get() + throws ClientProtocolException, IOException; + protected String getEncryptedPropValue (String prop, String defaultValue, String encryptionKey) { try { String result = CryptoUtils.decrypt(prop, encryptionKey); diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClientFactory.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClientFactory.java index 9dc43c7e7a..c7f94c0452 100644 --- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClientFactory.java +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClientFactory.java @@ -29,7 +29,7 @@ import org.openecomp.mso.properties.MsoJavaProperties; public class RequestClientFactory { - //based on URI, returns BPEL or Camunda client + //based on URI, returns BPEL, CamundaTask or Camunda client public static RequestClient getRequestClient(String orchestrationURI, MsoJavaProperties props) throws IllegalStateException{ RequestClient retClient; if(props ==null){ @@ -40,7 +40,11 @@ public class RequestClientFactory { url = props.getProperty(CommonConstants.BPEL_URL,null) + orchestrationURI; retClient= new BPELRestClient(); - }else{ + }else if(orchestrationURI.contains(CommonConstants.TASK_SEARCH_STR)){ + url = props.getProperty(CommonConstants.CAMUNDA_URL,null) + orchestrationURI; + retClient = new CamundaTaskClient(); + } + else{ url = props.getProperty(CommonConstants.CAMUNDA_URL,null) + orchestrationURI; retClient = new CamundaClient(); } diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/ResponseHandler.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/ResponseHandler.java index 2edf686e07..2e23a1ed84 100644 --- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/ResponseHandler.java +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/ResponseHandler.java @@ -51,12 +51,14 @@ public class ResponseHandler { private void parseResponse() { int statusCode = httpResponse.getStatusLine().getStatusCode(); - msoLogger.debug("Returned status is: " + statusCode); + msoLogger.debug("Returned status is: " + statusCode); status = setStatus(statusCode); msoLogger.debug("Parsed status is: " + status); if(type==CommonConstants.CAMUNDA){ parseCamunda(); - }else{ + }else if(type==CommonConstants.CAMUNDATASK){ + parseCamundaTask(); + }else { parseBpel(); } @@ -109,14 +111,30 @@ public class ResponseHandler { } } + private void parseCamundaTask(){ + HttpEntity camundataskEntity = httpResponse.getEntity(); + try { + if (camundataskEntity!=null) { + responseBody = EntityUtils.toString(camundataskEntity); + msoLogger.debug("response body is: " + responseBody); + + } + if(status!=HttpStatus.SC_NO_CONTENT && status != HttpStatus.SC_ACCEPTED){ + msoLogger.error(MessageEnum.APIH_ERROR_FROM_BPEL_SERVER, "CAMUNDATASK", String.valueOf(status), responseBody, "CAMUNDATASK", "parseCamundaTask", MsoLogger.ErrorCode.BusinessProcesssError, "Error in APIH from Camunda Task"); + } + } + catch (IOException e) { + msoLogger.debug("IOException getting Camunda Task response body", e); + } + } private int setStatus(int statusCode){ int status = 0; switch(statusCode) { case HttpStatus.SC_ACCEPTED: - case HttpStatus.SC_OK: + case HttpStatus.SC_OK: status = HttpStatus.SC_ACCEPTED; break; case HttpStatus.SC_BAD_REQUEST: @@ -135,6 +153,9 @@ public class ResponseHandler { case HttpStatus.SC_SERVICE_UNAVAILABLE: status = HttpStatus.SC_SERVICE_UNAVAILABLE; break; + case HttpStatus.SC_NO_CONTENT: + status = HttpStatus.SC_NO_CONTENT; + break; default: status = HttpStatus.SC_INTERNAL_SERVER_ERROR; break; @@ -167,7 +188,4 @@ public class ResponseHandler { return status; } - - - } |