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 gd...@apache.org on 2009/02/17 15:10:47 UTC

svn commit: r745088 - in /webservices/axis2/branches/java/1_5/modules: codegen/ codegen/test-resources/wsdls/ codegen/test/org/apache/axis2/wsdl/ codegen/test/org/apache/axis2/wsdl/codegen/ codegen/test/org/apache/axis2/wsdl/codegen/schema/ kernel/src/...

Author: gdaniels
Date: Tue Feb 17 14:10:47 2009
New Revision: 745088

URL: http://svn.apache.org/viewvc?rev=745088&view=rev
Log:
Add some tests for XML -> Java name conversion.  Unit test the JavaUtils stuff in the kernel module, and build a WSDL and confirm the generated code looks right in codegen.

Comment out TCP sender from default axis2.xml (TCP receiver is already commented out).

Added:
    webservices/axis2/branches/java/1_5/modules/codegen/build-wsdls.xml
    webservices/axis2/branches/java/1_5/modules/codegen/test-resources/wsdls/
    webservices/axis2/branches/java/1_5/modules/codegen/test-resources/wsdls/Version.wsdl
    webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/codegen/XML2JavaMappingTest.java
    webservices/axis2/branches/java/1_5/modules/kernel/test/org/apache/axis2/util/JavaUtilsTests.java
Modified:
    webservices/axis2/branches/java/1_5/modules/codegen/pom.xml
    webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/WSDLServiceBuilderTest.java
    webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/codegen/schema/AxisServiceTopElementSchemaGeneratorTest.java
    webservices/axis2/branches/java/1_5/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml

Added: webservices/axis2/branches/java/1_5/modules/codegen/build-wsdls.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_5/modules/codegen/build-wsdls.xml?rev=745088&view=auto
==============================================================================
--- webservices/axis2/branches/java/1_5/modules/codegen/build-wsdls.xml (added)
+++ webservices/axis2/branches/java/1_5/modules/codegen/build-wsdls.xml Tue Feb 17 14:10:47 2009
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License. You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied. See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<project name="itest" basedir=".">
+
+	<target name="wsdl-codegen" unless="test.skip">
+		<!-- Set a property that can be picked up from the ant build.xml's -->
+
+		<echo>Var is ${maven.class.path}</echo>
+
+		<property name="maven.junit.jvmargs" value="" />
+		<path id="maven.dependency.classpath">
+			<path refid="maven.compile.classpath" />
+		</path>
+		<!-- compiling some custom wsdl files -->
+		<property name="wsdl.source.dir" value="test-resources/wsdls" />
+		<property name="wsdl.output.base.dir" value="target/wsdls" />
+		<!-- make the dirs -->
+		<mkdir dir="${wsdl.output.base.dir}" />
+
+		<echo>Compiling Version.wsdl</echo>
+    <delete dir="${wsdl.output.base.dir}/version"/>
+		<mkdir dir="${wsdl.output.base.dir}/version" />
+    <mkdir dir="target/test-classes"/>
+
+		<java fork="yes" classname="org.apache.axis2.wsdl.WSDL2Java" failonerror="yes">
+			<classpath refid="maven.test.classpath" />
+			<classpath location="${compiled.classes.dir}" />
+			<arg line="-ap -o ${wsdl.output.base.dir}/version -d none -s -u -uri test-resources/wsdls/Version.wsdl" />
+		</java>
+		<javac fork="yes" destdir="target/test-classes" debug="on">
+			<classpath refid="maven.test.classpath" />
+			<classpath location="${compiled.classes.dir}" />
+			<src path="${wsdl.output.base.dir}/version" />
+		</javac>
+  </target>
+</project>
\ No newline at end of file

Modified: webservices/axis2/branches/java/1_5/modules/codegen/pom.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_5/modules/codegen/pom.xml?rev=745088&r1=745087&r2=745088&view=diff
==============================================================================
--- webservices/axis2/branches/java/1_5/modules/codegen/pom.xml (original)
+++ webservices/axis2/branches/java/1_5/modules/codegen/pom.xml Tue Feb 17 14:10:47 2009
@@ -33,15 +33,27 @@
     <description>Axis2 Code Generation module</description>
     <dependencies>
         <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-kernel</artifactId>
-            <version>${version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-adb</artifactId>
-            <version>${version}</version>
+          <groupId>${project.groupId}</groupId>
+          <artifactId>axis2-kernel</artifactId>
+          <version>${project.version}</version>
         </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>axis2-adb</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>axis2-transport-local</artifactId>
+        <version>${transport.local.version}</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>axis2-transport-http</artifactId>
+        <version>${transport.http.version}</version>
+        <scope>test</scope>
+      </dependency>
     </dependencies>
     <build>
         <sourceDirectory>src</sourceDirectory>
@@ -94,31 +106,64 @@
             </testResource>
         </testResources>
         <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <inherited>true</inherited>
+            <configuration>
+              <skip>false</skip>
+              <includes>
+                <include>**/*Test.java</include>
+              </includes>
+            </configuration>
+          </plugin>
+
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-antrun-plugin</artifactId>
                 <executions>
-                    <execution>
-                        <id>process-resources</id>
-                        <phase>process-resources</phase>
-                        <configuration>
-                            <tasks>
-                                <tstamp>
-                                    <format property="build.time" pattern="MMM dd, yyyy (hh:mm:ss z)" locale="en"/>
-                                </tstamp>
-                                <copy toDir="${basedir}/target/classes/" overwrite="true" filtering="on">
-                                    <fileset dir="${basedir}/src/" includes="**/*.xsl"/>
-                                    <filterset begintoken="#" endtoken="#">
-                                        <filter token="axisVersion" value="${version}"/>
-                                        <filter token="today" value=" Built on : ${build.time}"/>
-                                    </filterset>
-                                </copy>
-                            </tasks>
-                        </configuration>
-                        <goals>
-                            <goal>run</goal>
-                        </goals>
-                    </execution>
+                  <execution>
+                    <id>generate-test-sources</id>
+                    <phase>generate-test-sources</phase>
+                    <configuration>
+                      <tasks>
+                        <!-- Set a property that can be picked up from the ant build.xml's -->
+                        <property name="maven.class.path" refid="maven.test.classpath"/>
+                        <echo>Building WSDLs...</echo>
+                        <property name="axis2.home" value="${basedir}/../target"/>
+                        <property name="maven.junit.jvmargs" value=""/>
+                        <path id="maven.dependency.classpath">
+                          <path refid="maven.compile.classpath"/>
+                        </path>
+                        <ant antfile="build-wsdls.xml" inheritall="true" inheritrefs="true"
+                             dir="." target="wsdl-codegen"/>
+                      </tasks>
+                    </configuration>
+                    <goals>
+                      <goal>run</goal>
+                    </goals>
+                  </execution>
+                  <execution>
+                    <id>process-resources</id>
+                    <phase>process-resources</phase>
+                    <configuration>
+                      <tasks>
+                        <tstamp>
+                          <format property="build.time" pattern="MMM dd, yyyy (hh:mm:ss z)" locale="en"/>
+                        </tstamp>
+                        <copy toDir="${basedir}/target/classes/" overwrite="true" filtering="on">
+                          <fileset dir="${basedir}/src/" includes="**/*.xsl"/>
+                          <filterset begintoken="#" endtoken="#">
+                            <filter token="axisVersion" value="${version}"/>
+                            <filter token="today" value=" Built on : ${build.time}"/>
+                          </filterset>
+                        </copy>
+                      </tasks>
+                    </configuration>
+                    <goals>
+                      <goal>run</goal>
+                    </goals>
+                  </execution>
                 </executions>
             </plugin>
         </plugins>

Added: webservices/axis2/branches/java/1_5/modules/codegen/test-resources/wsdls/Version.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_5/modules/codegen/test-resources/wsdls/Version.wsdl?rev=745088&view=auto
==============================================================================
--- webservices/axis2/branches/java/1_5/modules/codegen/test-resources/wsdls/Version.wsdl (added)
+++ webservices/axis2/branches/java/1_5/modules/codegen/test-resources/wsdls/Version.wsdl Tue Feb 17 14:10:47 2009
@@ -0,0 +1,109 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License. You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied. See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<wsdl:definitions xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+                  xmlns:ns0="http://axisversion.sample/xsd"
+                  xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
+                  xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+                  xmlns:ns1="http://org.apache.axis2/xsd"
+                  xmlns:xs="http://www.w3.org/2001/XMLSchema"
+                  xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
+                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+                  targetNamespace="http://axisversion.sample/xsd">
+  <wsdl:types>
+    <xs:schema xmlns:ns="http://axisversion.sample/xsd" attributeFormDefault="qualified"
+               elementFormDefault="unqualified" targetNamespace="http://axisversion.sample/xsd">
+      <xs:element name="ExceptionFault">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element minOccurs="0" name="Exception" nillable="true"
+                        type="xs:anyType"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="getVersionResponse">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:schema>
+  </wsdl:types>
+  <wsdl:message name="getVersionRequest"/>
+  <wsdl:message name="getVersionResponse">
+    <wsdl:part name="parameters" element="ns0:getVersionResponse"/>
+  </wsdl:message>
+  <wsdl:message name="getVersionFault">
+    <wsdl:part name="parameters" element="ns0:ExceptionFault"/>
+  </wsdl:message>
+  <wsdl:portType name="VersionPortType">
+    <wsdl:operation name="getVersion">
+      <wsdl:input message="ns0:getVersionRequest" wsaw:Action="urn:getVersion"/>
+      <wsdl:output message="ns0:getVersionResponse" wsaw:Action="urn:getVersionResponse"/>
+      <wsdl:fault message="ns0:getVersionFault" name="getVersionFault"
+                  wsaw:Action="urn:getVersionFault"/>
+    </wsdl:operation>
+
+    <!-- This should turn into "fooBar()" -->
+    <wsdl:operation name="foo-bar">
+      <wsdl:input message="getVersionRequest"/>
+    </wsdl:operation>
+
+    <!-- This should turn into "fooBaR2()" -->
+    <wsdl:operation name="Foo-ba.r2">
+      <wsdl:input message="getVersionRequest"/>
+    </wsdl:operation>
+
+  </wsdl:portType>
+  <wsdl:binding name="VersionSOAP11Binding" type="ns0:VersionPortType">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+    <wsdl:operation name="getVersion">
+      <soap:operation soapAction="urn:getVersion" style="document"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal"/>
+      </wsdl:output>
+      <wsdl:fault name="getVersionFault">
+        <soap:fault use="literal" name="getVersionFault"/>
+      </wsdl:fault>
+    </wsdl:operation>
+    <wsdl:operation name="foo-bar">
+      <soap:operation soapAction="urn:foo-bar" style="document"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+    </wsdl:operation>
+    <wsdl:operation name="Foo-ba.r2">
+      <soap:operation soapAction="urn:foo-bar" style="document"/>
+      <wsdl:input>
+        <soap:body use="literal"/>
+      </wsdl:input>
+    </wsdl:operation>
+
+  </wsdl:binding>
+  <wsdl:service name="Version">
+    <wsdl:port name="VersionSOAP11port_http" binding="ns0:VersionSOAP11Binding">
+      <soap:address location="http://127.0.0.1:8000/axis2/services/Version"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
\ No newline at end of file

Modified: webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/WSDLServiceBuilderTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/WSDLServiceBuilderTest.java?rev=745088&r1=745087&r2=745088&view=diff
==============================================================================
--- webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/WSDLServiceBuilderTest.java (original)
+++ webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/WSDLServiceBuilderTest.java Tue Feb 17 14:10:47 2009
@@ -55,13 +55,12 @@
         outLocation.mkdirs();
         if (testResourceFile.exists()) {
             File files [] = testResourceFile.listFiles();
-            for (int i = 0; i < files.length; i++) {
-                File file1 = files[i];
+            for (File file1 : files) {
                 if (file1.isFile() && file1.getName().endsWith(".wsdl")) {
                     if (file1.getName().equals("ping-modified.wsdl") ||
-                            file1.getName().equals("ping-unbound.wsdl") ||
-                            file1.getName().equals("wsat.wsdl") ||
-                            file1.getName().equals("no-service.wsdl")) {
+                        file1.getName().equals("ping-unbound.wsdl") ||
+                        file1.getName().equals("wsat.wsdl") ||
+                        file1.getName().equals("no-service.wsdl")) {
                         continue;
                     }
                     try {

Added: webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/codegen/XML2JavaMappingTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/codegen/XML2JavaMappingTest.java?rev=745088&view=auto
==============================================================================
--- webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/codegen/XML2JavaMappingTest.java (added)
+++ webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/codegen/XML2JavaMappingTest.java Tue Feb 17 14:10:47 2009
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2007, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.axis2.wsdl.codegen;
+
+import junit.framework.TestCase;
+
+public class XML2JavaMappingTest extends TestCase {
+    public void testVersion() throws Exception {
+        Class iface = Class.forName("sample.axisversion.xsd.Version");
+        assertNotNull(iface.getMethod("getVersion"));
+        assertNotNull(iface.getMethod("fooBar"));
+        assertNotNull(iface.getMethod("fooBaR2"));
+        boolean caughtException = false;
+        try {
+            iface.getMethod("foobar2");
+        } catch (NoSuchMethodException e) {
+            caughtException = true;
+        }
+        assertTrue("Didn't catch expected Exception!", caughtException);
+    }
+}

Modified: webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/codegen/schema/AxisServiceTopElementSchemaGeneratorTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/codegen/schema/AxisServiceTopElementSchemaGeneratorTest.java?rev=745088&r1=745087&r2=745088&view=diff
==============================================================================
--- webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/codegen/schema/AxisServiceTopElementSchemaGeneratorTest.java (original)
+++ webservices/axis2/branches/java/1_5/modules/codegen/test/org/apache/axis2/wsdl/codegen/schema/AxisServiceTopElementSchemaGeneratorTest.java Tue Feb 17 14:10:47 2009
@@ -21,19 +21,16 @@
 
 import junit.framework.TestCase;
 import org.apache.axis2.namespace.Constants;
-import org.apache.axis2.wsdl.codegen.schema.exception.DummySchemaGenerationException;
 
 import javax.xml.namespace.QName;
 import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 
 public class AxisServiceTopElementSchemaGeneratorTest extends TestCase {
 
-    public void testSchemaGeneration(){
+    public void testSchemaGeneration() throws Exception {
 
         AxisServiceTopElementSchemaGenerator schemaGenerator = new AxisServiceTopElementSchemaGenerator(null);
 
@@ -61,19 +58,12 @@
         topElement.setTypeQName(new QName("http://test2.com","testComplexType2"));
         topElements.add(topElement);
 
-
         Map schemaMap = schemaGenerator.getSchemaMap(topElements);
-        try {
-            List xmlSchemaList = schemaGenerator.getXmlSchemaList(schemaMap);
-            org.apache.ws.commons.schema.XmlSchema xmlSchema;
-            for (Iterator iter = xmlSchemaList.iterator();iter.hasNext();){
-                xmlSchema = (org.apache.ws.commons.schema.XmlSchema) iter.next();
-//                xmlSchema.write(System.out);
-            }
-        } catch (DummySchemaGenerationException e) {
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-        }
+        schemaGenerator.getXmlSchemaList(schemaMap);
 
+//        List xmlSchemaList = schemaGenerator.getXmlSchemaList(schemaMap);
+//        for (Object aXmlSchemaList : xmlSchemaList) {
+//            ((org.apache.ws.commons.schema.XmlSchema)aXmlSchemaList).write(System.out);
+//        }
     }
-
 }

Modified: webservices/axis2/branches/java/1_5/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_5/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml?rev=745088&r1=745087&r2=745088&view=diff
==============================================================================
--- webservices/axis2/branches/java/1_5/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml (original)
+++ webservices/axis2/branches/java/1_5/modules/kernel/src/org/apache/axis2/deployment/axis2_default.xml Tue Feb 17 14:10:47 2009
@@ -154,13 +154,13 @@
         <!--uncomment following parameter , and set as you required.-->
         <!--<parameter name="hostname">tcp://myApp.com/ws</parameter>-->
     <!--</transportReceiver>-->
+    <!--<transportSender name="tcp"-->
+                   <!--class="org.apache.axis2.transport.tcp.TCPTransportSender"/>-->
 
     <!-- ================================================= -->
     <!-- Transport Outs -->
     <!-- ================================================= -->
 
-    <transportSender name="tcp"
-                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
     <transportSender name="local"
                      class="org.apache.axis2.transport.local.LocalTransportSender"/>
     <transportSender name="http"

Added: webservices/axis2/branches/java/1_5/modules/kernel/test/org/apache/axis2/util/JavaUtilsTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_5/modules/kernel/test/org/apache/axis2/util/JavaUtilsTests.java?rev=745088&view=auto
==============================================================================
--- webservices/axis2/branches/java/1_5/modules/kernel/test/org/apache/axis2/util/JavaUtilsTests.java (added)
+++ webservices/axis2/branches/java/1_5/modules/kernel/test/org/apache/axis2/util/JavaUtilsTests.java Tue Feb 17 14:10:47 2009
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2007, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.axis2.util;
+
+import junit.framework.TestCase;
+
+public class JavaUtilsTests extends TestCase {
+    public void testXMLNameMapping() throws Exception {
+        /* Begin TABLE 20-2 Illustrative Examples from JAXRPC Spec */
+        assertEquals("mixedCaseName", JavaUtils.xmlNameToJavaIdentifier("mixedCaseName"));
+
+        assertEquals("nameWithDashes", JavaUtils.xmlNameToJavaIdentifier("name-with-dashes"));
+
+        assertEquals("name_with_underscore", JavaUtils.xmlNameToJavaIdentifier("name_with_underscore"));
+
+        assertEquals("other_punctChars", JavaUtils.xmlNameToJavaIdentifier("other_punct.chars"));
+
+        assertEquals("answer42", JavaUtils.xmlNameToJavaIdentifier("Answer42"));
+        /* End TABLE 20-2 Illustrative Examples from JAXRPC Spec */
+
+        assertEquals("nameWithDashes",
+                JavaUtils.xmlNameToJavaIdentifier("name-with-dashes"));
+
+        assertEquals("otherPunctChars",
+                JavaUtils.xmlNameToJavaIdentifier("other.punct\u00B7chars"));
+
+        assertEquals("answer42", JavaUtils.xmlNameToJavaIdentifier("Answer42"));
+
+//        assertEquals("\u2160Foo", JavaUtils.xmlNameToJavaIdentifier("\u2160foo"));
+
+        assertEquals("foo", JavaUtils.xmlNameToJavaIdentifier("2foo"));
+
+        //assertEquals("_Foo_", JavaUtils.xmlNameToJavaIdentifier("_foo_"));
+        assertEquals("_foo_", JavaUtils.xmlNameToJavaIdentifier("_foo_"));
+
+        assertEquals("foobar", JavaUtils.xmlNameToJavaIdentifier("--foobar--"));
+
+        assertEquals("foo22Bar", JavaUtils.xmlNameToJavaIdentifier("foo22bar"));
+
+        assertEquals("foo\u2160Bar", JavaUtils.xmlNameToJavaIdentifier("foo\u2160bar"));
+
+        assertEquals("fooBar", JavaUtils.xmlNameToJavaIdentifier("foo-bar"));
+
+        assertEquals("fooBar", JavaUtils.xmlNameToJavaIdentifier("foo.bar"));
+
+        assertEquals("fooBar", JavaUtils.xmlNameToJavaIdentifier("foo:bar"));
+
+        //assertEquals("foo_Bar", JavaUtils.xmlNameToJavaIdentifier("foo_bar"));
+        assertEquals("foo_bar", JavaUtils.xmlNameToJavaIdentifier("foo_bar"));
+
+        assertEquals("fooBar", JavaUtils.xmlNameToJavaIdentifier("foo\u00B7bar"));
+
+        assertEquals("fooBar", JavaUtils.xmlNameToJavaIdentifier("foo\u0387bar"));
+
+        assertEquals("fooBar", JavaUtils.xmlNameToJavaIdentifier("foo\u06DDbar"));
+
+        assertEquals("fooBar", JavaUtils.xmlNameToJavaIdentifier("foo\u06DEbar"));
+
+        assertEquals("fooBar", JavaUtils.xmlNameToJavaIdentifier("FooBar"));
+
+//        assertEquals("FOOBar", JavaUtils.xmlNameToJavaIdentifier("FOOBar"));
+
+        assertEquals("a1BBB", JavaUtils.xmlNameToJavaIdentifier("A1-BBB"));
+
+//        assertEquals("ABBB", JavaUtils.xmlNameToJavaIdentifier("A-BBB"));
+
+//        assertEquals("ACCC", JavaUtils.xmlNameToJavaIdentifier("ACCC"));
+
+
+        // the following cases are ambiguous in JSR-101
+        assertEquals("fooBar", JavaUtils.xmlNameToJavaIdentifier("foo bar"));
+        assertEquals("_1", JavaUtils.xmlNameToJavaIdentifier("-"));
+
+        assertEquals("_abstract", JavaUtils.xmlNameToJavaIdentifier("abstract"));
+    }
+}