2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 
   6  * ================================================================================
 
   7  * Licensed under the Apache License, Version 2.0 (the "License");
 
   8  * you may not use this file except in compliance with the License.
 
   9  * You may obtain a copy of the License at
 
  11  *      http://www.apache.org/licenses/LICENSE-2.0
 
  13  * Unless required by applicable law or agreed to in writing, software
 
  14  * distributed under the License is distributed on an "AS IS" BASIS,
 
  15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  16  * See the License for the specific language governing permissions and
 
  17  * limitations under the License.
 
  18  * ============LICENSE_END=========================================================
 
  21 package org.openecomp.mso.adapters.sdnc.impl;
 
  23 import javax.annotation.PostConstruct;
 
  24 import javax.jws.WebService;
 
  25 import javax.servlet.http.HttpServletResponse;
 
  27 import org.openecomp.mso.adapters.sdnc.SDNCAdapterPortType;
 
  28 import org.openecomp.mso.adapters.sdnc.SDNCAdapterRequest;
 
  29 import org.openecomp.mso.adapters.sdnc.SDNCAdapterResponse;
 
  30 import org.openecomp.mso.adapters.sdnc.util.SDNCRequestIdUtil;
 
  31 import org.openecomp.mso.logger.MessageEnum;
 
  32 import org.openecomp.mso.logger.MsoAlarmLogger;
 
  33 import org.openecomp.mso.logger.MsoLogger;
 
  34 import org.openecomp.mso.properties.MsoPropertiesException;
 
  35 import org.openecomp.mso.properties.MsoPropertiesFactory;
 
  37 //BPEL SDNCAdapter SOAP Web Service implementation
 
  38 @WebService(serviceName = "SDNCAdapterService", endpointInterface = "org.openecomp.mso.adapters.sdnc.SDNCAdapterPortType", targetNamespace = "http://org.openecomp/workflow/sdnc/adapter/wsdl/v1")
 
  39 public class SDNCAdapterPortTypeImpl implements SDNCAdapterPortType {
 
  41         private MsoPropertiesFactory msoPropertiesFactory=new MsoPropertiesFactory();
 
  43         private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA);
 
  44         private static MsoAlarmLogger alarmLogger = new MsoAlarmLogger();
 
  45         private static final String LOG_SERVICE_NAME = "MSO-BPMN:MSO-SDNCAdapter.";
 
  46         private static final String LOG_REPLY_NAME = "MSO-SDNCAdapter:MSO-BPMN.";
 
  47         public static final String MSO_PROP_SDNC_ADAPTER="MSO_PROP_SDNC_ADAPTER";
 
  51                 msoLogger.info(MessageEnum.RA_INIT_SDNC_ADAPTER, "SDNC", "SDNCAdapterPortType");
 
  55          * Health Check web method.  Does nothing but return to show the adapter is deployed.
 
  58         public void healthCheck ()
 
  60                 msoLogger.debug("Health check call in SDNC Adapter");
 
  63         public static String getProperty(String key, String defaultValue, MsoPropertiesFactory msoPropertiesFactoryp) {
 
  66                         value = msoPropertiesFactoryp.getMsoJavaProperties(MSO_PROP_SDNC_ADAPTER).getProperty(key, defaultValue);
 
  67                 } catch (MsoPropertiesException e) {
 
  68                         msoLogger.error (MessageEnum.NO_PROPERTIES, "Unknown. Mso Properties ID not found in cache: " + MSO_PROP_SDNC_ADAPTER, "SDNC", "", MsoLogger.ErrorCode.DataError, "Exception - Mso Properties ID not found in cache", e);
 
  71                 msoLogger.debug("Config read for " + MSO_PROP_SDNC_ADAPTER + " - key:" + key + " value:" + value);
 
  76         public SDNCAdapterResponse sdncAdapter(SDNCAdapterRequest bpelRequest) {
 
  77                 String bpelReqId = bpelRequest.getRequestHeader().getRequestId();
 
  78                 String callbackUrl = bpelRequest.getRequestHeader().getCallbackUrl();
 
  79                 long startTime = System.currentTimeMillis ();
 
  80                 MsoLogger.setLogContext(SDNCRequestIdUtil.getSDNCOriginalRequestId (bpelReqId), bpelRequest.getRequestHeader().getSvcInstanceId());
 
  81                 MsoLogger.setServiceName (bpelRequest.getRequestHeader().getSvcAction());
 
  82                 msoLogger.info(MessageEnum.RA_RECEIVE_BPEL_REQUEST, bpelReqId, callbackUrl, "SDNC", "");
 
  84                 SDNCRestClient sdncClient = new SDNCRestClient(bpelRequest,msoPropertiesFactory);
 
  85                 long subStartTime = System.currentTimeMillis ();
 
  87                         Thread sdncClientThread = new Thread(sdncClient);
 
  88                         sdncClientThread.start();
 
  91                         String respMsg = "Error sending request to SDNC. Failed to start SDNC Client thread " + e.getMessage();
 
  92                         msoLogger.error(MessageEnum.RA_SEND_REQUEST_SDNC_ERR, "SDNC", "", MsoLogger.ErrorCode.DataError, "Exception sending request to SDNC. Failed to start SDNC Client thread", e);
 
  93                         alarmLogger.sendAlarm("MsoInternalError", MsoAlarmLogger.CRITICAL, respMsg);
 
  94                         SDNCResponse sdncResp = new SDNCResponse(bpelReqId);
 
  95                         sdncResp.setRespCode(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
 
  96                         sdncResp.setRespMsg(respMsg);
 
  97                         SDNCRestClient.sendRespToBpel(callbackUrl, sdncResp, msoPropertiesFactory);
 
 100                 msoLogger.debug("Sending synchronous response to BPEL");
 
 101                 SDNCAdapterResponse wsResp = new SDNCAdapterResponse();
 
 102                 msoLogger.recordAuditEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful");