You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2007/03/18 03:17:50 UTC

svn commit: r519521 - in /webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj: SOAPMessageImpl.java SOAPPartImpl.java

Author: dims
Date: Sat Mar 17 19:17:49 2007
New Revision: 519521

URL: http://svn.apache.org/viewvc?view=rev&rev=519521
Log:
revert previous change to SOAPPart. strip any trailing information in charset

Modified:
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java
    webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java?view=diff&rev=519521&r1=519520&r2=519521
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPMessageImpl.java Sat Mar 17 19:17:49 2007
@@ -507,6 +507,10 @@
                 if ((charset.endsWith("\"") || charset.endsWith("\'"))) {
                     charset = charset.substring(0, charset.length() - 1);
                 }
+                int index = charset.indexOf(';');
+                if(index!=-1){
+                    charset = charset.substring(0, index);
+                }
                 setProperty(SOAPMessage.CHARACTER_SET_ENCODING, charset);
             }
         }

Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java?view=diff&rev=519521&r1=519520&r2=519521
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java Sat Mar 17 19:17:49 2007
@@ -47,6 +47,7 @@
 import org.apache.axiom.om.impl.MTOMConstants;
 import org.apache.axiom.om.impl.dom.factory.OMDOMFactory;
 import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.SOAPFactory;
@@ -377,22 +378,38 @@
         return mimeHeaders.getNonMatchingHeaders(names);
     }
 
-    /**
-     * Sets the content of the <CODE>SOAPEnvelope</CODE> object
-     * with the data from the given <CODE>Source</CODE> object.
-     *
-     * @param source javax.xml.transform.Source</CODE> object with the data to
-     *               be set
-     * @throws SOAPException if there is a problem in
-     *                       setting the source
-     * @see #getContent() getContent()
-     */
     public void setContent(Source source) throws SOAPException {
         this.source = source;
 		try {
-            Result result = new DOMResult(this.envelope.element);
-            Transformer xformer = TransformerFactory.newInstance().newTransformer();
-            xformer.transform(source, result);
+	        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+            InputStream is;
+            if (source instanceof StreamSource) {
+                is = ((StreamSource) source).getInputStream();
+            } else {
+                Result result = new StreamResult(baos);
+                Transformer xformer = TransformerFactory.newInstance().newTransformer();
+                xformer.transform(source, result);
+                is = new ByteArrayInputStream(baos.toByteArray());
+            }
+
+            XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+			XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
+
+			StAXSOAPModelBuilder builder1 = null;
+			if(this.envelope.element.getOMFactory() instanceof SOAP11Factory){
+				builder1 = new StAXSOAPModelBuilder(reader,
+						(SOAP11Factory)this.envelope.element.getOMFactory(),null);
+			}else if(this.envelope.element.getOMFactory() instanceof SOAP12Factory){
+				builder1 = new StAXSOAPModelBuilder(reader,
+						(SOAP12Factory)this.envelope.element.getOMFactory(),null);
+			}
+
+            org.apache.axiom.soap.SOAPEnvelope soapEnvelope = builder1.getSOAPEnvelope();
+            envelope = new SOAPEnvelopeImpl(
+            		(org.apache.axiom.soap.impl.dom.SOAPEnvelopeImpl)soapEnvelope);
+            envelope.element.build();
+            this.document = envelope.getOwnerDocument();
         } catch (TransformerFactoryConfigurationError e) {
             log.error(e);
             throw new SOAPException(e);
@@ -401,7 +418,7 @@
             throw new SOAPException(e);
 		}
     }
-
+    
     /**
      * Returns the content of the SOAPEnvelope as a JAXP <CODE>
      * Source</CODE> object.



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