diff options
author | Michael Lando <ml636r@att.com> | 2018-07-29 16:13:45 +0300 |
---|---|---|
committer | Michael Lando <ml636r@att.com> | 2018-07-29 16:20:34 +0300 |
commit | 5b593496b8f1b8e8be8d7d2dbcc223332e65a49b (patch) | |
tree | 2f9dfc45191e723da69cf74be7829784e9741b94 /catalog-be/src/main/java/org/openecomp/sdc/be/filters | |
parent | 9200382f2ce7b4bb729aa287d0878004b2d2b4f9 (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')
3 files changed, 183 insertions, 132 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/filters/BasicAuthenticationFilter.java b/catalog-be/src/main/java/org/openecomp/sdc/be/filters/BasicAuthenticationFilter.java index a13cc51b3e..5166ef94d7 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/filters/BasicAuthenticationFilter.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/filters/BasicAuthenticationFilter.java @@ -20,20 +20,9 @@ package org.openecomp.sdc.be.filters; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.util.StringTokenizer; - -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.core.Context; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.ResponseBuilder; -import javax.ws.rs.core.Response.Status; - +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import fj.data.Either; import org.apache.commons.codec.binary.Base64; import org.openecomp.sdc.be.components.impl.ConsumerBusinessLogic; import org.openecomp.sdc.be.dao.api.ActionStatus; @@ -41,20 +30,35 @@ import org.openecomp.sdc.be.impl.ComponentsUtils; import org.openecomp.sdc.be.impl.WebAppContextWrapper; import org.openecomp.sdc.be.model.ConsumerDefinition; import org.openecomp.sdc.common.api.Constants; +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.exception.ResponseFormat; import org.openecomp.sdc.security.Passwords; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.web.context.WebApplicationContext; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import fj.data.Either; +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.core.Context; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.ResponseBuilder; +import javax.ws.rs.core.Response.Status; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.StringTokenizer; @Priority(10) public class BasicAuthenticationFilter implements ContainerRequestFilter { + private static LoggerSdcAudit audit = new LoggerSdcAudit(BasicAuthenticationFilter.class); + private static final Logger log = Logger.getLogger(BasicAuthenticationFilter.class); + private static final String COMPONENT_UTILS_FAILED = "Authentication Filter Failed to get component utils."; + private static final String CONSUMER_BL_FAILED = "Authentication Filter Failed to get consumerBL."; + @Context private HttpServletRequest sr; @@ -62,150 +66,143 @@ public class BasicAuthenticationFilter implements ContainerRequestFilter { private String realm = "ASDC"; - private static final Logger log = LoggerFactory.getLogger(BasicAuthenticationFilter.class); @Override public void filter(ContainerRequestContext requestContext) throws IOException { + audit.startLog(requestContext); + String authHeader = requestContext.getHeaderString(Constants.AUTHORIZATION_HEADER); if (authHeader != null) { StringTokenizer st = new StringTokenizer(authHeader); + String failedToRetrieveAuthErrorMsg = "Authentication Filter Failed Couldn't retrieve authentication, no basic authentication."; if (st.hasMoreTokens()) { String basic = st.nextToken(); - if (basic.equalsIgnoreCase("Basic")) { + if ("Basic".equalsIgnoreCase(basic)) { try { String credentials = new String(Base64.decodeBase64(st.nextToken()), "UTF-8"); - log.debug("Credentials: {}" , credentials); - checkUserCredentiles(requestContext, credentials); + log.debug("Credentials: {}", credentials); + checkUserCredentials(requestContext, credentials); } catch (UnsupportedEncodingException e) { log.error("Authentication Filter Failed Couldn't retrieve authentication", e); authInvalidHeaderError(requestContext); } } else { - log.error("Authentication Filter Failed Couldn't retrieve authentication, no basic autantication."); + log.error(failedToRetrieveAuthErrorMsg); authInvalidHeaderError(requestContext); } } else { - log.error("Authentication Filter Failed Couldn't retrieve authentication, no basic autantication."); + log.error(failedToRetrieveAuthErrorMsg); authInvalidHeaderError(requestContext); } } else { - log.error("Authentication Filter Failed no autharization header"); + log.error("Authentication Filter Failed no authorization header"); authRequiredError(requestContext); } } - private void checkUserCredentiles(ContainerRequestContext requestContext, String credentials) { - int p = credentials.indexOf(":"); + private void checkUserCredentials(ContainerRequestContext requestContext, String credentials) { + int p = credentials.indexOf(':'); if (p != -1) { - String _username = credentials.substring(0, p).trim(); - String _password = credentials.substring(p + 1).trim(); + String userName = credentials.substring(0, p).trim(); + String password = credentials.substring(p + 1).trim(); ConsumerBusinessLogic consumerBL = getConsumerBusinessLogic(); if (consumerBL == null) { - log.error("Authentication Filter Failed to get consumerBL."); - requestContext.abortWith(Response.serverError().status(Status.INTERNAL_SERVER_ERROR).build()); + abortWith(requestContext, CONSUMER_BL_FAILED, Response.serverError().status(Status.INTERNAL_SERVER_ERROR).build()); } else { - Either<ConsumerDefinition, ResponseFormat> result = consumerBL.getConsumer(_username); - validatePassword(requestContext, _username, _password, result); + Either<ConsumerDefinition, ResponseFormat> result = consumerBL.getConsumer(userName); + validatePassword(requestContext, userName, password, result); } } else { - log.error("Authentication Filter Failed Couldn't retrieve authentication, no basic autantication."); + log.error("Authentication Filter Failed Couldn't retrieve authentication, no basic authentication."); authInvalidHeaderError(requestContext); } } - private void validatePassword(ContainerRequestContext requestContext, String _username, String _password, Either<ConsumerDefinition, ResponseFormat> result) { + private void validatePassword(ContainerRequestContext requestContext, String userName, String password, Either<ConsumerDefinition, ResponseFormat> result) { if (result.isRight()) { Integer status = result.right().value().getStatus(); if (status == Status.NOT_FOUND.getStatusCode()) { log.error("Authentication Filter Failed Couldn't find user"); - authUserNotFoundError(requestContext, _username); + authUserNotFoundError(requestContext, userName); } else { - log.error("Authentication Filter Failed to get consumerBL."); - requestContext.abortWith(Response.serverError().status(Status.INTERNAL_SERVER_ERROR).build()); + abortWith(requestContext, CONSUMER_BL_FAILED, Response.serverError().status(Status.INTERNAL_SERVER_ERROR).build()); } } else { ConsumerDefinition consumerCredentials = result.left().value(); - if (!Passwords.isExpectedPassword(_password, consumerCredentials.getConsumerSalt(), consumerCredentials.getConsumerPassword())) { - log.error("Authentication Filter Failed invalide password"); - authInvalidePasswordError(requestContext, _username); + if (!Passwords.isExpectedPassword(password, consumerCredentials.getConsumerSalt(), consumerCredentials.getConsumerPassword())) { + log.error("Authentication Filter Failed invalid password"); + authInvalidPasswordError(requestContext, userName); } else { - authSuccesessful(requestContext, _username); + authSuccessful(requestContext, userName); } } } - private void authSuccesessful(ContainerRequestContext requestContext, String _username) { + private void authSuccessful(ContainerRequestContext requestContext, String userName) { ComponentsUtils componentUtils = getComponentsUtils(); if (componentUtils == null) { - log.error("Authentication Filter Failed to get component utils."); - requestContext.abortWith(Response.status(Status.INTERNAL_SERVER_ERROR).build()); + abortWith(requestContext, COMPONENT_UTILS_FAILED, Response.status(Status.INTERNAL_SERVER_ERROR).build()); } - componentUtils.auditAuthEvent(requestContext.getUriInfo().getPath(), _username, AuthStatus.AUTH_SUCCESS.toString(), realm); + componentUtils.auditAuthEvent(requestContext.getUriInfo().getPath(), userName, AuthStatus.AUTH_SUCCESS.toString(), realm); } - private void authInvalidePasswordError(ContainerRequestContext requestContext, String _username) { + private void authInvalidPasswordError(ContainerRequestContext requestContext, String userName) { ComponentsUtils componentUtils = getComponentsUtils(); if (componentUtils == null) { - log.error("Authentication Filter Failed to get component utils."); - requestContext.abortWith(Response.status(Status.INTERNAL_SERVER_ERROR).build()); + abortWith(requestContext, COMPONENT_UTILS_FAILED, Response.status(Status.INTERNAL_SERVER_ERROR).build()); } - componentUtils.auditAuthEvent(requestContext.getUriInfo().getPath(), _username, AuthStatus.AUTH_FAILED_INVALID_PASSWORD.toString(), realm); + componentUtils.auditAuthEvent(requestContext.getUriInfo().getPath(), userName, AuthStatus.AUTH_FAILED_INVALID_PASSWORD.toString(), realm); ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.AUTH_FAILED); - requestContext.abortWith(buildErrorResponse(responseFormat, false)); + abortWith(requestContext, responseFormat.getFormattedMessage(), buildErrorResponse(responseFormat, false)); } - private void authUserNotFoundError(ContainerRequestContext requestContext, String _username) { + private void authUserNotFoundError(ContainerRequestContext requestContext, String userName) { ComponentsUtils componentUtils = getComponentsUtils(); if (componentUtils == null) { - log.error("Authentication Filter Failed to get component utils."); - requestContext.abortWith(Response.status(Status.INTERNAL_SERVER_ERROR).build()); + abortWith(requestContext, COMPONENT_UTILS_FAILED, Response.status(Status.INTERNAL_SERVER_ERROR).build()); } - getComponentsUtils().auditAuthEvent(requestContext.getUriInfo().getPath(), _username, AuthStatus.AUTH_FAILED_USER_NOT_FOUND.toString(), realm); + getComponentsUtils().auditAuthEvent(requestContext.getUriInfo().getPath(), userName, AuthStatus.AUTH_FAILED_USER_NOT_FOUND.toString(), realm); ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.AUTH_FAILED); - requestContext.abortWith(buildErrorResponse(responseFormat, false)); + abortWith(requestContext, responseFormat.getFormattedMessage(), buildErrorResponse(responseFormat, false)); } private void authInvalidHeaderError(ContainerRequestContext requestContext) { ComponentsUtils componentUtils = getComponentsUtils(); if (componentUtils == null) { - log.error("Authentication Filter Failed to get component utils."); - requestContext.abortWith(Response.status(Status.INTERNAL_SERVER_ERROR).build()); + abortWith(requestContext, COMPONENT_UTILS_FAILED, Response.status(Status.INTERNAL_SERVER_ERROR).build()); } getComponentsUtils().auditAuthEvent(requestContext.getUriInfo().getPath(), "", AuthStatus.AUTH_FAILED_INVALID_AUTHENTICATION_HEADER.toString(), realm); ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.AUTH_FAILED_INVALIDE_HEADER); - requestContext.abortWith(buildErrorResponse(responseFormat, false)); + abortWith(requestContext, responseFormat.getFormattedMessage(), buildErrorResponse(responseFormat, false)); } private void authRequiredError(ContainerRequestContext requestContext) { ComponentsUtils componentUtils = getComponentsUtils(); if (componentUtils == null) { - log.error("Authentication Filter Failed to get component utils."); - requestContext.abortWith(Response.status(Status.INTERNAL_SERVER_ERROR).build()); + abortWith(requestContext, COMPONENT_UTILS_FAILED, Response.status(Status.INTERNAL_SERVER_ERROR).build()); } getComponentsUtils().auditAuthEvent(requestContext.getUriInfo().getPath(), "", AuthStatus.AUTH_REQUIRED.toString(), realm); ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.AUTH_REQUIRED); - requestContext.abortWith(buildErrorResponse(responseFormat, true)); + abortWith(requestContext, responseFormat.getFormattedMessage(), buildErrorResponse(responseFormat, true)); } private ComponentsUtils getComponentsUtils() { ServletContext context = sr.getSession().getServletContext(); WebAppContextWrapper webApplicationContextWrapper = (WebAppContextWrapper) context.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR); WebApplicationContext webApplicationContext = webApplicationContextWrapper.getWebAppContext(context); - ComponentsUtils componentsUtils = webApplicationContext.getBean(ComponentsUtils.class); - return componentsUtils; + return webApplicationContext.getBean(ComponentsUtils.class); } private ConsumerBusinessLogic getConsumerBusinessLogic() { ServletContext context = sr.getSession().getServletContext(); WebAppContextWrapper webApplicationContextWrapper = (WebAppContextWrapper) context.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR); WebApplicationContext webApplicationContext = webApplicationContextWrapper.getWebAppContext(context); - ConsumerBusinessLogic consumerBusinessLogic = webApplicationContext.getBean(ConsumerBusinessLogic.class); - return consumerBusinessLogic; + return webApplicationContext.getBean(ConsumerBusinessLogic.class); } public enum AuthStatus { @@ -217,8 +214,20 @@ public class BasicAuthenticationFilter implements ContainerRequestFilter { if (addWwwAuthenticationHeader) { responseBuilder = responseBuilder.header("WWW-Authenticate", "Basic realm=\"" + realm + "\""); } - Response response = responseBuilder.entity(gson.toJson(requestErrorWrapper.getRequestError())).build(); - return response; + return responseBuilder.entity(gson.toJson(requestErrorWrapper.getRequestError())).build(); } + private void abortWith(ContainerRequestContext requestContext, String message, Response response) { + + audit.log(sr.getRemoteAddr(), + requestContext, + response.getStatusInfo(), + LogLevel.ERROR, + Severity.WARNING, + message); + + log.error(message); + audit.clearMyData(); + requestContext.abortWith(response); + } } 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; } diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/filters/ComponentsAvailabilityFilter.java b/catalog-be/src/main/java/org/openecomp/sdc/be/filters/ComponentsAvailabilityFilter.java index c94915467c..31ba52749a 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/filters/ComponentsAvailabilityFilter.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/filters/ComponentsAvailabilityFilter.java @@ -20,20 +20,8 @@ package org.openecomp.sdc.be.filters; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -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.core.Context; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.ResponseBuilder; -import javax.ws.rs.core.Response.Status; - +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import org.openecomp.sdc.be.components.health.HealthCheckBusinessLogic; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.impl.ComponentsUtils; @@ -41,27 +29,43 @@ import org.openecomp.sdc.be.impl.WebAppContextWrapper; import org.openecomp.sdc.common.api.Constants; import org.openecomp.sdc.common.api.HealthCheckInfo; import org.openecomp.sdc.common.api.HealthCheckInfo.HealthCheckStatus; +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.exception.ResponseFormat; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.web.context.WebApplicationContext; -import com.google.gson.Gson; -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.core.Context; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.ResponseBuilder; +import javax.ws.rs.core.Response.Status; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; @Priority(11) public class ComponentsAvailabilityFilter implements ContainerRequestFilter { + private static LoggerSdcAudit audit = new LoggerSdcAudit(ComponentsAvailabilityFilter.class); + @Context protected HttpServletRequest sr; protected Gson gson = new GsonBuilder().setPrettyPrinting().create(); - private static final Logger log = LoggerFactory.getLogger(ComponentsAvailabilityFilter.class); + private static final Logger log = Logger.getLogger(ComponentsAvailabilityFilter.class); @Override public void filter(ContainerRequestContext requestContext) throws IOException { + audit.startLog(requestContext); + String requestUrl = requestContext.getUriInfo().getPath(); - if (!requestUrl.equals("healthCheck")) { + if (!"healthCheck".equals(requestUrl)) { List<HealthCheckInfo> beHealthCheckInfos = getBeHealthCheckInfos(this.sr.getSession().getServletContext()); ActionStatus status = getAggregateBeStatus(beHealthCheckInfos); @@ -86,7 +90,7 @@ public class ComponentsAvailabilityFilter implements ContainerRequestFilter { protected List<HealthCheckInfo> getBeHealthCheckInfos(ServletContext servletContext) { - List<HealthCheckInfo> healthCheckInfos = new ArrayList<HealthCheckInfo>(); + List<HealthCheckInfo> healthCheckInfos = new ArrayList<>(); HealthCheckBusinessLogic healthCheckBusinessLogic = getHealthCheckBL(servletContext); healthCheckBusinessLogic.getTitanHealthCheck(healthCheckInfos); // Titan return healthCheckInfos; @@ -96,27 +100,39 @@ public class ComponentsAvailabilityFilter implements ContainerRequestFilter { ServletContext context = sr.getSession().getServletContext(); WebAppContextWrapper webApplicationContextWrapper = (WebAppContextWrapper) context.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR); WebApplicationContext webApplicationContext = webApplicationContextWrapper.getWebAppContext(context); - ComponentsUtils componentsUtils = webApplicationContext.getBean(ComponentsUtils.class); - return componentsUtils; + return webApplicationContext.getBean(ComponentsUtils.class); } protected void availabilityError(ContainerRequestContext requestContext) { ComponentsUtils componentUtils = getComponentsUtils(); if (componentUtils == null) { - log.error("Components Availability Filter Failed to get component utils."); - requestContext.abortWith(Response.status(Status.INTERNAL_SERVER_ERROR).build()); + String message = "Components Availability Filter Failed to get component utils."; + abortWith(requestContext, message, Response.status(Status.INTERNAL_SERVER_ERROR).build()); } ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR); ResponseBuilder responseBuilder = Response.status(responseFormat.getStatus()); Response response = responseBuilder.entity(gson.toJson(responseFormat.getRequestError())).build(); - requestContext.abortWith(response); + abortWith(requestContext, responseFormat.getRequestError().toString(), response); } private HealthCheckBusinessLogic getHealthCheckBL(ServletContext context) { WebAppContextWrapper webApplicationContextWrapper = (WebAppContextWrapper) context.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR); WebApplicationContext webApplicationContext = webApplicationContextWrapper.getWebAppContext(context); - HealthCheckBusinessLogic healthCheckBl = webApplicationContext.getBean(HealthCheckBusinessLogic.class); - return healthCheckBl; + return webApplicationContext.getBean(HealthCheckBusinessLogic.class); } + + private void abortWith(ContainerRequestContext requestContext, String message, Response response) { + + audit.log(sr.getRemoteAddr(), + requestContext, + response.getStatusInfo(), + LogLevel.ERROR, + Severity.OK, + message); + + log.error(message); + audit.clearMyData(); + requestContext.abortWith(response); + } } |