Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id E53F3200BA7 for ; Fri, 21 Oct 2016 18:21:11 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id E3D0B160AE8; Fri, 21 Oct 2016 16:21:11 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 0F5E5160ADE for ; Fri, 21 Oct 2016 18:21:10 +0200 (CEST) Received: (qmail 74624 invoked by uid 500); 21 Oct 2016 16:21:10 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 74584 invoked by uid 99); 21 Oct 2016 16:21:10 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 21 Oct 2016 16:21:10 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 1BA84E0061; Fri, 21 Oct 2016 16:21:10 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sergeyb@apache.org To: commits@cxf.apache.org Message-Id: <55aa05cd706f494c9306b8c68ad609a3@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: cxf git commit: [CXF-7091] Avoiding the second out validation by default Date: Fri, 21 Oct 2016 16:21:10 +0000 (UTC) archived-at: Fri, 21 Oct 2016 16:21:12 -0000 Repository: cxf Updated Branches: refs/heads/master cbac9a908 -> 1e56cc54d [CXF-7091] Avoiding the second out validation by default Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/1e56cc54 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/1e56cc54 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/1e56cc54 Branch: refs/heads/master Commit: 1e56cc54d146704842b2e4ac09204e45524dc1d1 Parents: cbac9a9 Author: Sergey Beryozkin Authored: Fri Oct 21 17:20:53 2016 +0100 Committer: Sergey Beryozkin Committed: Fri Oct 21 17:20:53 2016 +0100 ---------------------------------------------------------------------- .../jaxrs/validation/JAXRSBeanValidationFeature.java | 9 ++++++--- .../JAXRSBeanValidationOutInterceptor.java | 15 ++++++++++++++- .../jaxrs_spring_validation/WEB-INF/beans.xml | 4 +--- 3 files changed, 21 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/1e56cc54/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/JAXRSBeanValidationFeature.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/JAXRSBeanValidationFeature.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/JAXRSBeanValidationFeature.java index 186a3e6..318a2b6 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/JAXRSBeanValidationFeature.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/JAXRSBeanValidationFeature.java @@ -22,18 +22,18 @@ import org.apache.cxf.Bus; import org.apache.cxf.feature.AbstractFeature; import org.apache.cxf.interceptor.InterceptorProvider; import org.apache.cxf.validation.BeanValidationInInterceptor; -import org.apache.cxf.validation.BeanValidationOutInterceptor; import org.apache.cxf.validation.BeanValidationProvider; public class JAXRSBeanValidationFeature extends AbstractFeature { private BeanValidationProvider validationProvider; - + private boolean supportMultipleValidations; @Override protected void initializeProvider(InterceptorProvider interceptorProvider, Bus bus) { BeanValidationInInterceptor in = new JAXRSBeanValidationInInterceptor(); - BeanValidationOutInterceptor out = new JAXRSBeanValidationOutInterceptor(); + JAXRSBeanValidationOutInterceptor out = new JAXRSBeanValidationOutInterceptor(); + out.setSupportMultipleValidations(supportMultipleValidations); if (validationProvider != null) { in.setProvider(validationProvider); out.setProvider(validationProvider); @@ -45,4 +45,7 @@ public class JAXRSBeanValidationFeature extends AbstractFeature { public void setProvider(BeanValidationProvider provider) { this.validationProvider = provider; } + public void setSupportMultipleValidations(boolean supportMultipleValidations) { + this.supportMultipleValidations = supportMultipleValidations; + } } http://git-wip-us.apache.org/repos/asf/cxf/blob/1e56cc54/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/JAXRSBeanValidationOutInterceptor.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/JAXRSBeanValidationOutInterceptor.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/JAXRSBeanValidationOutInterceptor.java index 386e427..d477f47 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/JAXRSBeanValidationOutInterceptor.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/validation/JAXRSBeanValidationOutInterceptor.java @@ -33,6 +33,8 @@ import org.apache.cxf.validation.BeanValidationOutInterceptor; @Provider public class JAXRSBeanValidationOutInterceptor extends BeanValidationOutInterceptor implements ContainerResponseFilter { + private static final String OUT_VALIDATION_DONE = "out.bean.validation.done"; + private boolean supportMultipleValidations; public JAXRSBeanValidationOutInterceptor() { } public JAXRSBeanValidationOutInterceptor(String phase) { @@ -51,6 +53,17 @@ public class JAXRSBeanValidationOutInterceptor extends BeanValidationOutIntercep @Override public void filter(ContainerRequestContext in, ContainerResponseContext out) throws IOException { - super.handleMessage(PhaseInterceptorChain.getCurrentMessage()); + Message message = PhaseInterceptorChain.getCurrentMessage(); + if (Boolean.TRUE != message.get(OUT_VALIDATION_DONE) + || supportMultipleValidations) { + try { + super.handleMessage(message); + } finally { + message.put(OUT_VALIDATION_DONE, Boolean.TRUE); + } + } + } + public void setSupportMultipleValidations(boolean supportMultipleValidations) { + this.supportMultipleValidations = supportMultipleValidations; } } http://git-wip-us.apache.org/repos/asf/cxf/blob/1e56cc54/systests/jaxrs/src/test/resources/jaxrs_spring_validation/WEB-INF/beans.xml ---------------------------------------------------------------------- diff --git a/systests/jaxrs/src/test/resources/jaxrs_spring_validation/WEB-INF/beans.xml b/systests/jaxrs/src/test/resources/jaxrs_spring_validation/WEB-INF/beans.xml index 1149e51..f46f88f 100644 --- a/systests/jaxrs/src/test/resources/jaxrs_spring_validation/WEB-INF/beans.xml +++ b/systests/jaxrs/src/test/resources/jaxrs_spring_validation/WEB-INF/beans.xml @@ -35,14 +35,12 @@ http://cxf.apache.org/schemas/jaxrs.xsd"> - - - +