Title: [1014] trunk/components/base/src/main/java/org/servicemix/components/xfire/XMarshaler.java: Fix possible exception when creating a XMLStreamReader from a DOM source
- Revision
- 1014
- Author
- gnt
- Date
- 2005-12-05 18:33:03 -0500 (Mon, 05 Dec 2005)
Log Message
Fix possible exception when creating a XMLStreamReader from a DOM source
Modified Paths
Diff
Modified: trunk/components/base/src/main/java/org/servicemix/components/xfire/XMarshaler.java (1013 => 1014)
--- trunk/components/base/src/main/java/org/servicemix/components/xfire/XMarshaler.java 2005-12-05 20:42:13 UTC (rev 1013)
+++ trunk/components/base/src/main/java/org/servicemix/components/xfire/XMarshaler.java 2005-12-05 23:33:03 UTC (rev 1014)
@@ -17,6 +17,7 @@
**/
package org.servicemix.components.xfire;
+import java.io.InputStream;
import java.io.Writer;
import javax.jbi.messaging.MessageExchange;
@@ -28,8 +29,10 @@
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import javax.xml.transform.Source;
+import javax.xml.transform.TransformerException;
import org.codehaus.xfire.exchange.OutMessage;
+import org.servicemix.jbi.jaxp.SourceTransformer;
import org.servicemix.jbi.jaxp.StringSource;
import com.ctc.wstx.stax.WstxInputFactory;
@@ -53,9 +56,15 @@
message.setContent(new StringSource(xml));
}
- public XMLStreamReader createStreamReader(NormalizedMessage message) throws XMLStreamException {
+ public XMLStreamReader createStreamReader(NormalizedMessage message) throws XMLStreamException, TransformerException {
Source content = message.getContent();
- return getInputFactory().createXMLStreamReader(content);
+ try {
+ return getInputFactory().createXMLStreamReader(content);
+ } catch (XMLStreamException e) {
+ // Such features can be not supported, depending on the source type
+ InputStream is = new SourceTransformer().toStreamSource(content).getInputStream();
+ return getInputFactory().createXMLStreamReader(is);
+ }
}