From 52538d5206a6457c1345ffa22f566bd1382b578c Mon Sep 17 00:00:00 2001 From: Jose Date: Wed, 9 Nov 2022 08:07:20 +0100 Subject: [PATCH] Rest data with panache: add the parameter names in resources Fix https://github.com/quarkusio/quarkus/issues/29047 --- .../data/panache/deployment/methods/AddMethodImplementor.java | 1 + .../panache/deployment/methods/DeleteMethodImplementor.java | 1 + .../data/panache/deployment/methods/GetMethodImplementor.java | 1 + .../panache/deployment/methods/ListMethodImplementor.java | 2 ++ .../panache/deployment/methods/UpdateMethodImplementor.java | 1 + .../deployment/methods/hal/ListHalMethodImplementor.java | 2 ++ .../rest/data/panache/HibernateOrmRestDataPanacheTest.java | 4 ++-- .../io/quarkus/it/spring/data/rest/SpringDataRestTest.java | 4 ++-- 8 files changed, 12 insertions(+), 4 deletions(-) diff --git a/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/AddMethodImplementor.java b/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/AddMethodImplementor.java index 99a750d24f751e..85cd0ec772ec93 100644 --- a/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/AddMethodImplementor.java +++ b/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/AddMethodImplementor.java @@ -103,6 +103,7 @@ protected void implementInternal(ClassCreator classCreator, ResourceMetadata res MethodCreator methodCreator = SignatureMethodCreator.getMethodCreator(METHOD_NAME, classCreator, isNotReactivePanache() ? ofType(Response.class) : ofType(Uni.class, resourceMetadata.getEntityType()), resourceMetadata.getEntityType()); + methodCreator.setParameterNames(new String[] { "entity" }); // Add method annotations addPathAnnotation(methodCreator, resourceProperties.getPath(RESOURCE_METHOD_NAME)); diff --git a/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/DeleteMethodImplementor.java b/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/DeleteMethodImplementor.java index 37f1165300512d..593a4f33028f03 100644 --- a/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/DeleteMethodImplementor.java +++ b/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/DeleteMethodImplementor.java @@ -84,6 +84,7 @@ protected void implementInternal(ClassCreator classCreator, ResourceMetadata res MethodCreator methodCreator = SignatureMethodCreator.getMethodCreator(METHOD_NAME, classCreator, isNotReactivePanache() ? ofType(Response.class) : ofType(Uni.class, resourceMetadata.getEntityType()), resourceMetadata.getIdType()); + methodCreator.setParameterNames(new String[] { "id" }); // Add method annotations addPathAnnotation(methodCreator, appendToPath(resourceProperties.getPath(RESOURCE_METHOD_NAME), "{id}")); diff --git a/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/GetMethodImplementor.java b/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/GetMethodImplementor.java index 0b3b4039f2d1b9..23906f76c25d76 100644 --- a/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/GetMethodImplementor.java +++ b/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/GetMethodImplementor.java @@ -86,6 +86,7 @@ protected void implementInternal(ClassCreator classCreator, ResourceMetadata res MethodCreator methodCreator = SignatureMethodCreator.getMethodCreator(METHOD_NAME, classCreator, isNotReactivePanache() ? ofType(Response.class) : ofType(Uni.class, resourceMetadata.getEntityType()), resourceMetadata.getIdType()); + methodCreator.setParameterNames(new String[] { "id" }); // Add method annotations addPathAnnotation(methodCreator, appendToPath(resourceProperties.getPath(RESOURCE_METHOD_NAME), "{id}")); diff --git a/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/ListMethodImplementor.java b/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/ListMethodImplementor.java index 03edb26b98cb06..981b7f2a3873a3 100644 --- a/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/ListMethodImplementor.java +++ b/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/ListMethodImplementor.java @@ -137,6 +137,7 @@ private void implementPaged(ClassCreator classCreator, ResourceMetadata resource MethodCreator methodCreator = SignatureMethodCreator.getMethodCreator(METHOD_NAME, classCreator, isNotReactivePanache() ? ofType(Response.class) : ofType(Uni.class, resourceMetadata.getEntityType()), List.class, int.class, int.class, UriInfo.class); + methodCreator.setParameterNames(new String[] { "sort", "page", "size", "uriInfo" }); // Add method annotations addGetAnnotation(methodCreator); @@ -205,6 +206,7 @@ private void implementNotPaged(ClassCreator classCreator, ResourceMetadata resou MethodCreator methodCreator = SignatureMethodCreator.getMethodCreator(METHOD_NAME, classCreator, isNotReactivePanache() ? ofType(Response.class) : ofType(Uni.class, resourceMetadata.getEntityType()), List.class); + methodCreator.setParameterNames(new String[] { "sort" }); // Add method annotations addGetAnnotation(methodCreator); diff --git a/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/UpdateMethodImplementor.java b/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/UpdateMethodImplementor.java index e05fa639072dfa..cc242901358d5b 100644 --- a/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/UpdateMethodImplementor.java +++ b/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/UpdateMethodImplementor.java @@ -135,6 +135,7 @@ protected void implementInternal(ClassCreator classCreator, ResourceMetadata res MethodCreator methodCreator = SignatureMethodCreator.getMethodCreator(METHOD_NAME, classCreator, isNotReactivePanache() ? ofType(Response.class) : ofType(Uni.class, resourceMetadata.getEntityType()), resourceMetadata.getIdType(), resourceMetadata.getEntityType()); + methodCreator.setParameterNames(new String[] { "id", "entity" }); // Add method annotations addPathAnnotation(methodCreator, appendToPath(resourceProperties.getPath(RESOURCE_UPDATE_METHOD_NAME), "{id}")); diff --git a/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/hal/ListHalMethodImplementor.java b/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/hal/ListHalMethodImplementor.java index df974df30777d7..f3c922605451ab 100644 --- a/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/hal/ListHalMethodImplementor.java +++ b/extensions/panache/rest-data-panache/deployment/src/main/java/io/quarkus/rest/data/panache/deployment/methods/hal/ListHalMethodImplementor.java @@ -129,6 +129,7 @@ private void implementPaged(ClassCreator classCreator, ResourceMetadata resource MethodCreator methodCreator = SignatureMethodCreator.getMethodCreator(METHOD_NAME, classCreator, isNotReactivePanache() ? ofType(Response.class) : ofType(Uni.class, resourceMetadata.getEntityType()), List.class, int.class, int.class, UriInfo.class); + methodCreator.setParameterNames(new String[] { "sort", "page", "size", "uriInfo" }); // Add method annotations addPathAnnotation(methodCreator, resourceProperties.getPath(RESOURCE_METHOD_NAME)); @@ -205,6 +206,7 @@ private void implementNotPaged(ClassCreator classCreator, ResourceMetadata resou MethodCreator methodCreator = SignatureMethodCreator.getMethodCreator(METHOD_NAME, classCreator, isNotReactivePanache() ? ofType(Response.class) : ofType(Uni.class, resourceMetadata.getEntityType()), List.class); + methodCreator.setParameterNames(new String[] { "sort" }); // Add method annotations addPathAnnotation(methodCreator, resourceProperties.getPath(RESOURCE_METHOD_NAME)); diff --git a/integration-tests/hibernate-orm-rest-data-panache/src/test/java/io/quarkus/it/hibernate/orm/rest/data/panache/HibernateOrmRestDataPanacheTest.java b/integration-tests/hibernate-orm-rest-data-panache/src/test/java/io/quarkus/it/hibernate/orm/rest/data/panache/HibernateOrmRestDataPanacheTest.java index 656972dd443dd0..dfde1ed01c63e9 100644 --- a/integration-tests/hibernate-orm-rest-data-panache/src/test/java/io/quarkus/it/hibernate/orm/rest/data/panache/HibernateOrmRestDataPanacheTest.java +++ b/integration-tests/hibernate-orm-rest-data-panache/src/test/java/io/quarkus/it/hibernate/orm/rest/data/panache/HibernateOrmRestDataPanacheTest.java @@ -237,7 +237,7 @@ void shouldNotCreateBookWithBlankTitle() { .and().body(book.toString()) .when().post("/books") .then().statusCode(400) - .and().body("parameterViolations[0].path", equalTo("add.arg0.title")) + .and().body("parameterViolations[0].path", equalTo("add.entity.title")) .and().body("parameterViolations[0].message", equalTo("must not be blank")); } @@ -307,7 +307,7 @@ void shouldNotUpdateBookWithBlankTitle() { .and().body(book.toString()) .when().put("/books/" + CRIME_AND_PUNISHMENT_ID) .then().statusCode(400) - .and().body("parameterViolations[0].path", equalTo("update.arg1.title")) + .and().body("parameterViolations[0].path", equalTo("update.entity.title")) .and().body("parameterViolations[0].message", equalTo("must not be blank")); } } diff --git a/integration-tests/spring-data-rest/src/test/java/io/quarkus/it/spring/data/rest/SpringDataRestTest.java b/integration-tests/spring-data-rest/src/test/java/io/quarkus/it/spring/data/rest/SpringDataRestTest.java index 0a5325c28e8a7c..bd9f76a1f7a89d 100644 --- a/integration-tests/spring-data-rest/src/test/java/io/quarkus/it/spring/data/rest/SpringDataRestTest.java +++ b/integration-tests/spring-data-rest/src/test/java/io/quarkus/it/spring/data/rest/SpringDataRestTest.java @@ -172,7 +172,7 @@ void shouldNotCreateBookWithBlankTitle() { .and().body(book.toString()) .when().post("/books") .then().statusCode(400) - .and().body("parameterViolations[0].path", equalTo("add.arg0.title")) + .and().body("parameterViolations[0].path", equalTo("add.entity.title")) .and().body("parameterViolations[0].message", equalTo("must not be blank")); } @@ -242,7 +242,7 @@ void shouldNotUpdateBookWithBlankTitle() { .and().body(book.toString()) .when().put("/books/" + CRIME_AND_PUNISHMENT_ID) .then().statusCode(400) - .and().body("parameterViolations[0].path", equalTo("update.arg1.title")) + .and().body("parameterViolations[0].path", equalTo("update.entity.title")) .and().body("parameterViolations[0].message", equalTo("must not be blank")); } }