Return-Path: Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: (qmail 84272 invoked from network); 18 Feb 2011 12:52:50 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 18 Feb 2011 12:52:50 -0000 Received: (qmail 42584 invoked by uid 500); 18 Feb 2011 12:52:49 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 42465 invoked by uid 500); 18 Feb 2011 12:52:47 -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 42458 invoked by uid 99); 18 Feb 2011 12:52:47 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 Feb 2011 12:52:47 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 Feb 2011 12:52:43 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 3DB0023889E7; Fri, 18 Feb 2011 12:52:22 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1071987 - in /cxf/trunk: common/common/src/main/java/org/apache/cxf/staxutils/transform/ rt/core/src/main/java/org/apache/cxf/interceptor/transform/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ systests/jaxrs/src/test/jav... Date: Fri, 18 Feb 2011 12:52:22 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110218125222.3DB0023889E7@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: sergeyb Date: Fri Feb 18 12:52:21 2011 New Revision: 1071987 URL: http://svn.apache.org/viewvc?rev=1071987&view=rev Log: [CXF-3338] Blocking the original reader by default Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/transform/InTransformReader.java cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/transform/TransformInInterceptor.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreSoapRestImpl.java cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_soap_rest/WEB-INF/beans.xml Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/transform/InTransformReader.java URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/transform/InTransformReader.java?rev=1071987&r1=1071986&r2=1071987&view=diff ============================================================================== --- cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/transform/InTransformReader.java (original) +++ cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/transform/InTransformReader.java Fri Feb 18 12:52:21 2011 @@ -40,16 +40,26 @@ public class InTransformReader extends D private QName currentQName; private QName previousQName; private int previousDepth = -1; + private boolean blockOriginalReader = true; public InTransformReader(XMLStreamReader reader, Map inMap, - Map appendMap) { + Map appendMap, + boolean blockOriginalReader) { super(reader); inElementsMap = new QNamesMap(inMap == null ? 0 : inMap.size()); + this.blockOriginalReader = blockOriginalReader; TransformUtils.convertToQNamesMap(inMap, inElementsMap, nsMap); TransformUtils.convertToMapOfQNames(appendMap, inAppendMap); } + @Override + // If JAXB schema validation is disabled then returning + // the native reader and thus bypassing this reader may work + public XMLStreamReader getReader() { + return blockOriginalReader ? this : super.getReader(); + } + public int next() throws XMLStreamException { if (currentQName != null) { return XMLStreamConstants.START_ELEMENT; Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java?rev=1071987&r1=1071986&r2=1071987&view=diff ============================================================================== --- cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java (original) +++ cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java Fri Feb 18 12:52:21 2011 @@ -64,7 +64,8 @@ public final class TransformUtils { InputStream is, List inDropElements, Map inElementsMap, - Map inAppendMap) { + Map inAppendMap, + boolean blockOriginalReader) { if (inDropElements != null) { Set dropElements = XMLUtils.convertStringsToQNames(inDropElements); reader = StaxUtils.createFilteredReader(createNewReaderIfNeeded(reader, is), @@ -72,7 +73,7 @@ public final class TransformUtils { } if (inElementsMap != null || inAppendMap != null) { reader = new InTransformReader(createNewReaderIfNeeded(reader, is), - inElementsMap, inAppendMap); + inElementsMap, inAppendMap, blockOriginalReader); } return reader; } Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/transform/TransformInInterceptor.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/transform/TransformInInterceptor.java?rev=1071987&r1=1071986&r2=1071987&view=diff ============================================================================== --- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/transform/TransformInInterceptor.java (original) +++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/transform/TransformInInterceptor.java Fri Feb 18 12:52:21 2011 @@ -38,9 +38,10 @@ import org.apache.cxf.staxutils.transfor */ public class TransformInInterceptor extends AbstractPhaseInterceptor { - protected List inDropElements; - protected Map inElementsMap; - protected Map inAppendMap; + private List inDropElements; + private Map inElementsMap; + private Map inAppendMap; + private boolean blockOriginalReader = true; public TransformInInterceptor() { super(Phase.POST_STREAM); @@ -63,7 +64,8 @@ public class TransformInInterceptor exte return TransformUtils.createTransformReaderIfNeeded(reader, is, inDropElements, inElementsMap, - inAppendMap); + inAppendMap, + blockOriginalReader); } public void setInAppendElements(Map inElements) { @@ -78,4 +80,7 @@ public class TransformInInterceptor exte this.inElementsMap = inElements; } + public void setBlockOriginalReader(boolean blockOriginalReader) { + this.blockOriginalReader = blockOriginalReader; + } } Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java?rev=1071987&r1=1071986&r2=1071987&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java Fri Feb 18 12:52:21 2011 @@ -645,6 +645,7 @@ public abstract class AbstractJAXBProvid return TransformUtils.createTransformReaderIfNeeded(reader, is, inDropElements, inElementsMap, - inAppendMap); + inAppendMap, + true); } } Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java?rev=1071987&r1=1071986&r2=1071987&view=diff ============================================================================== --- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java (original) +++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java Fri Feb 18 12:52:21 2011 @@ -682,18 +682,34 @@ public class JAXRSSoapBookTest extends A new QName("http://books.com", "BookService")); BookStoreJaxrsJaxws store = service.getBookPort(); - TransformInInterceptor in = new TransformInInterceptor(); - Map mapIn = new HashMap(); - mapIn.put("*", "{http://jaxws.jaxrs.systest.cxf.apache.org/}*"); - in.setInTransformElements(mapIn); - TransformOutInterceptor out = new TransformOutInterceptor(); Map mapOut = new HashMap(); - mapOut.put("{http://jaxws.jaxrs.systest.cxf.apache.org/}*", "getBookRequest"); + // Book content (id, name) is unqualified, thus the following works + // because JAXB will report + // - {http://jaxws.jaxrs.systest.cxf.apache.org/}Book + // - id + // - name + // and only the qualified top-level Book tag gets matched by the following + // mapping + mapOut.put("{http://jaxws.jaxrs.systest.cxf.apache.org/}*", "*"); out.setOutTransformElements(mapOut); + TransformInInterceptor in = new TransformInInterceptor(); + Map mapIn = new HashMap(); + // mapIn.put("*", "{http://jaxws.jaxrs.systest.cxf.apache.org/}*"); + // won't work for a case where a totally unqualified getBookResponse needs to be + // qualified such that only the top-level getBookResponse is processed because of '*'. + // Such a mapping would work nicely if we had say a package-info making both + // Book id & name qualified; otherwise we need to choose what tag we need to qualify + + // mapIn.put("*", "{http://jaxws.jaxrs.systest.cxf.apache.org/}*"); + // works too if the schema validation is disabled + + mapIn.put("getBookResponse", "{http://jaxws.jaxrs.systest.cxf.apache.org/}getBookResponse"); + in.setInTransformElements(mapIn); Client cl = ClientProxy.getClient(store); + ((HTTPConduit)cl.getConduit()).getClient().setReceiveTimeout(10000000); cl.getInInterceptors().add(in); cl.getOutInterceptors().add(out); Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreSoapRestImpl.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreSoapRestImpl.java?rev=1071987&r1=1071986&r2=1071987&view=diff ============================================================================== --- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreSoapRestImpl.java (original) +++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreSoapRestImpl.java Fri Feb 18 12:52:21 2011 @@ -34,6 +34,7 @@ import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.ws.WebServiceContext; +import org.apache.cxf.annotations.SchemaValidation; import org.apache.cxf.jaxrs.client.WebClient; import org.apache.cxf.jaxrs.ext.MessageContext; import org.apache.cxf.systest.jaxrs.Book; @@ -42,7 +43,7 @@ import org.apache.cxf.systest.jaxrs.Book import org.apache.cxf.systest.jaxrs.BookSubresource; import org.apache.cxf.systest.jaxrs.BookSubresourceImpl; - +@SchemaValidation public class BookStoreSoapRestImpl implements BookStoreJaxrsJaxws { private Map books = new HashMap(); Modified: cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_soap_rest/WEB-INF/beans.xml URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_soap_rest/WEB-INF/beans.xml?rev=1071987&r1=1071986&r2=1071987&view=diff ============================================================================== --- cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_soap_rest/WEB-INF/beans.xml (original) +++ cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_soap_rest/WEB-INF/beans.xml Fri Feb 18 12:52:21 2011 @@ -217,7 +217,7 @@ http://cxf.apache.org/schemas/jaxrs.xsd" - +