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()  {

Reply via email to