diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/IndexFilter.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/IndexFilter.java new file mode 100644 index 0000000000000000000000000000000000000000..0acdc656c660b0ed37eaf09fe4bef4cbe6d58165 --- /dev/null +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/IndexFilter.java @@ -0,0 +1,49 @@ + +package org.opengroup.osdu.indexer.util; + +import java.io.IOException; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletResponse; +import lombok.extern.java.Log; +import org.opengroup.osdu.core.common.model.http.DpsHeaders; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Log +@Component +public class IndexFilter implements Filter { + + private final DpsHeaders dpsHeaders; + + @Autowired + public IndexFilter(DpsHeaders dpsHeaders) { + this.dpsHeaders = dpsHeaders; + } + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + } + + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, + FilterChain filterChain) + throws IOException, ServletException { + + HttpServletResponse httpResponse = (HttpServletResponse) servletResponse; + + dpsHeaders.addCorrelationIdIfMissing(); + httpResponse.addHeader(DpsHeaders.CORRELATION_ID, dpsHeaders.getCorrelationId()); + + filterChain.doFilter(servletRequest, servletResponse); + } + + @Override + public void destroy() { + } + +} diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/IndexFilterTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/IndexFilterTest.java new file mode 100644 index 0000000000000000000000000000000000000000..d404aa9dd06bd157d031f007a4e226091fc48892 --- /dev/null +++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/IndexFilterTest.java @@ -0,0 +1,43 @@ +package org.opengroup.osdu.indexer.util; + + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; +import org.opengroup.osdu.core.common.model.http.DpsHeaders; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import java.io.IOException; +import java.util.Collections; + +@RunWith(MockitoJUnitRunner.class) +public class IndexFilterTest { + + @InjectMocks + private IndexFilter indexFilter; + + @Mock + private DpsHeaders dpsHeaders; + + @Test + public void shouldSetCorrectResponseHeaders() throws IOException, ServletException { + HttpServletRequest httpServletRequest = Mockito.mock(HttpServletRequest.class); + HttpServletResponse httpServletResponse = Mockito.mock(HttpServletResponse.class); + FilterChain filterChain = Mockito.mock(FilterChain.class); + + Mockito.when(dpsHeaders.getCorrelationId()).thenReturn("correlation-id-value"); + + indexFilter.doFilter(httpServletRequest, httpServletResponse, filterChain); + + Mockito.verify(httpServletResponse).addHeader("correlation-id", "correlation-id-value"); + Mockito.verify(filterChain).doFilter(httpServletRequest, httpServletResponse); + } +} + diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java index cd7d4622c847e13f109c6ee89adc8c679b645144..95b3449d8935376ba31800979ede5bdf12e4382f 100644 --- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java +++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java @@ -74,8 +74,6 @@ public class IndexFilter implements Filter { checkWorkerApiAccess(requestInfo); } - filterChain.doFilter(servletRequest, servletResponse); - HttpServletResponse httpResponse = (HttpServletResponse) servletResponse; Map<String, List<Object>> standardHeaders = ResponseHeaders.STANDARD_RESPONSE_HEADERS; for (Map.Entry<String, List<Object>> header : standardHeaders.entrySet()) { @@ -84,7 +82,7 @@ public class IndexFilter implements Filter { if (httpResponse.getHeader(DpsHeaders.CORRELATION_ID) == null) { httpResponse.addHeader(DpsHeaders.CORRELATION_ID, dpsHeaders.getCorrelationId()); } - + filterChain.doFilter(servletRequest, servletResponse); } @Override diff --git a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java index 12cffcf01340bf7c7ce763e2ba7a19202ed1a8e6..79bb4e9215f6f84577dd3dff86991c9b4057b84f 100644 --- a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java +++ b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java @@ -89,8 +89,6 @@ public class IndexFilter implements Filter { checkWorkerApiAccess(requestInfo); } - filterChain.doFilter(servletRequest, servletResponse); - HttpServletResponse httpResponse = (HttpServletResponse) servletResponse; Map<String, List<Object>> standardHeaders = ResponseHeaders.STANDARD_RESPONSE_HEADERS; for (Map.Entry<String, List<Object>> header : standardHeaders.entrySet()) { @@ -99,6 +97,7 @@ public class IndexFilter implements Filter { if (httpResponse.getHeader(DpsHeaders.CORRELATION_ID) == null) { httpResponse.addHeader(DpsHeaders.CORRELATION_ID, dpsHeaders.getCorrelationId()); } + filterChain.doFilter(servletRequest, servletResponse); } @Override