You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2011/02/18 13:52:22 UTC
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...
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<String, String> inMap,
- Map<String, String> appendMap) {
+ Map<String, String> 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<String> inDropElements,
Map<String, String> inElementsMap,
- Map<String, String> inAppendMap) {
+ Map<String, String> inAppendMap,
+ boolean blockOriginalReader) {
if (inDropElements != null) {
Set<QName> 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<Message> {
- protected List<String> inDropElements;
- protected Map<String, String> inElementsMap;
- protected Map<String, String> inAppendMap;
+ private List<String> inDropElements;
+ private Map<String, String> inElementsMap;
+ private Map<String, String> 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<String, String> 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<String, String> mapIn = new HashMap<String, String>();
- mapIn.put("*", "{http://jaxws.jaxrs.systest.cxf.apache.org/}*");
- in.setInTransformElements(mapIn);
-
TransformOutInterceptor out = new TransformOutInterceptor();
Map<String, String> mapOut = new HashMap<String, String>();
- 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<String, String> mapIn = new HashMap<String, String>();
+ // 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<Long, Book> books = new HashMap<Long, Book>();
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"
</property>
<property name="inTransformElements">
<map>
- <entry key="*" value="{http://jaxws.jaxrs.systest.cxf.apache.org/}*"/>
+ <entry key="getBook" value="{http://jaxws.jaxrs.systest.cxf.apache.org/}getBook"/>
</map>
</property>
</bean>