aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/filters
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/filters')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/filters/BasicAuthenticationFilter.java149
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/filters/BeServletFilter.java94
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/filters/ComponentsAvailabilityFilter.java72
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);
+ }
}