1 package org.onap.so.logging.cxf.interceptor;
7 import javax.servlet.http.HttpServletRequest;
8 import org.apache.cxf.binding.soap.SoapMessage;
9 import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
10 import org.apache.cxf.interceptor.Fault;
11 import org.apache.cxf.message.Message;
12 import org.apache.cxf.phase.Phase;
13 import org.apache.cxf.transport.http.AbstractHTTPDestination;
14 import org.onap.logging.ref.slf4j.ONAPLogConstants;
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
20 public class SOAPLoggingInInterceptor extends AbstractSoapInterceptor{
22 protected static Logger logger = LoggerFactory.getLogger(SOAPLoggingInInterceptor.class);
24 public SOAPLoggingInInterceptor() {
29 public void handleMessage(SoapMessage message) throws Fault {
31 SOAPMDCSetup mdcSetup = new SOAPMDCSetup();
32 Map<String, List<String>> headers = (Map<String,List<String>>) message.get(Message.PROTOCOL_HEADERS);
33 HttpServletRequest request = (HttpServletRequest)message.get(AbstractHTTPDestination.HTTP_REQUEST);
34 request.getRemoteAddr();
36 setRequestId(headers);
37 setInvocationId(headers);
38 setServiceName(message);
39 setMDCPartnerName(headers);
40 mdcSetup.setServerFQDN();
41 mdcSetup.setClientIPAddress(request);
42 mdcSetup.setInstanceUUID();
43 mdcSetup.setEntryTimeStamp();
44 MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, "INPROGRESS");
45 logger.info(ONAPLogConstants.Markers.ENTRY, "Entering");
46 } catch (Exception e) {
47 logger.warn("Error in incoming SOAP Message Inteceptor", e);
51 private void setServiceName(SoapMessage message) {
52 String requestURI = (String) message.get(Message.REQUEST_URI);
53 MDC.put(ONAPLogConstants.MDCs.SERVICE_NAME, requestURI);
56 //CXF Appears to flatten headers to lower case
57 private void setMDCPartnerName(Map<String, List<String>> headers){
58 String partnerName=getValueOrDefault(headers, ONAPLogConstants.Headers.PARTNER_NAME.toLowerCase(),"");
59 MDC.put(ONAPLogConstants.MDCs.PARTNER_NAME,partnerName);
62 private void setInvocationId(Map<String, List<String>> headers) {
63 String invocationId=getValueOrDefault(headers, ONAPLogConstants.Headers.INVOCATION_ID.toLowerCase(),UUID.randomUUID().toString());
64 MDC.put(ONAPLogConstants.MDCs.INVOCATION_ID, invocationId);
67 private void setRequestId(Map<String, List<String>> headers) {
68 String requestId=getValueOrDefault(headers, ONAPLogConstants.Headers.REQUEST_ID.toLowerCase(),UUID.randomUUID().toString());
69 MDC.put(ONAPLogConstants.MDCs.REQUEST_ID,requestId);
72 private String getValueOrDefault(Map<String, List<String>> headers, String headerName, String defaultValue){
74 List<String> headerList=headers.get(headerName);
75 if(headerList != null && !headerList.isEmpty()){
76 headerValue= headerList.get(0);
77 if(headerValue == null || headerValue.isEmpty())
78 headerValue = defaultValue;
80 headerValue = defaultValue;