aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/filters/BeServletFilter.java
diff options
context:
space:
mode:
authorMichael Lando <ml636r@att.com>2018-07-29 16:13:45 +0300
committerMichael Lando <ml636r@att.com>2018-07-29 16:20:34 +0300
commit5b593496b8f1b8e8be8d7d2dbcc223332e65a49b (patch)
tree2f9dfc45191e723da69cf74be7829784e9741b94 /catalog-be/src/main/java/org/openecomp/sdc/be/filters/BeServletFilter.java
parent9200382f2ce7b4bb729aa287d0878004b2d2b4f9 (diff)
re base code
Change-Id: I12a5ca14a6d8a87e9316b9ff362eb131105f98a5 Issue-ID: SDC-1566 Signed-off-by: Michael Lando <ml636r@att.com>
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/filters/BeServletFilter.java')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/filters/BeServletFilter.java94
1 files changed, 60 insertions, 34 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/filters/BeServletFilter.java b/catalog-be/src/main/java/org/openecomp/sdc/be/filters/BeServletFilter.java
index 9a46514331..c60a8d6783 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/filters/BeServletFilter.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/filters/BeServletFilter.java
@@ -20,20 +20,7 @@
package org.openecomp.sdc.be.filters;
-import java.io.IOException;
-import java.util.UUID;
-
-import javax.annotation.Priority;
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.container.ContainerResponseContext;
-import javax.ws.rs.container.ContainerResponseFilter;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.ext.Provider;
-
+import com.google.gson.GsonBuilder;
import org.openecomp.sdc.be.config.BeEcompErrorManager;
import org.openecomp.sdc.be.config.Configuration;
import org.openecomp.sdc.be.config.ConfigurationManager;
@@ -42,14 +29,28 @@ import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
import org.openecomp.sdc.be.impl.ComponentsUtils;
import org.openecomp.sdc.be.impl.WebAppContextWrapper;
import org.openecomp.sdc.common.api.Constants;
+import org.openecomp.sdc.common.log.elements.LogFieldsMdcHandler;
+import org.openecomp.sdc.common.log.enums.LogLevel;
+import org.openecomp.sdc.common.log.enums.Severity;
+import org.openecomp.sdc.common.log.wrappers.Logger;
+import org.openecomp.sdc.common.log.wrappers.LoggerSdcAudit;
import org.openecomp.sdc.common.util.ThreadLocalsHolder;
import org.openecomp.sdc.exception.ResponseFormat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import org.springframework.web.context.WebApplicationContext;
-import com.google.gson.GsonBuilder;
+import javax.annotation.Priority;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.ContainerResponseContext;
+import javax.ws.rs.container.ContainerResponseFilter;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.Provider;
+import java.io.IOException;
+import java.util.UUID;
@Provider
@Priority(1)
@@ -57,8 +58,8 @@ public class BeServletFilter implements ContainerRequestFilter, ContainerRespons
@Context
private HttpServletRequest sr;
-
- private static final Logger log = LoggerFactory.getLogger(BeServletFilter.class);
+ private static final Logger log = Logger.getLogger(BeServletFilter.class);
+ private static LoggerSdcAudit audit = new LoggerSdcAudit(BeServletFilter.class);
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
@@ -66,6 +67,8 @@ public class BeServletFilter implements ContainerRequestFilter, ContainerRespons
MDC.clear();
+ audit.startLog(requestContext);
+
// In case of 405 response code, this function is not entered, then
// we'll process
// the MDC fields and UUID during the response
@@ -109,28 +112,50 @@ public class BeServletFilter implements ContainerRequestFilter, ContainerRespons
// we have no MDC fields since filter() wasn't executed during
// request
String uuid = processMdcFields(requestContext);
+
responseContext.getHeaders().add(Constants.X_ECOMP_REQUEST_ID_HEADER, uuid);
+ // call to start-log method to fill mandatory fields
+ audit.startLog(requestContext);
+ }
+
+ writeToTitan(responseContext);
+
+ //write to Audit log in case it's valuable action
+ // (e.g. ignoring healthCheck and any other unlogged urls as in yaml
+ if (isInfoLog()) {
+ audit.log(sr.getRemoteAddr(),
+ requestContext,
+ responseContext.getStatusInfo(),
+ LogLevel.INFO,
+ Severity.OK,
+ LogFieldsMdcHandler.getInstance()
+ .getAuditMessage());
}
outHttpResponse(responseContext);
- log.debug("Close transaction from filter");
- TitanDao titanDao = getTitanDao();
- if ( titanDao != null ){
- if (responseContext.getStatus() == Response.Status.OK.getStatusCode() || responseContext.getStatus() == Response.Status.CREATED.getStatusCode() ){
- titanDao.commit();
- log.debug("Doing commit from filter");
- }else{
- titanDao.rollback();
- log.debug("Doing rollback from filter");
- }
- }
- // Cleaning up
- MDC.clear();
- ThreadLocalsHolder.cleanup();
} catch (Exception e) {
BeEcompErrorManager.getInstance().logBeRestApiGeneralError("Error during request filter");
log.debug("Error during response filter: {} ", e);
+ } finally {
+ // Cleaning up
+ MDC.clear();
+ ThreadLocalsHolder.cleanup();
+ }
+ }
+
+ private void writeToTitan(ContainerResponseContext responseContext) {
+ log.debug("Close transaction from filter");
+ TitanDao titanDao = getTitanDao();
+ if (titanDao != null) {
+ if (responseContext.getStatus() == Response.Status.OK.getStatusCode() ||
+ responseContext.getStatus() == Response.Status.CREATED.getStatusCode()) {
+ titanDao.commit();
+ log.debug("Doing commit from filter");
+ } else {
+ titanDao.rollback();
+ log.debug("Doing rollback from filter");
+ }
}
}
@@ -174,6 +199,7 @@ public class BeServletFilter implements ContainerRequestFilter, ContainerRespons
WebApplicationContext webApplicationContext = webApplicationContextWrapper.getWebAppContext(context);
return webApplicationContext.getBean(ComponentsUtils.class);
}
+
private TitanDao getTitanDao() {
ServletContext context = this.sr.getSession().getServletContext();
@@ -181,6 +207,7 @@ public class BeServletFilter implements ContainerRequestFilter, ContainerRespons
WebApplicationContext webApplicationContext = webApplicationContextWrapper.getWebAppContext(context);
return webApplicationContext.getBean(TitanDao.class);
}
+
// Extracted for purpose of clear method name, for logback %M parameter
private void inHttpRequest() {
if (isInfoLog()) {
@@ -206,7 +233,6 @@ public class BeServletFilter implements ContainerRequestFilter, ContainerRespons
if (requestURI != null && configuration.getUnLoggedUrls() != null) {
logRequest = !configuration.getUnLoggedUrls().contains(requestURI);
}
-
return logRequest;
}