Author: sumedha
Date: Mon Jun  4 22:57:54 2007
New Revision: 544393

URL: http://svn.apache.org/viewvc?view=rev&rev=544393
Log:
Fix for AXIS2-2505, honouring character set encoding of the message

Added:
    
webservices/axis2/trunk/java/modules/saaj/test-resources/soap-part-iso-8859-1.xml
Modified:
    
webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/saaj/SOAPPartImpl.java
    
webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/integration/IntegrationTest.java

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=544393&r1=544392&r2=544393
==============================================================================
--- 
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
 Mon Jun  4 22:57:54 2007
@@ -119,6 +119,10 @@
         }
         soapMessage = parentSoapMsg;
 
+        String knownEncoding = (String) 
soapMessage.getProperty(SOAPMessage.CHARACTER_SET_ENCODING);
+        XMLStreamReader xmlReader = null;
+      
+        
         InputStream modifiedInputStream = null;
         StAXSOAPModelBuilder builder = null;
         InputStreamReader isReader = null;
@@ -129,7 +133,8 @@
                 Attachments attachments =
                         new Attachments(inputStream, fullContentTypeStr, 
false, "", "");
                 modifiedInputStream = attachments.getSOAPPartInputStream();
-                isReader = new InputStreamReader(modifiedInputStream);
+                       isReader = new InputStreamReader(modifiedInputStream);
+               
 
                 String soapEnvelopeNamespaceURI =
                         BuilderUtil.getEnvelopeNamespace(fullContentTypeStr);
@@ -173,23 +178,30 @@
             modifiedInputStream = inputStream;
             try {
                 isReader = new InputStreamReader(modifiedInputStream);
+                XMLStreamReader streamReader = null;
+                
+                if(knownEncoding != null){
+                       streamReader = 
StAXUtils.createXMLStreamReader(modifiedInputStream, knownEncoding);
+                }else{
+                       streamReader = 
StAXUtils.createXMLStreamReader(modifiedInputStream);                    
+                }
 
                 if (HTTPConstants.MEDIA_TYPE_TEXT_XML.equals(contentType)) {
-                    builder = new 
StAXSOAPModelBuilder(StAXUtils.createXMLStreamReader(isReader),
+                    builder = new StAXSOAPModelBuilder(streamReader,
                                                        new SOAP11Factory(),
                                                        
SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
 
                 } else if 
(HTTPConstants.MEDIA_TYPE_APPLICATION_SOAP_XML.equals(contentType)) {
-                    builder = new 
StAXSOAPModelBuilder(StAXUtils.createXMLStreamReader(isReader),
+                    builder = new StAXSOAPModelBuilder(streamReader,
                                                        new SOAP12Factory(),
                                                        
SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
 
                 } else if 
(HTTPConstants.MEDIA_TYPE_MULTIPART_RELATED.equals(contentType)) {
-                    builder = new 
StAXSOAPModelBuilder(StAXUtils.createXMLStreamReader(isReader),
+                    builder = new StAXSOAPModelBuilder(streamReader,
                                                        new SOAP11Factory(),
                                                        null);
                 } else {
-                    builder = new 
StAXSOAPModelBuilder(StAXUtils.createXMLStreamReader(isReader),
+                    builder = new StAXSOAPModelBuilder(streamReader,
                                                        new SOAP11Factory(),
                                                        null);
                 }
@@ -204,7 +216,7 @@
             envelope.element.build();
             this.document = envelope.getOwnerDocument();
             javax.xml.transform.Source xmlSource =
-                    new javax.xml.transform.stream.StreamSource(isReader);
+                    new javax.xml.transform.stream.StreamSource( isReader);
             this.source = xmlSource;
         } catch (Exception e) {
             throw new SOAPException(e);

Added: 
webservices/axis2/trunk/java/modules/saaj/test-resources/soap-part-iso-8859-1.xml
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/test-resources/soap-part-iso-8859-1.xml?view=auto&rev=544393
==============================================================================
--- 
webservices/axis2/trunk/java/modules/saaj/test-resources/soap-part-iso-8859-1.xml
 (added)
+++ 
webservices/axis2/trunk/java/modules/saaj/test-resources/soap-part-iso-8859-1.xml
 Mon Jun  4 22:57:54 2007
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
+                  xmlns:xsd="http://www.w3.org/2001/XMLSchema";
+                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
+       <soapenv:Header>
+               <pref:Header1 xmlns:pref="http://test.apach.org/test";>This is 
header1</pref:Header1>
+       </soapenv:Header>
+       <soapenv:Body>
+               <swa2:echo xmlns:swa2="http://fakeNamespace2.org";>
+                       <something>This is some text.Here are some special 
chars : öÆÚ®¤</something>
+               </swa2:echo>
+       </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file

Modified: 
webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/integration/IntegrationTest.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/integration/IntegrationTest.java?view=diff&rev=544393&r1=544392&r2=544393
==============================================================================
--- 
webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/integration/IntegrationTest.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/saaj/test/org/apache/axis2/saaj/integration/IntegrationTest.java
 Mon Jun  4 22:57:54 2007
@@ -28,6 +28,7 @@
 import javax.xml.namespace.QName;
 import javax.xml.soap.AttachmentPart;
 import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeaders;
 import javax.xml.soap.Name;
 import javax.xml.soap.SOAPBody;
 import javax.xml.soap.SOAPBodyElement;
@@ -43,6 +44,7 @@
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.Iterator;
@@ -312,4 +314,33 @@
         final SOAPElement ele2 = bodyElement2.addChildElement(ns4);
         ele2.addTextNode("This is another text");
     }
+    
+    
+    public void testSendReceive_ISO88591_EncodedSOAPMessage() {
+        try{
+               MimeHeaders mimeHeaders = new MimeHeaders();
+            mimeHeaders.addHeader("Content-Type", "text/xml; 
charset=iso-8859-1");
+            
+            FileInputStream fileInputStream = new 
FileInputStream(System.getProperty("basedir", ".") +
+                    "/test-resources" + File.separator + 
"soap-part-iso-8859-1.xml");
+            SOAPMessage requestMessage = 
MessageFactory.newInstance().createMessage(mimeHeaders,fileInputStream);
+            
+
+            SOAPConnection sCon = 
SOAPConnectionFactory.newInstance().createConnection();
+            SOAPMessage response = sCon.call(requestMessage, getAddress());
+            assertFalse(response.getAttachments().hasNext());
+            assertEquals(0, response.countAttachments());
+
+            printSOAPMessage(requestMessage);
+            String responseStr = printSOAPMessage(response);
+            assertTrue(responseStr.indexOf("This is some text.Here are some 
special chars : öÆÚ®¤") != -1);
+            assertTrue(responseStr.indexOf("echo") != -1);
+            sCon.close();
+        } catch (SOAPException e) {
+            e.printStackTrace();
+            fail("Unexpected Exception while running test: " + e);
+        } catch (IOException e) {
+            fail("Unexpected Exception while running test: " + e);
+        }
+    }    
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to