You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by ve...@apache.org on 2010/06/09 00:05:41 UTC
svn commit: r952840 - in /webservices/commons/trunk/modules/axiom/modules:
axiom-api/src/main/java/org/apache/axiom/ext/stax/
axiom-api/src/main/java/org/apache/axiom/util/stax/
axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/ axiom-api/src/...
Author: veithen
Date: Tue Jun 8 22:05:41 2010
New Revision: 952840
URL: http://svn.apache.org/viewvc?rev=952840&view=rev
Log:
WSCOMMONS-518 / AXIS2-4603: Only allow unwrapping of selected XMLStreamReader wrappers and use a specialized API (XOPUtils#getXOPEncodedStream) to unwrap XOPDecodingStreamReader.
Added:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/ext/stax/DelegatingXMLStreamReader.java
- copied, changed from r949515, webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/wrapper/XMLStreamReaderContainer.java
Removed:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/wrapper/XMLStreamReaderContainer.java
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/DisallowDoctypeDeclStreamReaderWrapper.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/NamespaceContextCorrectingXMLStreamReaderWrapper.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/SJSXPStreamReaderWrapper.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/WoodstoxStreamReaderWrapper.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXPStreamReaderWrapper.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/wrapper/XMLStreamReaderWrapper.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/xop/XOPEncodingStreamReader.java
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java
Copied: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/ext/stax/DelegatingXMLStreamReader.java (from r949515, webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/wrapper/XMLStreamReaderContainer.java)
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/ext/stax/DelegatingXMLStreamReader.java?p2=webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/ext/stax/DelegatingXMLStreamReader.java&p1=webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/wrapper/XMLStreamReaderContainer.java&r1=949515&r2=952840&rev=952840&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/wrapper/XMLStreamReaderContainer.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/ext/stax/DelegatingXMLStreamReader.java Tue Jun 8 22:05:41 2010
@@ -16,23 +16,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.axiom.util.stax.wrapper;
+package org.apache.axiom.ext.stax;
import javax.xml.stream.XMLStreamReader;
/**
- * Marker interface for Axiom {@link XMLStreamReader} classes that
- * wrap or delegate to another (parent) XMLStreamReader.
+ * Interface implemented by {@link XMLStreamReader} classes that delegate to another stream reader
+ * and that can be safely unwrapped.
* <p>
- * The marker interface is necessary so that consumers
- * can access the original parser.
+ * This interface gives access to the parent reader, i.e. it allows to unwrap a stream reader
+ * wrapper. It should be noted that in general, unwrapping a wrapper and accessing the parent object
+ * is not a safe operation because it may invalidate the state of the wrapper (which may still be
+ * used later). Therefore this interface must only be implemented by {@link XMLStreamReader} classes
+ * for which unwrapping is a safe operation. In particular, this interface should not be implemented
+ * by wrappers that alter the sequence of events produced by the stream reader.
* <p>
- * Note that the only the {@link #getParent()} method is applicable.
- * Please do not add a <code>setParent()</code> method since that would
- * violate the immutable characteristic of the {@link XMLStreamReaderWrapper}.
- *
- * @see org.apache.axiom.util.stax.XMLStreamReaderUtils
+ * This interface is used by
+ * {@link org.apache.axiom.util.stax.XMLStreamReaderUtils#getOriginalXMLStreamReader(XMLStreamReader)}
+ * to get access to the original parser.
*/
-public interface XMLStreamReaderContainer {
+public interface DelegatingXMLStreamReader extends XMLStreamReader {
XMLStreamReader getParent();
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java?rev=952840&r1=952839&r2=952840&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/XMLStreamReaderUtils.java Tue Jun 8 22:05:41 2010
@@ -29,13 +29,13 @@ import javax.xml.stream.XMLStreamExcepti
import javax.xml.stream.XMLStreamReader;
import org.apache.axiom.ext.stax.CharacterDataReader;
+import org.apache.axiom.ext.stax.DelegatingXMLStreamReader;
import org.apache.axiom.ext.stax.datahandler.DataHandlerReader;
import org.apache.axiom.util.activation.EmptyDataSource;
import org.apache.axiom.util.base64.Base64DecodingOutputStreamWriter;
import org.apache.axiom.util.blob.BlobDataSource;
import org.apache.axiom.util.blob.MemoryBlob;
import org.apache.axiom.util.blob.WritableBlob;
-import org.apache.axiom.util.stax.wrapper.XMLStreamReaderContainer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -189,8 +189,8 @@ public class XMLStreamReaderUtils {
String clsName = (parser != null) ? parser.getClass().toString() : "null";
log.debug("Entry getOriginalXMLStreamReader: " + clsName);
}
- while (parser instanceof XMLStreamReaderContainer) {
- parser = ((XMLStreamReaderContainer) parser).getParent();
+ while (parser instanceof DelegatingXMLStreamReader) {
+ parser = ((DelegatingXMLStreamReader) parser).getParent();
if (log.isDebugEnabled()) {
String clsName = (parser != null) ? parser.getClass().toString() : "null";
log.debug(" parent: " + clsName);
@@ -202,38 +202,4 @@ public class XMLStreamReaderUtils {
}
return parser;
}
-
- /**
- * Searches the wrapper and delegate classes to find an
- * {@link XMLStreamReader} of a given type.
- *
- * @param parser
- * the object to extract the wrapped reader from
- * @param type
- * the type of reader to search for
- * @return the first {@link XMLStreamReader} of the given type in the chain
- * of wrappers, or <code>null</code> if no such reader was found
- */
- public static XMLStreamReader getWrappedXMLStreamReader(XMLStreamReader parser, Class type) {
- if (log.isDebugEnabled()) {
- String clsName = (parser != null) ? parser.getClass().toString() : "null";
- log.debug("Entry getWrappedXMLStreamReader: " + clsName);
- }
- while (!type.isInstance(parser) &&
- (parser instanceof XMLStreamReaderContainer)) {
- parser = ((XMLStreamReaderContainer) parser).getParent();
- if (log.isDebugEnabled()) {
- String clsName = (parser != null) ? parser.getClass().toString() : "null";
- log.debug(" parent: " + clsName);
- }
- }
- if (!type.isInstance(parser)) {
- parser = null;
- }
- if (log.isDebugEnabled()) {
- String clsName = (parser != null) ? parser.getClass().toString() : "null";
- log.debug("Exit getWrappedXMLStreamReader: " + clsName);
- }
- return parser;
- }
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java?rev=952840&r1=952839&r2=952840&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java Tue Jun 8 22:05:41 2010
@@ -25,10 +25,11 @@ import javax.xml.namespace.NamespaceCont
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import org.apache.axiom.ext.stax.DelegatingXMLStreamReader;
import org.apache.axiom.util.namespace.AbstractNamespaceContext;
import org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper;
-class BEAStreamReaderWrapper extends XMLStreamReaderWrapper {
+class BEAStreamReaderWrapper extends XMLStreamReaderWrapper implements DelegatingXMLStreamReader {
/**
* The character set encoding as inferred from the start bytes of the stream.
*/
@@ -158,4 +159,8 @@ class BEAStreamReaderWrapper extends XML
}
};
}
+
+ public XMLStreamReader getParent() {
+ return super.getParent();
+ }
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/DisallowDoctypeDeclStreamReaderWrapper.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/DisallowDoctypeDeclStreamReaderWrapper.java?rev=952840&r1=952839&r2=952840&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/DisallowDoctypeDeclStreamReaderWrapper.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/DisallowDoctypeDeclStreamReaderWrapper.java Tue Jun 8 22:05:41 2010
@@ -22,9 +22,10 @@ package org.apache.axiom.util.stax.diale
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import org.apache.axiom.ext.stax.DelegatingXMLStreamReader;
import org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper;
-class DisallowDoctypeDeclStreamReaderWrapper extends XMLStreamReaderWrapper {
+class DisallowDoctypeDeclStreamReaderWrapper extends XMLStreamReaderWrapper implements DelegatingXMLStreamReader {
public DisallowDoctypeDeclStreamReaderWrapper(XMLStreamReader parent) {
super(parent);
}
@@ -36,4 +37,8 @@ class DisallowDoctypeDeclStreamReaderWra
}
return event;
}
+
+ public XMLStreamReader getParent() {
+ return super.getParent();
+ }
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/NamespaceContextCorrectingXMLStreamReaderWrapper.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/NamespaceContextCorrectingXMLStreamReaderWrapper.java?rev=952840&r1=952839&r2=952840&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/NamespaceContextCorrectingXMLStreamReaderWrapper.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/NamespaceContextCorrectingXMLStreamReaderWrapper.java Tue Jun 8 22:05:41 2010
@@ -23,6 +23,7 @@ import javax.xml.namespace.NamespaceCont
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import org.apache.axiom.ext.stax.DelegatingXMLStreamReader;
import org.apache.axiom.util.namespace.ScopedNamespaceContext;
import org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper;
@@ -35,7 +36,7 @@ import org.apache.axiom.util.stax.wrappe
* {@link XMLStreamReader#getNamespaceContext()} and {@link XMLStreamReader#getNamespaceURI(String)}
* methods. Invocations of these two methods will therefore never reach the underlying reader.
*/
-class NamespaceContextCorrectingXMLStreamReaderWrapper extends XMLStreamReaderWrapper {
+class NamespaceContextCorrectingXMLStreamReaderWrapper extends XMLStreamReaderWrapper implements DelegatingXMLStreamReader {
private final ScopedNamespaceContext namespaceContext = new ScopedNamespaceContext();
/**
@@ -84,4 +85,8 @@ class NamespaceContextCorrectingXMLStrea
public String getNamespaceURI(String prefix) {
return namespaceContext.getNamespaceURI(prefix);
}
+
+ public XMLStreamReader getParent() {
+ return super.getParent();
+ }
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/SJSXPStreamReaderWrapper.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/SJSXPStreamReaderWrapper.java?rev=952840&r1=952839&r2=952840&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/SJSXPStreamReaderWrapper.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/SJSXPStreamReaderWrapper.java Tue Jun 8 22:05:41 2010
@@ -24,9 +24,10 @@ import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import org.apache.axiom.ext.stax.DelegatingXMLStreamReader;
import org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper;
-class SJSXPStreamReaderWrapper extends XMLStreamReaderWrapper {
+class SJSXPStreamReaderWrapper extends XMLStreamReaderWrapper implements DelegatingXMLStreamReader {
public SJSXPStreamReaderWrapper(XMLStreamReader parent) {
super(parent);
}
@@ -143,4 +144,8 @@ class SJSXPStreamReaderWrapper extends X
public NamespaceContext getNamespaceContext() {
return new SJSXPNamespaceContextWrapper(super.getNamespaceContext());
}
+
+ public XMLStreamReader getParent() {
+ return super.getParent();
+ }
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/WoodstoxStreamReaderWrapper.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/WoodstoxStreamReaderWrapper.java?rev=952840&r1=952839&r2=952840&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/WoodstoxStreamReaderWrapper.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/WoodstoxStreamReaderWrapper.java Tue Jun 8 22:05:41 2010
@@ -20,9 +20,10 @@ package org.apache.axiom.util.stax.diale
import javax.xml.stream.XMLStreamReader;
+import org.apache.axiom.ext.stax.DelegatingXMLStreamReader;
import org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper;
-class WoodstoxStreamReaderWrapper extends XMLStreamReaderWrapper {
+class WoodstoxStreamReaderWrapper extends XMLStreamReaderWrapper implements DelegatingXMLStreamReader {
public WoodstoxStreamReaderWrapper(XMLStreamReader reader) {
super(reader);
}
@@ -74,4 +75,8 @@ class WoodstoxStreamReaderWrapper extend
// This addresses WSTX-201:
return getEventType() == CHARACTERS;
}
+
+ public XMLStreamReader getParent() {
+ return super.getParent();
+ }
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXPStreamReaderWrapper.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXPStreamReaderWrapper.java?rev=952840&r1=952839&r2=952840&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXPStreamReaderWrapper.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXPStreamReaderWrapper.java Tue Jun 8 22:05:41 2010
@@ -21,9 +21,10 @@ package org.apache.axiom.util.stax.diale
import javax.xml.stream.XMLStreamReader;
+import org.apache.axiom.ext.stax.DelegatingXMLStreamReader;
import org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper;
-class XLXPStreamReaderWrapper extends XMLStreamReaderWrapper {
+class XLXPStreamReaderWrapper extends XMLStreamReaderWrapper implements DelegatingXMLStreamReader {
public XLXPStreamReaderWrapper(XMLStreamReader parent) {
super(parent);
}
@@ -32,4 +33,8 @@ class XLXPStreamReaderWrapper extends XM
// XLXP returns true for SPACE events as well; this is not correct
return getEventType() == CHARACTERS;
}
+
+ public XMLStreamReader getParent() {
+ return super.getParent();
+ }
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/wrapper/XMLStreamReaderWrapper.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/wrapper/XMLStreamReaderWrapper.java?rev=952840&r1=952839&r2=952840&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/wrapper/XMLStreamReaderWrapper.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/wrapper/XMLStreamReaderWrapper.java Tue Jun 8 22:05:41 2010
@@ -31,7 +31,7 @@ import javax.xml.stream.XMLStreamReader;
* similar to {@link javax.xml.stream.util.StreamReaderDelegate}, with the difference that it is
* immutable.
*/
-public class XMLStreamReaderWrapper implements XMLStreamReader, XMLStreamReaderContainer {
+public class XMLStreamReaderWrapper implements XMLStreamReader {
private final XMLStreamReader parent;
/**
@@ -44,11 +44,15 @@ public class XMLStreamReaderWrapper impl
}
/**
- * Get Parent
- * Note that setParent is intentionally omitted. XMLStreamReaderWrapper is immutable.
- * @return XMLStreamReader parent
+ * Get the parent stream reader. This method is declared as protected because it should only be
+ * used by subclasses. However, stream reader wrappers that can safely be unwrapped may
+ * implement the {@link org.apache.axiom.ext.stax.DelegatingXMLStreamReader} interface to make
+ * this a public method. Note that a corresponding <code>setParent</code> method is
+ * intentionally omitted because {@link XMLStreamReaderWrapper} is immutable.
+ *
+ * @return XMLStreamReader the parent (wrapped) stream reader
*/
- public XMLStreamReader getParent() {
+ protected XMLStreamReader getParent() {
return parent;
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/xop/XOPEncodingStreamReader.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/xop/XOPEncodingStreamReader.java?rev=952840&r1=952839&r2=952840&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/xop/XOPEncodingStreamReader.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/xop/XOPEncodingStreamReader.java Tue Jun 8 22:05:41 2010
@@ -33,7 +33,6 @@ import javax.xml.stream.XMLStreamExcepti
import javax.xml.stream.XMLStreamReader;
import org.apache.axiom.ext.stax.datahandler.DataHandlerReader;
-import org.apache.axiom.util.stax.wrapper.XMLStreamReaderContainer;
/**
* {@link XMLStreamReader} wrapper that encodes XOP. It assumes that the underlying reader
@@ -53,8 +52,7 @@ import org.apache.axiom.util.stax.wrappe
* This class defers loading of {@link DataHandler} objects until {@link #getDataHandler(String)} is
* called, except if this is not supported by the underlying stream.
*/
-public class XOPEncodingStreamReader extends XOPEncodingStreamWrapper
- implements XMLStreamReader, XMLStreamReaderContainer {
+public class XOPEncodingStreamReader extends XOPEncodingStreamWrapper implements XMLStreamReader {
/**
* Wrapper that adds the XOP namespace to another namespace context.
*/
@@ -532,8 +530,4 @@ public class XOPEncodingStreamReader ext
default: return parent.isEndElement();
}
}
-
- public XMLStreamReader getParent() {
- return parent;
- }
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java?rev=952840&r1=952839&r2=952840&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java Tue Jun 8 22:05:41 2010
@@ -106,19 +106,19 @@ public class MTOMStAXSOAPModelBuilderTes
builder.setCache(false);
XMLStreamReader reader = (XMLStreamReader) builder.getParser();
- XMLStreamReader original = XMLStreamReaderUtils.getOriginalXMLStreamReader(reader);
-
- // The streaming parser is wrapped by a SafeXMLStreamReader and dialect readers.
- // Thus the reader and original readers will not be the same.
- assertTrue(reader != original);
-
- // The streaming parser will not have access to the attachments. Thus this will
- // return null
- XMLStreamReader attachmentAccessor =
- XMLStreamReaderUtils.getWrappedXMLStreamReader(reader, OMAttachmentAccessor.class);
-
- assertTrue(attachmentAccessor == null);
+ // For an MTOM message, the reader is actually an XOPDecodingStreamReader. This one
+ // cannot be unwrapped by getOriginalXMLStreamReader
+ assertSame(reader, XMLStreamReaderUtils.getOriginalXMLStreamReader(reader));
+
+ // To get access to the original reader, we first need to unwrap the
+ // XOPDecodingStreamReader using XOPUtils
+ XMLStreamReader encodedReader = XOPUtils.getXOPEncodedStream(reader).getReader();
+ assertTrue(encodedReader != reader);
+
+ // Now we can get to the original parser
+ XMLStreamReader original = XMLStreamReaderUtils.getOriginalXMLStreamReader(encodedReader);
+ assertTrue(!original.getClass().getName().startsWith("org.apache.axiom."));
}
public void testAccessToCachedParser() throws Exception {
@@ -129,13 +129,6 @@ public class MTOMStAXSOAPModelBuilderTes
// The caching parser will be an OMStaXWrapper.
assertTrue(original instanceof OMStAXWrapper);
-
- XMLStreamReader attachmentAccessor =
- XMLStreamReaderUtils.getWrappedXMLStreamReader(reader, OMAttachmentAccessor.class);
-
- // Thus the attachmentAccessor should also be the OMStaXWrapper
- assertTrue(attachmentAccessor instanceof OMStAXWrapper);
-
}
public void testCreateOMElement() throws Exception {