diff --git a/extensions/resteasy-reactive/rest/deployment/src/test/java/io/quarkus/resteasy/reactive/server/test/beanparam/BeanParamRecordTest.java b/extensions/resteasy-reactive/rest/deployment/src/test/java/io/quarkus/resteasy/reactive/server/test/beanparam/BeanParamRecordTest.java index 05b14bd702486..0f3fd90e065ea 100644 --- a/extensions/resteasy-reactive/rest/deployment/src/test/java/io/quarkus/resteasy/reactive/server/test/beanparam/BeanParamRecordTest.java +++ b/extensions/resteasy-reactive/rest/deployment/src/test/java/io/quarkus/resteasy/reactive/server/test/beanparam/BeanParamRecordTest.java @@ -43,7 +43,7 @@ void shouldWork() { .get("/record") .then() .statusCode(200) - .body(equalTo("got it/2/3/4/5/6.0/7.0/true/a/query/query/query/query")); + .body(equalTo("got it/2/3/4/5/6.0/7.0/true/a/query/query/query/query//record")); } @@ -102,7 +102,8 @@ public String beanParamRecord(BeanParamRecord p, @RestHeader String headerParam) + p.obp().q + "/" + p.obp().obpr.q() + "/" + p.obp().obpc.q + "/" - + p.obpr().q; + + p.obpr().q + "/" + + p.uriInfo().getPath(); } } } diff --git a/independent-projects/resteasy-reactive/server/processor/src/main/java/org/jboss/resteasy/reactive/server/processor/scanning/ClassInjectorTransformer.java b/independent-projects/resteasy-reactive/server/processor/src/main/java/org/jboss/resteasy/reactive/server/processor/scanning/ClassInjectorTransformer.java index cd3a97dd659e2..a2f9a62fa1464 100644 --- a/independent-projects/resteasy-reactive/server/processor/src/main/java/org/jboss/resteasy/reactive/server/processor/scanning/ClassInjectorTransformer.java +++ b/independent-projects/resteasy-reactive/server/processor/src/main/java/org/jboss/resteasy/reactive/server/processor/scanning/ClassInjectorTransformer.java @@ -289,7 +289,7 @@ public void visitEnd() { case CONTEXT: // already set by CDI for non-records if (isRecord) { - injectContextParameter(injectMethod, fieldInfo, ctxParamIndex); + injectContextParameterForRecord(injectMethod, fieldInfo, fieldIndex, ctxParamIndex); } break; case FORM: @@ -489,7 +489,8 @@ private void injectBeanParameter(MethodVisitor injectMethod, FieldInfo fieldInfo } } - private void injectContextParameter(MethodVisitor injectMethod, FieldInfo fieldInfo, int ctxParamIndex) { + private void injectContextParameterForRecord(MethodVisitor injectMethod, FieldInfo fieldInfo, int fieldIndex, + int ctxParamIndex) { // ctx param injectMethod.visitVarInsn(Opcodes.ALOAD, ctxParamIndex); // type @@ -498,6 +499,8 @@ private void injectContextParameter(MethodVisitor injectMethod, FieldInfo fieldI injectMethod.visitMethodInsn(Opcodes.INVOKEINTERFACE, QUARKUS_REST_INJECTION_CONTEXT_BINARY_NAME, "getContextParameter", "(Ljava/lang/Class;)Ljava/lang/Object;", true); + // store our param field + injectMethod.visitVarInsn(AsmUtil.getStoreOpcode(fieldInfo.type()), fieldIndex); } private void generateMultipartFormFields(FieldInfo fieldInfo, ServerIndexedParameter extractor) {