2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017-2018 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.onap.aai.aailog.filter;
23 import org.onap.aai.aailog.logs.ServiceName;
24 import org.onap.logging.filter.base.AuditLogContainerFilter;
25 import org.onap.logging.filter.base.Constants;
26 import org.onap.logging.filter.base.SimpleMap;
27 import org.onap.logging.ref.slf4j.ONAPLogConstants;
30 import javax.annotation.Priority;
31 import javax.servlet.http.HttpServletRequest;
32 import javax.ws.rs.container.ContainerRequestContext;
33 import javax.ws.rs.container.PreMatching;
34 import javax.ws.rs.core.HttpHeaders;
35 import javax.ws.rs.core.UriInfo;
39 public class AaiAuditLogContainerFilter extends AuditLogContainerFilter {
41 public void setMDCPartnerName(SimpleMap headers) {
42 logger.trace("Checking X-ONAP-PartnerName header for partnerName.");
43 String partnerName = headers.get(ONAPLogConstants.Headers.PARTNER_NAME);
44 if (partnerName == null || partnerName.isEmpty()) {
45 logger.trace("No valid X-ONAP-PartnerName header value. Checking X-FromAppId header for partnerName.");
46 partnerName = headers.get (Constants.HttpHeaders.HEADER_FROM_APP_ID);
47 if (partnerName == null || partnerName.isEmpty()) {
48 logger.trace("No valid X-FromAppId header value. Checking User-Agent header for partnerName.");
49 partnerName = headers.get(HttpHeaders.USER_AGENT);
50 if (partnerName == null || partnerName.isEmpty()) {
51 logger.trace("No valid User-Agent header value. Checking X-ClientID header for partnerName.");
52 partnerName = headers.get(Constants.HttpHeaders.CLIENT_ID);
53 if (partnerName == null || partnerName.isEmpty()) {
54 logger.trace("No valid partnerName headers. Defaulting partnerName to UNKNOWN.");
55 partnerName = Constants.DefaultValues.UNKNOWN;
60 MDC.put(ONAPLogConstants.MDCs.PARTNER_NAME, partnerName);
63 protected void setServiceName(ContainerRequestContext containerRequest) {
64 UriInfo uriInfo = containerRequest.getUriInfo();
65 String serviceName = ServiceName.extractServiceName(uriInfo.getAbsolutePath().getRawPath());
66 MDC.put(ONAPLogConstants.MDCs.SERVICE_NAME, serviceName);
70 protected void pre(SimpleMap headers, ContainerRequestContext request, HttpServletRequest httpServletRequest) {
72 String requestId = getRequestId(headers);
73 MDC.put(ONAPLogConstants.MDCs.REQUEST_ID, requestId);
74 // handle the case where the request ID value was invalid and we had to generate a new one
75 addRequestIdHeader(request, requestId);
76 setInvocationId(headers);
77 setServiceName(request);
78 setMDCPartnerName(headers);
80 setClientIPAddress(httpServletRequest);
83 MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, ONAPLogConstants.ResponseStatus.INPROGRESS.toString());
84 additionalPreHandling(request);
87 logger.info(ONAPLogConstants.Markers.ENTRY, "Entering");
88 } catch (Exception e) {
89 logger.warn("Error in AaiAuditContainerFilter pre", e);
93 protected void addRequestIdHeader(ContainerRequestContext containerRequest, String requestId) {
94 if (containerRequest.getHeaders().get(ONAPLogConstants.Headers.REQUEST_ID) != null) {
95 containerRequest.getHeaders().get(ONAPLogConstants.Headers.REQUEST_ID).clear();
97 containerRequest.getHeaders().add(ONAPLogConstants.Headers.REQUEST_ID, requestId);