Skip to content

Commit acaf40a

Browse files
authored
Merge pull request quarkusio#47341 from geoand/quarkusio#47321
Add support for `ServerRequestContext` for `@ServerExceptionMapper` and `@ServerRequestFilter` methods
2 parents 6288ac7 + 0731633 commit acaf40a

File tree

6 files changed

+24
-7
lines changed

6 files changed

+24
-7
lines changed

extensions/resteasy-reactive/rest/deployment/src/test/java/io/quarkus/resteasy/reactive/server/test/customexceptions/MyOtherExceptionMapper.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import org.jboss.resteasy.reactive.server.ServerExceptionMapper;
66
import org.jboss.resteasy.reactive.server.SimpleResourceInfo;
7+
import org.jboss.resteasy.reactive.server.spi.ServerRequestContext;
78

89
import io.vertx.ext.web.RoutingContext;
910

@@ -17,7 +18,9 @@ public MyOtherExceptionMapper(SomeBean someBean) {
1718

1819
@ServerExceptionMapper
1920
public Response handleMyOtherException(RoutingContext routingContext, MyOtherException myOtherException,
20-
SimpleResourceInfo simplifiedResourceInfo) {
21+
SimpleResourceInfo simplifiedResourceInfo, ServerRequestContext serverRequestContext) {
22+
serverRequestContext.getResteasyReactiveResourceInfo();
23+
simplifiedResourceInfo.getMethodName();
2124
return Response.status(411).build();
2225
}
2326
}

extensions/resteasy-reactive/rest/deployment/src/test/java/io/quarkus/resteasy/reactive/server/test/customproviders/CustomContainerRequestFilter.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@
55
import jakarta.ws.rs.core.UriInfo;
66

77
import org.jboss.resteasy.reactive.server.ServerRequestFilter;
8+
import org.jboss.resteasy.reactive.server.spi.ServerRequestContext;
89

910
public class CustomContainerRequestFilter {
1011

1112
@ServerRequestFilter
12-
public void whatever(UriInfo uriInfo, HttpHeaders httpHeaders, ContainerRequestContext requestContext) {
13-
String customHeaderValue = uriInfo.getPath() + "-" + httpHeaders.getHeaderString("some-input");
13+
public void whatever(UriInfo uriInfo, HttpHeaders httpHeaders, ContainerRequestContext requestContext,
14+
ServerRequestContext serverRequestContext) {
15+
String customHeaderValue = uriInfo.getPath() + "-" + httpHeaders.getHeaderString("some-input") + "-"
16+
+ serverRequestContext.getRequestHeaders().getHeaderString("some-other-input");
1417
requestContext.getHeaders().putSingle("custom-header", customHeaderValue);
1518
}
1619
}

extensions/resteasy-reactive/rest/deployment/src/test/java/io/quarkus/resteasy/reactive/server/test/customproviders/CustomFiltersTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,16 @@ public JavaArchive get() {
3131

3232
@Test
3333
public void testFilters() {
34-
Headers responseHeaders = RestAssured.given().header("some-input", "bar").get("/custom/req")
35-
.then().statusCode(200).body(Matchers.containsString("/custom/req-bar-null")).extract().headers();
34+
Headers responseHeaders = RestAssured.given().header("some-input", "bar").header("some-other-input", "bar2")
35+
.get("/custom/req")
36+
.then().statusCode(200).body(Matchers.containsString("/custom/req-bar-bar2-null")).extract().headers();
3637
assertThat(responseHeaders.getValues("java-method")).containsOnly("filters");
3738
Assertions.assertEquals(3, AssertContainerFilter.COUNT.get());
3839
assertThat(responseHeaders.getValues("very")).isEmpty();
3940

40-
responseHeaders = RestAssured.given().header("some-input", "bar").get("/custom/metal")
41-
.then().statusCode(200).body(Matchers.containsString("/custom/metal-bar-metal")).extract().headers();
41+
responseHeaders = RestAssured.given().header("some-input", "bar").header("some-other-input", "bar2")
42+
.get("/custom/metal")
43+
.then().statusCode(200).body(Matchers.containsString("/custom/metal-bar-bar2-metal")).extract().headers();
4244
assertThat(responseHeaders.getValues("very")).containsOnly("heavy");
4345
}
4446
}

independent-projects/resteasy-reactive/common/processor/src/main/java/org/jboss/resteasy/reactive/common/processor/ResteasyReactiveDotNames.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,9 @@ public final class ResteasyReactiveDotNames {
273273
public static final DotName RESTEASY_REACTIVE_CONTAINER_REQUEST_CONTEXT = DotName
274274
.createSimple("org.jboss.resteasy.reactive.server.spi.ResteasyReactiveContainerRequestContext");
275275

276+
public static final DotName RESTEASY_REACTIVE_SERVER_REQUEST_CONTEXT = DotName
277+
.createSimple("org.jboss.resteasy.reactive.server.spi.ServerRequestContext");
278+
276279
public static final DotName WITH_FORM_READ = DotName
277280
.createSimple("org.jboss.resteasy.reactive.server.WithFormRead");
278281

independent-projects/resteasy-reactive/server/processor/src/main/java/org/jboss/resteasy/reactive/server/processor/generation/exceptionmappers/ServerExceptionMapperGenerator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.RESPONSE;
1010
import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.REST_RESPONSE;
1111
import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.SERVER_EXCEPTION_MAPPER;
12+
import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.SERVER_REQUEST_CONTEXT;
1213
import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.UNI;
1314
import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.URI_INFO;
1415
import static org.jboss.resteasy.reactive.server.processor.generation.multipart.GeneratorUtils.paramHandleFromReqContextMethod;
@@ -569,6 +570,8 @@ private static TargetMethodParamsInfo getTargetMethodParamsInfo(MethodInfo targe
569570
ofMethod(ResteasyReactiveRequestContext.class.getName(), "getContainerRequestContext",
570571
ContainerRequestContextImpl.class),
571572
contextHandle);
573+
} else if (SERVER_REQUEST_CONTEXT.equals(paramDotName)) {
574+
targetMethodParamHandles[i] = contextHandle;
572575
} else if (URI_INFO.equals(paramDotName)) {
573576
paramHandleFromReqContextMethod(mc, contextHandle, targetMethodParamHandles, i,
574577
"getUriInfo",

independent-projects/resteasy-reactive/server/processor/src/main/java/org/jboss/resteasy/reactive/server/processor/generation/filters/CustomFilterGenerator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.RESOURCE_INFO;
99
import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.RESPONSE;
1010
import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.REST_RESPONSE;
11+
import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.SERVER_REQUEST_CONTEXT;
1112
import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.THROWABLE;
1213
import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.UNI;
1314
import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.URI_INFO;
@@ -330,6 +331,8 @@ private ResultHandle[] getRequestFilterResultHandles(MethodInfo targetMethod, Do
330331
} else if (ResteasyReactiveServerDotNames.QUARKUS_REST_CONTAINER_REQUEST_CONTEXT.equals(paramDotName)) {
331332
targetMethodParamHandles[i] = filterMethod.checkCast(filterMethod.getMethodParam(0),
332333
ResteasyReactiveContainerRequestContext.class);
334+
} else if (SERVER_REQUEST_CONTEXT.equals(paramDotName)) {
335+
targetMethodParamHandles[i] = rrReqCtxHandle;
333336
} else if (URI_INFO.equals(paramDotName)) {
334337
GeneratorUtils.paramHandleFromReqContextMethod(filterMethod, rrReqCtxHandle, targetMethodParamHandles,
335338
i,

0 commit comments

Comments
 (0)