Skip to content
This repository was archived by the owner on May 28, 2018. It is now read-only.

Commit 2525da2

Browse files
author
Ondrej Kosatka
committed
Fix Logging filters priorities
Change-Id: I15185e3fdcc6fa187d710c259c5b742db509ebdf
1 parent 97ea29e commit 2525da2

File tree

3 files changed

+102
-3
lines changed

3 files changed

+102
-3
lines changed

core-common/src/main/java/org/glassfish/jersey/logging/ClientLoggingFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
*/
7272
@ConstrainedTo(RuntimeType.CLIENT)
7373
@PreMatching
74-
@Priority(Integer.MIN_VALUE)
74+
@Priority(Integer.MAX_VALUE)
7575
@SuppressWarnings("ClassWithMultipleLoggers")
7676
final class ClientLoggingFilter extends LoggingInterceptor implements ClientRequestFilter, ClientResponseFilter {
7777

core-common/src/main/java/org/glassfish/jersey/logging/ServerLoggingFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
*/
7272
@ConstrainedTo(RuntimeType.SERVER)
7373
@PreMatching
74-
@Priority(Integer.MAX_VALUE)
74+
@Priority(Integer.MIN_VALUE)
7575
@SuppressWarnings("ClassWithMultipleLoggers")
7676
final class ServerLoggingFilter extends LoggingInterceptor implements ContainerRequestFilter, ContainerResponseFilter {
7777

tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/common/LoggingFeatureTest.java

Lines changed: 100 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
package org.glassfish.jersey.tests.e2e.common;
4242

43+
import java.io.IOException;
4344
import java.util.ArrayList;
4445
import java.util.List;
4546
import java.util.logging.Level;
@@ -50,11 +51,21 @@
5051
import javax.ws.rs.POST;
5152
import javax.ws.rs.Path;
5253
import javax.ws.rs.Produces;
54+
import javax.ws.rs.client.ClientRequestContext;
55+
import javax.ws.rs.client.ClientRequestFilter;
56+
import javax.ws.rs.client.ClientResponseContext;
57+
import javax.ws.rs.client.ClientResponseFilter;
5358
import javax.ws.rs.client.Entity;
59+
import javax.ws.rs.container.ContainerRequestContext;
60+
import javax.ws.rs.container.ContainerRequestFilter;
61+
import javax.ws.rs.container.ContainerResponseContext;
62+
import javax.ws.rs.container.ContainerResponseFilter;
5463
import javax.ws.rs.core.Application;
5564
import javax.ws.rs.core.MediaType;
5665
import javax.ws.rs.core.Response;
5766

67+
import javax.annotation.Priority;
68+
5869
import org.glassfish.jersey.logging.LoggingFeature;
5970
import org.glassfish.jersey.server.ResourceConfig;
6071
import org.glassfish.jersey.test.JerseyTest;
@@ -79,7 +90,8 @@
7990
@Suite.SuiteClasses({
8091
LoggingFeatureTest.ClientTest.class,
8192
LoggingFeatureTest.ContainerTest.class,
82-
LoggingFeatureTest.ContainerAutodiscoveryTest.class
93+
LoggingFeatureTest.ContainerAutodiscoveryTest.class,
94+
LoggingFeatureTest.FiltersOrderTest.class
8395
})
8496
public class LoggingFeatureTest {
8597

@@ -372,4 +384,91 @@ private static List<LogRecord> getLoggingFilterLogRecord(final List<LogRecord> r
372384

373385
return loggingFilterRecords;
374386
}
387+
388+
public static class FiltersOrderTest extends JerseyTest {
389+
390+
@Priority(1000)
391+
private static class CustomFilter implements ClientRequestFilter, ClientResponseFilter,
392+
ContainerRequestFilter, ContainerResponseFilter {
393+
394+
static final String CUSTOM_HEADER = "custom_header";
395+
396+
@Override
397+
public void filter(final ClientRequestContext requestContext) throws IOException {
398+
requestContext.getHeaders().add(CUSTOM_HEADER, "client/request");
399+
}
400+
401+
@Override
402+
public void filter(final ClientRequestContext requestContext, final ClientResponseContext responseContext)
403+
throws IOException {
404+
responseContext.getHeaders().add(CUSTOM_HEADER, "client/response");
405+
}
406+
407+
@Override
408+
public void filter(final ContainerRequestContext requestContext) throws IOException {
409+
requestContext.getHeaders().add(CUSTOM_HEADER, "container/request");
410+
}
411+
412+
@Override
413+
public void filter(final ContainerRequestContext requestContext, final ContainerResponseContext responseContext)
414+
throws IOException {
415+
responseContext.getHeaders().add(CUSTOM_HEADER, "container/response");
416+
}
417+
}
418+
419+
@Override
420+
protected Application configure() {
421+
set(TestProperties.RECORD_LOG_LEVEL, Level.INFO.intValue());
422+
423+
return new ResourceConfig(MyResource.class)
424+
.property(LoggingFeature.LOGGING_FEATURE_LOGGER_NAME, LOGGER_NAME)
425+
.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL, "INFO")
426+
.register(CustomFilter.class);
427+
}
428+
429+
@Test
430+
public void testFilterAsContainerFilter() throws Exception {
431+
// Correct response status.
432+
assertThat(target()
433+
.register(CustomFilter.class)
434+
.register(new LoggingFeature(Logger.getLogger(LOGGER_NAME),
435+
Level.INFO,
436+
LoggingFeature.Verbosity.HEADERS_ONLY,
437+
0))
438+
.request().get().getStatus(), is(Response.Status.OK.getStatusCode()));
439+
440+
for (LogRecord record : getLoggedRecords()) {
441+
System.out.println(record.getMessage());
442+
}
443+
444+
// --- client request log entry
445+
// client added header before request has sent (and logged)
446+
assertThat(getLoggedRecords().get(0).getMessage(),
447+
containsString("1 > custom_header: client/request\n"));
448+
449+
450+
// --- container request log entry
451+
// container receives header from client request
452+
assertThat(getLoggedRecords().get(1).getMessage(),
453+
containsString("1 > custom_header: client/request\n"));
454+
// container has added its own header after logging filter logged message
455+
assertThat(getLoggedRecords().get(1).getMessage(),
456+
not(containsString("1 > custom_header: container/request\n")));
457+
458+
459+
// --- container response log entry
460+
// container added header to the response and it was logged
461+
assertThat(getLoggedRecords().get(2).getMessage(),
462+
containsString("1 < custom_header: container/response\n"));
463+
464+
// --- client response log entry
465+
// client received header
466+
assertThat(getLoggedRecords().get(3).getMessage(),
467+
containsString("1 < custom_header: container/response\n"));
468+
assertThat(getLoggedRecords().get(3).getMessage(),
469+
not(containsString("1 < custom_header: client/response\n")));
470+
471+
}
472+
473+
}
375474
}

0 commit comments

Comments
 (0)