aboutsummaryrefslogtreecommitdiffstats
path: root/adapters/mso-sdnc-adapter/src/main/java/org/onap/so/adapters/sdnc/impl/SDNCRestClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'adapters/mso-sdnc-adapter/src/main/java/org/onap/so/adapters/sdnc/impl/SDNCRestClient.java')
-rw-r--r--adapters/mso-sdnc-adapter/src/main/java/org/onap/so/adapters/sdnc/impl/SDNCRestClient.java541
1 files changed, 261 insertions, 280 deletions
diff --git a/adapters/mso-sdnc-adapter/src/main/java/org/onap/so/adapters/sdnc/impl/SDNCRestClient.java b/adapters/mso-sdnc-adapter/src/main/java/org/onap/so/adapters/sdnc/impl/SDNCRestClient.java
index 80f111b570..21ce06eaf1 100644
--- a/adapters/mso-sdnc-adapter/src/main/java/org/onap/so/adapters/sdnc/impl/SDNCRestClient.java
+++ b/adapters/mso-sdnc-adapter/src/main/java/org/onap/so/adapters/sdnc/impl/SDNCRestClient.java
@@ -36,7 +36,6 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-
import javax.xml.XMLConstants;
import javax.xml.bind.DatatypeConverter;
import javax.xml.parsers.DocumentBuilder;
@@ -46,7 +45,6 @@ import javax.xml.ws.handler.MessageContext;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
-
import org.onap.so.logger.ErrorCode;
import org.onap.so.utils.CryptoUtils;
import org.onap.so.adapters.sdnc.SDNCAdapterRequest;
@@ -55,7 +53,6 @@ import org.onap.so.adapters.sdnc.client.SDNCAdapterCallbackRequest;
import org.onap.so.adapters.sdnc.client.SDNCCallbackAdapterPortType;
import org.onap.so.adapters.sdnc.client.SDNCCallbackAdapterService;
import org.onap.so.logger.MessageEnum;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -69,289 +66,273 @@ import org.w3c.dom.NodeList;
@Component
-public class SDNCRestClient{
-
- @Autowired
- private Environment env;
-
- @Autowired
- private MapRequestTunables tunablesMapper;
-
- private static Logger logger = LoggerFactory.getLogger(SDNCRestClient.class);
-
- private static final String EXCEPTION_MSG="Exception while evaluate xpath";
- private static final String MSO_INTERNAL_ERROR="MsoInternalError";
- private static final String CAMUNDA="Camunda";
- @Async
- public void executeRequest(SDNCAdapterRequest bpelRequest)
- {
-
- logger.debug("BPEL Request:" + bpelRequest.toString());
-
- // Added delay to allow completion of create request to SDNC
- // before executing activate of create request.
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e) {
- logger.error("{} {} {} {}", MessageEnum.BPMN_GENERAL_EXCEPTION.toString(), "SDNC",
- ErrorCode.UnknownError.getValue(), "Exception processing request to SDNC", e);
-
- Thread.currentThread().interrupt();
- }
-
- String action = bpelRequest.getRequestHeader().getSvcAction();
- String operation = bpelRequest.getRequestHeader().getSvcOperation();
- String bpelReqId = bpelRequest.getRequestHeader().getRequestId();
- String callbackUrl = bpelRequest.getRequestHeader().getCallbackUrl();
-
- String sdncReqBody = null;
-
- RequestTunables rt = new RequestTunables(bpelReqId,
- bpelRequest.getRequestHeader().getMsoAction(),
- bpelRequest.getRequestHeader().getSvcOperation(),
- bpelRequest.getRequestHeader().getSvcAction());
- rt = tunablesMapper.setTunables(rt);
- rt.setSdncaNotificationUrl(env.getProperty(Constants.MY_URL_PROP));
-
-
- if ("POST".equals(rt.getReqMethod()))
- {
- Node node = (Node) bpelRequest.getRequestData();
- Document reqDoc = node.getOwnerDocument();
- sdncReqBody = Utils.genSdncReq(reqDoc, rt);
- }
- else if("PUT".equals(rt.getReqMethod())){
- Node node = (Node) bpelRequest.getRequestData();
- Document reqDoc = node.getOwnerDocument();
- sdncReqBody = Utils.genSdncPutReq(reqDoc, rt);
- }
- long sdncStartTime = System.currentTimeMillis();
- SDNCResponse sdncResp = getSdncResp(sdncReqBody, rt);
- logger.debug ("Got the SDNC Response: {}", sdncResp.getSdncRespXml());
- long bpelStartTime = System.currentTimeMillis();
- sendRespToBpel(callbackUrl, sdncResp);
- return;
- }
-
- public SDNCResponse getSdncResp(String sdncReqBody, RequestTunables rt)
- {
-
- URL url;
- HttpURLConnection con = null;
- DataOutputStream out = null;
- BufferedReader in = null;
- SDNCResponse sdncResp = new SDNCResponse(rt.getReqId());
- StringBuilder response = new StringBuilder();
-
- logger.info("{} :\n {} {}", MessageEnum.RA_SEND_REQUEST_SDNC.name(), rt.toString(), "SDNC");
- logger.trace("SDNC Request Body:{} \n", sdncReqBody);
-
- try {
-
- url = new URL(rt.getSdncUrl());
-
- con = (HttpURLConnection) url.openConnection();
- con.setConnectTimeout(Integer.parseInt(env.getProperty(Constants.SDNC_CONNECTTIME_PROP)));
- con.setReadTimeout(Integer.parseInt(rt.getTimeout()));
- con.setRequestProperty("Accept", "application/yang.data+xml"); //for response in xml
- String userCredentials = CryptoUtils.decrypt(env.getProperty(Constants.SDNC_AUTH_PROP), env.getProperty(Constants.ENCRYPTION_KEY_PROP));
-
- String basicAuth = "Basic " + DatatypeConverter.printBase64Binary(userCredentials.getBytes());
- con.setRequestProperty ("Authorization", basicAuth);
- con.setRequestMethod(rt.getReqMethod());
-
- // Add request headers
- if ("POST".equals(rt.getReqMethod()) || "PUT".equals(rt.getReqMethod()))
- {
- con.setRequestProperty("Content-type", "application/xml");
- con.setRequestProperty("Content-length",String.valueOf(sdncReqBody.length()));
- con.setDoOutput(true);
- out = new DataOutputStream(con.getOutputStream());
- out.writeBytes(sdncReqBody);
- out.flush();
- out.close();
- }
-
- //Get response
- sdncResp.setRespCode(con.getResponseCode());
- sdncResp.setRespMsg(con.getResponseMessage());
-
- if (con.getResponseCode()>= 200 && con.getResponseCode()<=299) {
- in = new BufferedReader(new InputStreamReader(con.getInputStream()));
- String inputLine;
- //Not parsing the response -it contains a responseHdr section and data section
- while ((inputLine = in.readLine()) != null) {
- response.append(inputLine);
- }
- in.close();
- }
-
- sdncResp.setSdncRespXml(response.toString());
- logger.info("{} :\n {} {}", MessageEnum.RA_RESPONSE_FROM_SDNC.name(), sdncResp.toString(), "SDNC");
- return(sdncResp);
- }
- catch (Exception e)
- {
- logger.error("{} {} {} {}", MessageEnum.RA_EXCEPTION_COMMUNICATE_SDNC.toString(), "SDNC",
- ErrorCode.BusinessProcesssError.getValue(), "Exception processing request to SDNC", e);
- //default
- sdncResp.setRespCode(HttpURLConnection.HTTP_INTERNAL_ERROR);
- String respMsg = "Error processing request to SDNC. ";
- StringBuilder sdncErrMsg = new StringBuilder();
-
- if (e instanceof java.net.SocketTimeoutException )
- {
- sdncResp.setRespCode(HttpURLConnection.HTTP_CLIENT_TIMEOUT);
- respMsg = "Request to SDNC timed out. ";
- }
- if (con != null)
- {
- try { //e1
- if (con.getResponseCode() != HttpURLConnection.HTTP_OK) //seen in SocketException connection reset
- sdncResp.setRespCode(con.getResponseCode());
- respMsg = respMsg + con.getResponseMessage() + ". ";
- InputStream is = con.getErrorStream();
- if (is != null)
- {
- XPathFactory xpathFactory = XPathFactory.newInstance();
- XPath xpath = xpathFactory.newXPath();
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- dbf.setFeature (XMLConstants.FEATURE_SECURE_PROCESSING, true);
- dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
- dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
- DocumentBuilder db;
- Document doc = null;
- try { //e2
- db = dbf.newDocumentBuilder();
- doc = db.parse(is);
- NodeList errors = (NodeList)xpath.evaluate("errors/error", doc, XPathConstants.NODESET);
- for (int i = 0; i < errors.getLength(); i++)
- {
- Element error = (Element) errors.item(i);
- String eType = null;
- try {
- eType = xpath.evaluate("error-type", error);
- sdncErrMsg = new StringBuilder(". SDNC Returned-[error-type:" + eType);
- } catch (Exception e3) {
- logger.error("{} {} {} {} {} {}", MessageEnum.RA_EVALUATE_XPATH_ERROR.toString(), "error-type",
- error.toString(), "SDNC", ErrorCode.DataError.getValue(), EXCEPTION_MSG, e3);
- }
-
- String eTag = null;
- try {
- eTag = xpath.evaluate( "error-tag", error);
- sdncErrMsg.append(", error-tag:").append(eTag);
- } catch (Exception e3) {
- logger.error("{} {} {} {} {} {}", MessageEnum.RA_EVALUATE_XPATH_ERROR.toString(), "error-tag",
- error.toString(), "SDNC", ErrorCode.DataError.getValue(), EXCEPTION_MSG, e3);
- }
-
- String eMsg = null;
- try {
- eMsg = xpath.evaluate("error-message", error);
- sdncErrMsg.append(", error-message:").append(eMsg).append("]");
- } catch (Exception e3) {
- logger.error("{} {} {} {} {} {}", MessageEnum.RA_EVALUATE_XPATH_ERROR.toString(), "error-message", error.toString(),
- "SDNC", ErrorCode.DataError.getValue(), EXCEPTION_MSG, e3);
- }
- }
- } catch (Exception e2) {
- logger.error("{} {} {} {}", MessageEnum.RA_ANALYZE_ERROR_EXC.toString(), "SDNC",
- ErrorCode.DataError.getValue(), "Exception while analyse error", e2);
- }
- } //is != null
- } catch (Exception e1) {
- logger.error("{} {} {} {}", MessageEnum.RA_ERROR_GET_RESPONSE_SDNC.toString(), "SDNC",
- ErrorCode.BusinessProcesssError.getValue(), "Exception while get SDNC response", e1);
- }
- } //con != null
-
- if (e.getMessage() != null) {
+public class SDNCRestClient {
+
+ @Autowired
+ private Environment env;
+
+ @Autowired
+ private MapRequestTunables tunablesMapper;
+
+ private static Logger logger = LoggerFactory.getLogger(SDNCRestClient.class);
+
+ private static final String EXCEPTION_MSG = "Exception while evaluate xpath";
+ private static final String MSO_INTERNAL_ERROR = "MsoInternalError";
+ private static final String CAMUNDA = "Camunda";
+
+ @Async
+ public void executeRequest(SDNCAdapterRequest bpelRequest) {
+
+ logger.debug("BPEL Request:" + bpelRequest.toString());
+
+ // Added delay to allow completion of create request to SDNC
+ // before executing activate of create request.
+ try {
+ Thread.sleep(5000);
+ } catch (InterruptedException e) {
+ logger.error("{} {} {} {}", MessageEnum.BPMN_GENERAL_EXCEPTION.toString(), "SDNC",
+ ErrorCode.UnknownError.getValue(), "Exception processing request to SDNC", e);
+
+ Thread.currentThread().interrupt();
+ }
+
+ String action = bpelRequest.getRequestHeader().getSvcAction();
+ String operation = bpelRequest.getRequestHeader().getSvcOperation();
+ String bpelReqId = bpelRequest.getRequestHeader().getRequestId();
+ String callbackUrl = bpelRequest.getRequestHeader().getCallbackUrl();
+
+ String sdncReqBody = null;
+
+ RequestTunables rt = new RequestTunables(bpelReqId, bpelRequest.getRequestHeader().getMsoAction(),
+ bpelRequest.getRequestHeader().getSvcOperation(), bpelRequest.getRequestHeader().getSvcAction());
+ rt = tunablesMapper.setTunables(rt);
+ rt.setSdncaNotificationUrl(env.getProperty(Constants.MY_URL_PROP));
+
+
+ if ("POST".equals(rt.getReqMethod())) {
+ Node node = (Node) bpelRequest.getRequestData();
+ Document reqDoc = node.getOwnerDocument();
+ sdncReqBody = Utils.genSdncReq(reqDoc, rt);
+ } else if ("PUT".equals(rt.getReqMethod())) {
+ Node node = (Node) bpelRequest.getRequestData();
+ Document reqDoc = node.getOwnerDocument();
+ sdncReqBody = Utils.genSdncPutReq(reqDoc, rt);
+ }
+ long sdncStartTime = System.currentTimeMillis();
+ SDNCResponse sdncResp = getSdncResp(sdncReqBody, rt);
+ logger.debug("Got the SDNC Response: {}", sdncResp.getSdncRespXml());
+ long bpelStartTime = System.currentTimeMillis();
+ sendRespToBpel(callbackUrl, sdncResp);
+ return;
+ }
+
+ public SDNCResponse getSdncResp(String sdncReqBody, RequestTunables rt) {
+
+ URL url;
+ HttpURLConnection con = null;
+ DataOutputStream out = null;
+ BufferedReader in = null;
+ SDNCResponse sdncResp = new SDNCResponse(rt.getReqId());
+ StringBuilder response = new StringBuilder();
+
+ logger.info("{} :\n {} {}", MessageEnum.RA_SEND_REQUEST_SDNC.name(), rt.toString(), "SDNC");
+ logger.trace("SDNC Request Body:{} \n", sdncReqBody);
+
+ try {
+
+ url = new URL(rt.getSdncUrl());
+
+ con = (HttpURLConnection) url.openConnection();
+ con.setConnectTimeout(Integer.parseInt(env.getProperty(Constants.SDNC_CONNECTTIME_PROP)));
+ con.setReadTimeout(Integer.parseInt(rt.getTimeout()));
+ con.setRequestProperty("Accept", "application/yang.data+xml"); // for response in xml
+ String userCredentials = CryptoUtils.decrypt(env.getProperty(Constants.SDNC_AUTH_PROP),
+ env.getProperty(Constants.ENCRYPTION_KEY_PROP));
+
+ String basicAuth = "Basic " + DatatypeConverter.printBase64Binary(userCredentials.getBytes());
+ con.setRequestProperty("Authorization", basicAuth);
+ con.setRequestMethod(rt.getReqMethod());
+
+ // Add request headers
+ if ("POST".equals(rt.getReqMethod()) || "PUT".equals(rt.getReqMethod())) {
+ con.setRequestProperty("Content-type", "application/xml");
+ con.setRequestProperty("Content-length", String.valueOf(sdncReqBody.length()));
+ con.setDoOutput(true);
+ out = new DataOutputStream(con.getOutputStream());
+ out.writeBytes(sdncReqBody);
+ out.flush();
+ out.close();
+ }
+
+ // Get response
+ sdncResp.setRespCode(con.getResponseCode());
+ sdncResp.setRespMsg(con.getResponseMessage());
+
+ if (con.getResponseCode() >= 200 && con.getResponseCode() <= 299) {
+ in = new BufferedReader(new InputStreamReader(con.getInputStream()));
+ String inputLine;
+ // Not parsing the response -it contains a responseHdr section and data section
+ while ((inputLine = in.readLine()) != null) {
+ response.append(inputLine);
+ }
+ in.close();
+ }
+
+ sdncResp.setSdncRespXml(response.toString());
+ logger.info("{} :\n {} {}", MessageEnum.RA_RESPONSE_FROM_SDNC.name(), sdncResp.toString(), "SDNC");
+ return (sdncResp);
+ } catch (Exception e) {
+ logger.error("{} {} {} {}", MessageEnum.RA_EXCEPTION_COMMUNICATE_SDNC.toString(), "SDNC",
+ ErrorCode.BusinessProcesssError.getValue(), "Exception processing request to SDNC", e);
+ // default
+ sdncResp.setRespCode(HttpURLConnection.HTTP_INTERNAL_ERROR);
+ String respMsg = "Error processing request to SDNC. ";
+ StringBuilder sdncErrMsg = new StringBuilder();
+
+ if (e instanceof java.net.SocketTimeoutException) {
+ sdncResp.setRespCode(HttpURLConnection.HTTP_CLIENT_TIMEOUT);
+ respMsg = "Request to SDNC timed out. ";
+ }
+ if (con != null) {
+ try { // e1
+ if (con.getResponseCode() != HttpURLConnection.HTTP_OK) // seen in SocketException connection reset
+ sdncResp.setRespCode(con.getResponseCode());
+ respMsg = respMsg + con.getResponseMessage() + ". ";
+ InputStream is = con.getErrorStream();
+ if (is != null) {
+ XPathFactory xpathFactory = XPathFactory.newInstance();
+ XPath xpath = xpathFactory.newXPath();
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
+ dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
+ dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
+ DocumentBuilder db;
+ Document doc = null;
+ try { // e2
+ db = dbf.newDocumentBuilder();
+ doc = db.parse(is);
+ NodeList errors = (NodeList) xpath.evaluate("errors/error", doc, XPathConstants.NODESET);
+ for (int i = 0; i < errors.getLength(); i++) {
+ Element error = (Element) errors.item(i);
+ String eType = null;
+ try {
+ eType = xpath.evaluate("error-type", error);
+ sdncErrMsg = new StringBuilder(". SDNC Returned-[error-type:" + eType);
+ } catch (Exception e3) {
+ logger.error("{} {} {} {} {} {}", MessageEnum.RA_EVALUATE_XPATH_ERROR.toString(),
+ "error-type", error.toString(), "SDNC", ErrorCode.DataError.getValue(),
+ EXCEPTION_MSG, e3);
+ }
+
+ String eTag = null;
+ try {
+ eTag = xpath.evaluate("error-tag", error);
+ sdncErrMsg.append(", error-tag:").append(eTag);
+ } catch (Exception e3) {
+ logger.error("{} {} {} {} {} {}", MessageEnum.RA_EVALUATE_XPATH_ERROR.toString(),
+ "error-tag", error.toString(), "SDNC", ErrorCode.DataError.getValue(),
+ EXCEPTION_MSG, e3);
+ }
+
+ String eMsg = null;
+ try {
+ eMsg = xpath.evaluate("error-message", error);
+ sdncErrMsg.append(", error-message:").append(eMsg).append("]");
+ } catch (Exception e3) {
+ logger.error("{} {} {} {} {} {}", MessageEnum.RA_EVALUATE_XPATH_ERROR.toString(),
+ "error-message", error.toString(), "SDNC", ErrorCode.DataError.getValue(),
+ EXCEPTION_MSG, e3);
+ }
+ }
+ } catch (Exception e2) {
+ logger.error("{} {} {} {}", MessageEnum.RA_ANALYZE_ERROR_EXC.toString(), "SDNC",
+ ErrorCode.DataError.getValue(), "Exception while analyse error", e2);
+ }
+ } // is != null
+ } catch (Exception e1) {
+ logger.error("{} {} {} {}", MessageEnum.RA_ERROR_GET_RESPONSE_SDNC.toString(), "SDNC",
+ ErrorCode.BusinessProcesssError.getValue(), "Exception while get SDNC response", e1);
+ }
+ } // con != null
+
+ if (e.getMessage() != null) {
respMsg = respMsg + e.getMessage();
}
respMsg = respMsg + sdncErrMsg;
- sdncResp.setRespMsg(respMsg);
+ sdncResp.setRespMsg(respMsg);
- logger.error("{} {} {} {}", MessageEnum.RA_EXCEPTION_COMMUNICATE_SDNC.toString(), "SDNC",
- ErrorCode.AvailabilityError.getValue(), "Exception while communicate with SDNC", e);
+ logger.error("{} {} {} {}", MessageEnum.RA_EXCEPTION_COMMUNICATE_SDNC.toString(), "SDNC",
+ ErrorCode.AvailabilityError.getValue(), "Exception while communicate with SDNC", e);
- return sdncResp;
- }
- finally
- {
- if (con != null) {
+ return sdncResp;
+ } finally {
+ if (con != null) {
con.disconnect();
}
- }
- }
-
- public void sendRespToBpel(String bpelUrl, SDNCResponse sdncResp)
- {
- String error;
- try
- {
- SDNCAdapterCallbackRequest cbReq = new SDNCAdapterCallbackRequest();
- cbReq.setCallbackHeader(new CallbackHeader(sdncResp.getReqId(), Integer.toString(sdncResp.getRespCode()), sdncResp.getRespMsg()));
- if (sdncResp.getSdncRespXml() != null)
- {
- cbReq.setRequestData(sdncResp.getSdncRespXml());
- }
- logger.info("{} :\n {} {}", MessageEnum.RA_CALLBACK_BPEL.name(), cbReq.toString(), CAMUNDA);
-
- URL wsdlUrl = null;
- try {
- wsdlUrl = new URL (bpelUrl);
- } catch (MalformedURLException e1) {
- error = "Caught exception initializing Callback wsdl " + e1.getMessage();
- logger.error("{} {} {} {}", MessageEnum.RA_INIT_CALLBACK_WSDL_ERR.toString(), CAMUNDA,
- ErrorCode.DataError.getValue(), "Exception initializing Callback wsdl", e1);
-
- }
-
- SDNCCallbackAdapterService cbSvc = new SDNCCallbackAdapterService();
-
- SDNCCallbackAdapterPortType cbPort = cbSvc.getSDNCCallbackAdapterSoapHttpPort();
-
- BindingProvider bp = (BindingProvider)cbPort;
-
- if(null != wsdlUrl) {
- bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, wsdlUrl.toExternalForm());
- }
- else {
- logger.debug("wsdlUrl is NULL:");
- }
-
- //authentication
- try
- {
- Map<String, Object> reqCtx = bp.getRequestContext();
- Map<String, List<String>> headers = new HashMap<>();
- String userCredentials = CryptoUtils.decrypt(env.getProperty(Constants.BPEL_AUTH_PROP), env.getProperty(Constants.ENCRYPTION_KEY_PROP));
-
- String basicAuth = "Basic " + DatatypeConverter.printBase64Binary(userCredentials.getBytes());
- reqCtx.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
- headers.put ("Authorization", Collections.singletonList(basicAuth));
- }
- catch (Exception e2) {
- error = "Unable to set authorization in callback request " + e2.getMessage();
- logger.error("{} {} {} {}", MessageEnum.RA_SET_CALLBACK_AUTH_EXC.toString(), CAMUNDA,
- ErrorCode.BusinessProcesssError.getValue(),
- "Exception - Unable to set authorization in callback request", e2);
-
- }
-
- logger.debug("Invoking Bpel Callback. BpelCallbackUrl:{}", bpelUrl);
- cbPort.sdncAdapterCallback(cbReq);
-
- }
- catch (Exception e)
- {
- error = "Error sending BpelCallback request" + e.getMessage();
- logger.error("Error {} - {} - {}", ErrorCode.BusinessProcesssError.getValue(),
- MessageEnum.RA_CALLBACK_BPEL_EXC.toString(), error, e);
- }
- logger.info(MessageEnum.RA_CALLBACK_BPEL_COMPLETE.name(), CAMUNDA);
- return;
- }
+ }
+ }
+
+ public void sendRespToBpel(String bpelUrl, SDNCResponse sdncResp) {
+ String error;
+ try {
+ SDNCAdapterCallbackRequest cbReq = new SDNCAdapterCallbackRequest();
+ cbReq.setCallbackHeader(new CallbackHeader(sdncResp.getReqId(), Integer.toString(sdncResp.getRespCode()),
+ sdncResp.getRespMsg()));
+ if (sdncResp.getSdncRespXml() != null) {
+ cbReq.setRequestData(sdncResp.getSdncRespXml());
+ }
+ logger.info("{} :\n {} {}", MessageEnum.RA_CALLBACK_BPEL.name(), cbReq.toString(), CAMUNDA);
+
+ URL wsdlUrl = null;
+ try {
+ wsdlUrl = new URL(bpelUrl);
+ } catch (MalformedURLException e1) {
+ error = "Caught exception initializing Callback wsdl " + e1.getMessage();
+ logger.error("{} {} {} {}", MessageEnum.RA_INIT_CALLBACK_WSDL_ERR.toString(), CAMUNDA,
+ ErrorCode.DataError.getValue(), "Exception initializing Callback wsdl", e1);
+
+ }
+
+ SDNCCallbackAdapterService cbSvc = new SDNCCallbackAdapterService();
+
+ SDNCCallbackAdapterPortType cbPort = cbSvc.getSDNCCallbackAdapterSoapHttpPort();
+
+ BindingProvider bp = (BindingProvider) cbPort;
+
+ if (null != wsdlUrl) {
+ bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, wsdlUrl.toExternalForm());
+ } else {
+ logger.debug("wsdlUrl is NULL:");
+ }
+
+ // authentication
+ try {
+ Map<String, Object> reqCtx = bp.getRequestContext();
+ Map<String, List<String>> headers = new HashMap<>();
+ String userCredentials = CryptoUtils.decrypt(env.getProperty(Constants.BPEL_AUTH_PROP),
+ env.getProperty(Constants.ENCRYPTION_KEY_PROP));
+
+ String basicAuth = "Basic " + DatatypeConverter.printBase64Binary(userCredentials.getBytes());
+ reqCtx.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
+ headers.put("Authorization", Collections.singletonList(basicAuth));
+ } catch (Exception e2) {
+ error = "Unable to set authorization in callback request " + e2.getMessage();
+ logger.error("{} {} {} {}", MessageEnum.RA_SET_CALLBACK_AUTH_EXC.toString(), CAMUNDA,
+ ErrorCode.BusinessProcesssError.getValue(),
+ "Exception - Unable to set authorization in callback request", e2);
+
+ }
+
+ logger.debug("Invoking Bpel Callback. BpelCallbackUrl:{}", bpelUrl);
+ cbPort.sdncAdapterCallback(cbReq);
+
+ } catch (Exception e) {
+ error = "Error sending BpelCallback request" + e.getMessage();
+ logger.error("Error {} - {} - {}", ErrorCode.BusinessProcesssError.getValue(),
+ MessageEnum.RA_CALLBACK_BPEL_EXC.toString(), error, e);
+ }
+ logger.info(MessageEnum.RA_CALLBACK_BPEL_COMPLETE.name(), CAMUNDA);
+ return;
+ }
}