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/08/01 19:52:56 UTC

svn commit: r561888 - /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java

Author: dims
Date: Wed Aug  1 10:52:53 2007
New Revision: 561888

URL: http://svn.apache.org/viewvc?view=rev&rev=561888
Log:
Fix for AXIS2-3051 - UTF-16 Interop problem

Modified:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java?view=diff&rev=561888&r1=561887&r2=561888
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java Wed Aug  1 10:52:53 2007
@@ -670,7 +670,8 @@
         if ((charsetEncodingFromXML != null)
                 && !"".equals(charsetEncodingFromXML)
                 && (charsetEncodingFromTransport != null)
-                && !charsetEncodingFromXML.equalsIgnoreCase((String) charsetEncodingFromTransport))
+                && !charsetEncodingFromXML.equalsIgnoreCase(charsetEncodingFromTransport)
+                && !isValidPair(charsetEncodingFromXML, charsetEncodingFromTransport))
         {
             String faultCode;
 
@@ -681,8 +682,27 @@
             }
 
             throw new AxisFault("Character Set Encoding from "
-                    + "transport information do not match with "
-                    + "character set encoding in the received SOAP message", faultCode);
+                    + "transport information [" + charsetEncodingFromTransport + "] does not match with "
+                    + "character set encoding in the received SOAP message [" + charsetEncodingFromXML + "]", faultCode);
         }
+    }
+
+    /**
+     * check if the pair is [UTF-16,UTF-16LE] [UTF-32, UTF-32LE],[UTF-16,UTF-16BE] [UTF-32, UTF-32BE] etc.
+     * 
+     * @param enc1
+     * @param enc2
+     * @return
+     */
+    private static boolean isValidPair(String enc1, String enc2) {
+        enc1 = enc1.toLowerCase();
+        enc2 = enc2.toLowerCase();
+        if (enc1.endsWith("be") || enc1.endsWith("le")) {
+            enc1 = enc1.substring(0, enc1.length() - 2);
+        }
+        if (enc2.endsWith("be") || enc2.endsWith("le")) {
+            enc2 = enc2.substring(0, enc2.length() - 2);
+        }
+        return enc1.equals(enc2);
     }
 }



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