Skip to content

Commit 3d53ddf

Browse files
authored
Merge pull request #31712 from geoand/#31692
Make request scoped beans work properly in ReaderInterceptors
2 parents d36e974 + 067011e commit 3d53ddf

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

independent-projects/resteasy-reactive/server/runtime/src/main/java/org/jboss/resteasy/reactive/server/handlers/RequestDeserializeHandler.java

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public RequestDeserializeHandler(Class<?> type, Type genericType, List<MediaType
4747

4848
@Override
4949
public void handle(ResteasyReactiveRequestContext requestContext) throws Exception {
50+
requestContext.requireCDIRequestScope();
5051
MediaType effectiveRequestType = null;
5152
Object requestType = requestContext.getHeader(HttpHeaders.CONTENT_TYPE, true);
5253
if (requestType != null) {

independent-projects/resteasy-reactive/server/vertx/src/test/java/org/jboss/resteasy/reactive/server/vertx/test/BodyPayloadBlockingAllowedTest.java

+33-1
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,20 @@
33
import static io.restassured.RestAssured.given;
44
import static org.hamcrest.CoreMatchers.equalTo;
55

6+
import java.io.IOException;
67
import java.util.Base64;
78

9+
import jakarta.enterprise.context.RequestScoped;
10+
import jakarta.inject.Inject;
811
import jakarta.ws.rs.Consumes;
912
import jakarta.ws.rs.POST;
1013
import jakarta.ws.rs.Path;
1114
import jakarta.ws.rs.Produces;
15+
import jakarta.ws.rs.WebApplicationException;
1216
import jakarta.ws.rs.core.MediaType;
17+
import jakarta.ws.rs.ext.Provider;
18+
import jakarta.ws.rs.ext.ReaderInterceptor;
19+
import jakarta.ws.rs.ext.ReaderInterceptorContext;
1320

1421
import org.jboss.resteasy.reactive.server.core.BlockingOperationSupport;
1522
import org.jboss.resteasy.reactive.server.vertx.test.framework.ResteasyReactiveUnitTest;
@@ -25,7 +32,7 @@ public class BodyPayloadBlockingAllowedTest {
2532
@RegisterExtension
2633
static ResteasyReactiveUnitTest test = new ResteasyReactiveUnitTest()
2734
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
28-
.addClasses(TestResource.class));
35+
.addClasses(TestResource.class, TestInterceptor.class, TestRequestScopedBean.class));
2936

3037
@Test
3138
void testSmallRequestForNonBlocking() {
@@ -81,4 +88,29 @@ public Boolean blocking(String request) {
8188
}
8289

8390
}
91+
92+
// the interceptor is used in order to test that a request scoped bean works properly no matter what thread the payload is read from
93+
94+
@Provider
95+
public static class TestInterceptor implements ReaderInterceptor {
96+
97+
@Inject
98+
protected TestRequestScopedBean testRequestScopedBean;
99+
100+
@Override
101+
public Object aroundReadFrom(final ReaderInterceptorContext context) throws IOException, WebApplicationException {
102+
var entity = context.proceed();
103+
testRequestScopedBean.log((String) entity);
104+
return entity;
105+
}
106+
}
107+
108+
@RequestScoped
109+
public static class TestRequestScopedBean {
110+
111+
public void log(final String ignored) {
112+
113+
}
114+
}
115+
84116
}

0 commit comments

Comments
 (0)