gdaniels 02/03/27 10:29:08
Modified: java/src/org/apache/axis/utils JavaUtils.java
java/test/utils TestJavaUtils.java
Log:
Fix xmlToJavaName() to correctly deal with cases where punctuation (i.e.
"_") starts an identifier that has multiple capital letters. "_OID" should map
to "OID", not "oID".
Add a unit test for this.
Revision Changes Path
1.37 +3 -1 xml-axis/java/src/org/apache/axis/utils/JavaUtils.java
Index: JavaUtils.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/JavaUtils.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- JavaUtils.java 27 Mar 2002 17:53:07 -0000 1.36
+++ JavaUtils.java 27 Mar 2002 18:29:08 -0000 1.37
@@ -558,10 +558,12 @@
// The mapping indicates to convert first
// character.
int i = 0;
+ int firstRealChar = 0;
while (i < nameLen
&& (isPunctuation(nameArray[i])
|| !Character.isJavaIdentifierStart(nameArray[i]))) {
i++;
+ firstRealChar++;
}
if (i < nameLen) {
// I've got to check for uppercaseness before lowercasing
@@ -572,7 +574,7 @@
// Don't lowercase if this is the first character and the 2nd
// character is also uppercase, to follow Introspector rules.
if (Character.isUpperCase(nameArray[i]) &&
- ((i != 0) ||
+ ((i != firstRealChar) ||
(nameLen > 1 && Character.isLowerCase(nameArray[1])))) {
result.append(Character.toLowerCase(nameArray[i]));
}
1.4 +1 -0 xml-axis/java/test/utils/TestJavaUtils.java
Index: TestJavaUtils.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/utils/TestJavaUtils.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestJavaUtils.java 18 Mar 2002 04:01:48 -0000 1.3
+++ TestJavaUtils.java 27 Mar 2002 18:29:08 -0000 1.4
@@ -47,6 +47,7 @@
assertEquals("fooBar", JavaUtils.xmlNameToJava("foo\u06DEbar"));
assertEquals("fooBar", JavaUtils.xmlNameToJava("FooBar"));
assertEquals("FOOBar", JavaUtils.xmlNameToJava("FOOBar"));
+ assertEquals("FOOBar", JavaUtils.xmlNameToJava("__FOOBar"));
// the following cases are ambiguous in JSR-101
assertEquals("fooBar", JavaUtils.xmlNameToJava("foo bar"));