diff options
Diffstat (limited to 'src/main/java/org/onap/aai/web/JerseyConfiguration.java')
-rw-r--r-- | src/main/java/org/onap/aai/web/JerseyConfiguration.java | 75 |
1 files changed, 23 insertions, 52 deletions
diff --git a/src/main/java/org/onap/aai/web/JerseyConfiguration.java b/src/main/java/org/onap/aai/web/JerseyConfiguration.java index 436946c..629d11e 100644 --- a/src/main/java/org/onap/aai/web/JerseyConfiguration.java +++ b/src/main/java/org/onap/aai/web/JerseyConfiguration.java @@ -19,25 +19,28 @@ */ package org.onap.aai.web; +import java.util.List; +import java.util.Set; +import java.util.logging.Logger; +import java.util.stream.Collectors; + +import javax.annotation.Priority; +import javax.ws.rs.container.ContainerRequestFilter; +import javax.ws.rs.container.ContainerResponseFilter; + +import org.apache.tinkerpop.gremlin.structure.T; import org.glassfish.jersey.filter.LoggingFilter; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.servlet.ServletProperties; import org.onap.aai.rest.QueryConsumer; import org.onap.aai.rest.util.EchoResponse; +import org.onap.logging.filter.base.AuditLogContainerFilter; import org.reflections.Reflections; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; -import javax.annotation.Priority; -import javax.ws.rs.container.ContainerRequestFilter; -import javax.ws.rs.container.ContainerResponseFilter; -import java.util.List; -import java.util.Set; -import java.util.logging.Logger; -import java.util.stream.Collectors; - @Component public class JerseyConfiguration extends ResourceConfig { @@ -54,11 +57,11 @@ public class JerseyConfiguration extends ResourceConfig { register(EchoResponse.class); - //Request Filters - registerFiltersForRequests(); - // Response Filters - registerFiltersForResponses(); - + //Filters + registerFilters(ContainerRequestFilter.class); + registerFilters(ContainerResponseFilter.class); + registerFilters(AuditLogContainerFilter.class); + property(ServletProperties.FILTER_FORWARD_ON_404, true); // Following registers the request headers and response headers @@ -68,13 +71,14 @@ public class JerseyConfiguration extends ResourceConfig { } } - public void registerFiltersForRequests() { + public <T> void registerFilters(Class<T> type) { // Find all the classes within the interceptors package - Reflections reflections = new Reflections("org.onap.aai.interceptors"); - // Filter them based on the clazz that was passed in - Set<Class<? extends ContainerRequestFilter>> filters = reflections.getSubTypesOf(ContainerRequestFilter.class); - + Reflections loggingReflections = new Reflections("org.onap.aai.aailog.filter"); + Reflections reflections = new Reflections("org.onap.aai.interceptors"); + // Filter them based on the clazz that was passed in + Set<Class<? extends T>> filters = loggingReflections.getSubTypesOf(type); + filters.addAll(reflections.getSubTypesOf(type)); // Check to ensure that each of the filter has the @Priority annotation and if not throw exception for (Class filterClass : filters) { @@ -84,7 +88,7 @@ public class JerseyConfiguration extends ResourceConfig { } // Turn the set back into a list - List<Class<? extends ContainerRequestFilter>> filtersList = filters + List<Class<? extends T>> filtersList = filters .stream() .filter(f -> { if (f.isAnnotationPresent(Profile.class) @@ -101,37 +105,4 @@ public class JerseyConfiguration extends ResourceConfig { // Then register this to the jersey application filtersList.forEach(this::register); } - - public void registerFiltersForResponses() { - - // Find all the classes within the interceptors package - Reflections reflections = new Reflections("org.onap.aai.interceptors"); - // Filter them based on the clazz that was passed in - Set<Class<? extends ContainerResponseFilter>> filters = reflections.getSubTypesOf(ContainerResponseFilter.class); - - - // Check to ensure that each of the filter has the @Priority annotation and if not throw exception - for (Class filterClass : filters) { - if (filterClass.getAnnotation(Priority.class) == null) { - throw new RuntimeException("Container filter " + filterClass.getName() + " does not have @Priority annotation"); - } - } - - // Turn the set back into a list - List<Class<? extends ContainerResponseFilter>> filtersList = filters.stream() - .filter(f -> { - if (f.isAnnotationPresent(Profile.class) - && !env.acceptsProfiles(f.getAnnotation(Profile.class).value())) { - return false; - } - return true; - }) - .collect(Collectors.toList()); - - // Sort them by their priority levels value - filtersList.sort((c1, c2) -> Integer.valueOf(c1.getAnnotation(Priority.class).value()).compareTo(c2.getAnnotation(Priority.class).value())); - - // Then register this to the jersey application - filtersList.forEach(this::register); - } } |