Repository: cxf Updated Branches: refs/heads/master 8133fdf3b -> a6d18c83a
[CXF-7418] Initial support for ValidateOnExecution Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/a6d18c83 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/a6d18c83 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/a6d18c83 Branch: refs/heads/master Commit: a6d18c83af6584cd9b5ec1215c9b3ef77906cd19 Parents: 8133fdf Author: Sergey Beryozkin <[email protected]> Authored: Wed Jun 21 13:54:14 2017 +0100 Committer: Sergey Beryozkin <[email protected]> Committed: Wed Jun 21 13:54:14 2017 +0100 ---------------------------------------------------------------------- .../validation/AbstractValidationInterceptor.java | 11 +++++++++++ .../jaxrs/validation/BookStoreWithValidation.java | 15 +++++++++++++++ .../validation/JAXRSClientServerValidationTest.java | 10 ++++++++++ 3 files changed, 36 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/a6d18c83/core/src/main/java/org/apache/cxf/validation/AbstractValidationInterceptor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/cxf/validation/AbstractValidationInterceptor.java b/core/src/main/java/org/apache/cxf/validation/AbstractValidationInterceptor.java index 59e7af8..47cf1bb 100644 --- a/core/src/main/java/org/apache/cxf/validation/AbstractValidationInterceptor.java +++ b/core/src/main/java/org/apache/cxf/validation/AbstractValidationInterceptor.java @@ -23,6 +23,9 @@ import java.util.List; import java.util.ResourceBundle; import java.util.logging.Logger; +import javax.validation.executable.ExecutableType; +import javax.validation.executable.ValidateOnExecution; + import org.apache.cxf.common.i18n.BundleUtils; import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.endpoint.Endpoint; @@ -65,6 +68,14 @@ public abstract class AbstractValidationInterceptor extends AbstractPhaseInterce if (method == null) { return; } + + ValidateOnExecution validateOnExec = method.getAnnotation(ValidateOnExecution.class); + if (validateOnExec != null) { + ExecutableType[] execTypes = validateOnExec.type(); + if (execTypes.length == 1 && execTypes[0] == ExecutableType.NONE) { + return; + } + } final List< Object > arguments = MessageContentsList.getContentsList(message); http://git-wip-us.apache.org/repos/asf/cxf/blob/a6d18c83/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/validation/BookStoreWithValidation.java ---------------------------------------------------------------------- diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/validation/BookStoreWithValidation.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/validation/BookStoreWithValidation.java index f06527c..65d87cc 100644 --- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/validation/BookStoreWithValidation.java +++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/validation/BookStoreWithValidation.java @@ -26,6 +26,8 @@ import java.util.Map; import javax.validation.Valid; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; +import javax.validation.executable.ExecutableType; +import javax.validation.executable.ValidateOnExecution; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.DefaultValue; @@ -80,6 +82,19 @@ public class BookStoreWithValidation extends AbstractBookStoreWithValidation imp books.put(id, new BookWithValidation(name, id)); return Response.created(uriInfo.getRequestUriBuilder().path(id).build()).build(); } + + @POST + @Path("/booksNoValidate") + @ValidateOnExecution(type = ExecutableType.NONE) + public Response addBookNoValidation(@NotNull @FormParam("id") String id) { + return Response.ok().build(); + } + @POST + @Path("/booksValidate") + @ValidateOnExecution(type = ExecutableType.IMPLICIT) + public Response addBookValidate(@NotNull @FormParam("id") String id) { + return Response.ok().build(); + } @POST @Path("/books/direct") http://git-wip-us.apache.org/repos/asf/cxf/blob/a6d18c83/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/validation/JAXRSClientServerValidationTest.java ---------------------------------------------------------------------- diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/validation/JAXRSClientServerValidationTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/validation/JAXRSClientServerValidationTest.java index de580aa..ebb1add 100644 --- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/validation/JAXRSClientServerValidationTest.java +++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/validation/JAXRSClientServerValidationTest.java @@ -116,6 +116,16 @@ public class JAXRSClientServerValidationTest extends AbstractJAXRSValidationTest final Response r = createWebClient("/bookstore/books").post(new Form()); assertEquals(Status.BAD_REQUEST.getStatusCode(), r.getStatus()); } + @Test + public void testThatNotNullValidationSkipped() { + final Response r = createWebClient("/bookstore/booksNoValidate").post(new Form()); + assertEquals(200, r.getStatus()); + } + @Test + public void testThatNotNullValidationNotSkipped() { + final Response r = createWebClient("/bookstore/booksValidate").post(new Form()); + assertEquals(400, r.getStatus()); + } @Test public void testThatSizeValidationFails() {
