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