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