You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2007/04/25 23:34:02 UTC

svn commit: r532492 - /webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java

Author: dims
Date: Wed Apr 25 14:34:01 2007
New Revision: 532492

URL: http://svn.apache.org/viewvc?view=rev&rev=532492
Log:
am getting OMExceptions under some weird conditions, trying to see if serializing the whole saaj envelope into a string and reading it back again works

Modified:
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java?view=diff&rev=532492&r1=532491&r2=532492
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/util/impl/SAAJConverterImpl.java Wed Apr 25 14:34:01 2007
@@ -19,6 +19,7 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.util.StAXUtils;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
 import org.apache.axis2.jaxws.ExceptionFactory;
@@ -26,6 +27,7 @@
 import org.apache.axis2.jaxws.message.util.SAAJConverter;
 import org.apache.axis2.jaxws.message.util.SOAPElementReader;
 import org.apache.axis2.jaxws.utility.SAAJFactory;
+import org.apache.axis2.util.XMLUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -54,6 +56,7 @@
 import javax.xml.transform.stream.StreamResult;
 import java.util.Iterator;
 import java.io.ByteArrayOutputStream;
+import java.io.ByteArrayInputStream;
 
 /** SAAJConverterImpl Provides an conversion methods between OM<->SAAJ */
 public class SAAJConverterImpl implements SAAJConverter {
@@ -129,21 +132,36 @@
         try {
             omEnvelope.build();
         } catch (OMException ex){
-            log.info("Got OMException for [" + toString(saajEnvelope) + "]");
-            throw ex;
+            try {
+                // Let's try to see if we can save the envelope as a string
+                // and then make it into axiom SOAPEnvelope
+                return toOM(toString(saajEnvelope));
+            } catch (TransformerException e) {
+                throw ExceptionFactory.makeWebServiceException(e);
+            }
         }
         return omEnvelope;
     }
 
-    private String toString(SOAPEnvelope saajEnvelope) {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        Transformer tf;
+    private org.apache.axiom.soap.SOAPEnvelope toOM(String xml)
+            throws WebServiceException {
+        XMLStreamReader reader;
         try {
-            tf = TransformerFactory.newInstance().newTransformer();
-            tf.transform(new DOMSource(saajEnvelope.getOwnerDocument()), new StreamResult(baos));
-        } catch (TransformerException e) {
-            log.info(e);
+            reader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(xml.getBytes()));
+        } catch (XMLStreamException e) {
+            throw ExceptionFactory.makeWebServiceException(e);
         }
+        // Get a SOAP OM Builder.  Passing null causes the version to be automatically triggered
+        StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(reader, null);
+        // Create and return the OM Envelope
+        return builder.getSOAPEnvelope();
+    }
+
+    private String toString(SOAPEnvelope saajEnvelope) throws TransformerException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        Transformer tf;
+        tf = TransformerFactory.newInstance().newTransformer();
+        tf.transform(new DOMSource(saajEnvelope.getOwnerDocument()), new StreamResult(baos));
         return new String(baos.toByteArray());
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org