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);
+        }
     }
 
 

Reply via email to