You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2006/01/01 19:13:54 UTC

svn commit: r360507 - in /webservices/axis2/trunk/java/modules: codegen/src/org/apache/axis2/schema/writer/ codegen/src/org/apache/axis2/wsdl/codegen/emitter/ common/src/org/apache/axis2/util/

Author: dims
Date: Sun Jan  1 10:13:49 2006
New Revision: 360507

URL: http://svn.apache.org/viewcvs?rev=360507&view=rev
Log:
clean up class name generation


Modified:
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
    webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/MultiLanguageClientEmitter.java
    webservices/axis2/trunk/java/modules/common/src/org/apache/axis2/util/JavaUtils.java

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java?rev=360507&r1=360506&r2=360507&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java Sun Jan  1 10:13:49 2006
@@ -233,7 +233,7 @@
                 this.packageName + nameSpaceFromURL;
 
         String originalName = qName.getLocalPart();
-        String className = getNonConflictingName(this.namesList, originalName);
+        String className = makeUniqueJavaClassName(this.namesList, originalName);
 
         String packagePrefix = null;
 
@@ -344,14 +344,7 @@
             String xmlName = name.getLocalPart();
             XSLTUtils.addAttribute(model, "name", xmlName, property);
 
-            String javaName;
-            if (JavaUtils.isJavaKeyword(xmlName)) {
-                javaName = JavaUtils.makeNonJavaKeyword(xmlName);
-            } else {
-                javaName = JavaUtils.xmlNameToJava(xmlName, false);
-            }
-
-            javaName = getNonConflictingName(propertyNames, javaName);
+            String javaName = makeUniqueJavaClassName(propertyNames, xmlName);
             XSLTUtils.addAttribute(model, "name", xmlName, property);
             XSLTUtils.addAttribute(model, "javaname", javaName, property);
             String javaClassNameForElement = metainf.getClassNameForQName(name);
@@ -412,26 +405,27 @@
 
 
     /**
-     * gets a non conflicting java name
-     * the comparison with existing classnames need to be
-     * case insensitive, since certain file systems (specifaically
-     * the windows file system) has case insensitive file names)
+     * Given the xml name, make a unique class name taking into account that some
+     * file systems are case sensitive and some are not.
      *
      * @param listOfNames
-     * @param nameBase
+     * @param xmlName
      * @return
      */
-    private String getNonConflictingName(List listOfNames, String nameBase) {
-        String nameToReturn = nameBase;
-        if (JavaUtils.isJavaKeyword(nameToReturn)) {
-            nameToReturn = JavaUtils.makeNonJavaKeyword(nameToReturn);
+    private String makeUniqueJavaClassName(List listOfNames, String xmlName) {
+        String javaName;
+        if (JavaUtils.isJavaKeyword(xmlName)) {
+            javaName = JavaUtils.makeNonJavaKeyword(xmlName);
+        } else {
+            javaName = JavaUtils.capitalizeFirstChar(JavaUtils.xmlNameToJava(xmlName));
         }
-        while (listOfNames.contains(nameToReturn.toLowerCase())) {
-            nameToReturn = nameToReturn + count++;
+
+        while (listOfNames.contains(javaName.toLowerCase())) {
+            javaName = javaName + count++;
         }
 
-        listOfNames.add(nameToReturn.toLowerCase());
-        return nameToReturn;
+        listOfNames.add(javaName.toLowerCase());
+        return javaName;
     }
 
 

Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/MultiLanguageClientEmitter.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/MultiLanguageClientEmitter.java?rev=360507&r1=360506&r2=360507&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/MultiLanguageClientEmitter.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/emitter/MultiLanguageClientEmitter.java Sun Jan  1 10:13:49 2006
@@ -340,14 +340,14 @@
 
     private void updateMapperForStub(WSDLInterface boundInterface){
         String packageName = configuration.getPackageName();
-        String localPart = reformatName(boundInterface.getName().getLocalPart(), false);
+        String localPart = makeJavaClassName(boundInterface.getName().getLocalPart());
         String stubName = localPart + STUB_SUFFIX;
         updateMapperClassnames(boundInterface,packageName + "." + stubName + ".");
     }
 
     private void updateMapperForMessageReceiver(WSDLInterface boundInterface){
         String packageName = configuration.getPackageName();
-        String localPart = reformatName(boundInterface.getName().getLocalPart(), false);
+        String localPart = makeJavaClassName(boundInterface.getName().getLocalPart());
         String stubName = localPart + MESSAGE_RECEIVER_SUFFIX;
         updateMapperClassnames(boundInterface,packageName + "." + stubName + ".");
     }
@@ -576,7 +576,7 @@
                 rootElement);
         addAttribute(doc,
                 "name",
-                reformatName(boundInterface.getName().getLocalPart(), false) +
+                makeJavaClassName(boundInterface.getName().getLocalPart()) +
                         CALL_BACK_HANDLER_SUFFIX,
                 rootElement);
         addAttribute(doc,
@@ -737,7 +737,7 @@
 
         Document doc = getEmptyDocument();
         Element rootElement = doc.createElement("interface");
-        String localPart = reformatName(boundInterface.getName().getLocalPart(), false);
+        String localPart = makeJavaClassName(boundInterface.getName().getLocalPart());
         if (forTesting) {
             addAttribute(doc,
                     "package",
@@ -790,7 +790,7 @@
                 "package",
                 configuration.getPackageName(),
                 rootElement);
-        String localPart = reformatName(boundInterface.getName().getLocalPart(), false);
+        String localPart = makeJavaClassName(boundInterface.getName().getLocalPart());
         addAttribute(doc,
                 "name",
                 localPart + MESSAGE_RECEIVER_SUFFIX,
@@ -843,7 +843,7 @@
 
         Document doc = getEmptyDocument();
         Element rootElement = doc.createElement("ant");
-        String localPart = reformatName(wsdlInterface.getName().getLocalPart(), false);
+        String localPart = makeJavaClassName(wsdlInterface.getName().getLocalPart());
         String packageName = configuration.getPackageName();
         String[] dotSeparatedValues = packageName.split("\\.");
         addAttribute(doc,
@@ -870,7 +870,7 @@
 
         Document doc = getEmptyDocument();
         Element rootElement = doc.createElement("interface");
-        String localPart = reformatName(wsdlInterface.getName().getLocalPart(), false);
+        String localPart = makeJavaClassName(wsdlInterface.getName().getLocalPart());
         addAttribute(doc,
                 "package",
                 configuration.getPackageName(),
@@ -904,7 +904,7 @@
 
         Document doc = getEmptyDocument();
         Element rootElement = doc.createElement("interface");
-        String localpart = reformatName(boundInterface.getName().getLocalPart(), false);
+        String localpart = makeJavaClassName(boundInterface.getName().getLocalPart());
         addAttribute(doc,
                 "package",
                 configuration.getPackageName(),
@@ -963,7 +963,7 @@
                                 WSDLBinding binding) {
 
         Collection col = boundInterface.getOperations().values();
-        String portTypeName = reformatName(boundInterface.getName().getLocalPart(), false);
+        String portTypeName = makeJavaClassName(boundInterface.getName().getLocalPart());
 
         Element methodElement;
         WSDLOperation operation;
@@ -975,7 +975,7 @@
 
             operation = (WSDLOperation) iterator.next();
             methodElement = doc.createElement("method");
-            String localPart = reformatName(operation.getName().getLocalPart(), false);
+            String localPart = makeJavaClassName(operation.getName().getLocalPart());
             addAttribute(doc, "name", localPart, methodElement);
             addAttribute(doc,
                     "namespace",
@@ -1055,7 +1055,7 @@
 
     protected Document createDOMDocumentForTestCase(WSDLBinding binding) {
         WSDLInterface boundInterface = binding.getBoundInterface();
-        String localPart = reformatName(boundInterface.getName().getLocalPart(), false);
+        String localPart = makeJavaClassName(boundInterface.getName().getLocalPart());
         Document doc = getEmptyDocument();
         Element rootElement = doc.createElement("class");
         addAttribute(doc,
@@ -1194,7 +1194,7 @@
         WSDLInterface boundInterface = binding.getBoundInterface();
 
         String packageName = configuration.getPackageName();
-        String localPart = reformatName(boundInterface.getName().getLocalPart(), false);
+        String localPart = makeJavaClassName(boundInterface.getName().getLocalPart());
         String stubName = localPart + STUB_SUFFIX;
 
         HashMap endpoints = new HashMap(1);
@@ -1402,19 +1402,11 @@
      * @param word
      * @return character removed string
      */
-    protected String reformatName(String word) {
-        return reformatName(word, true);
-    }
-
-    /**
-     * @param word
-     * @return character removed string
-     */
-    protected String reformatName(String word, boolean decapitalizaFirst) {
+    protected String makeJavaClassName(String word) {
         if (JavaUtils.isJavaKeyword(word)) {
             return JavaUtils.makeNonJavaKeyword(word);
         } else {
-            return JavaUtils.xmlNameToJava(word, decapitalizaFirst);
+            return JavaUtils.capitalizeFirstChar(JavaUtils.xmlNameToJava(word));
         }
     }
 

Modified: webservices/axis2/trunk/java/modules/common/src/org/apache/axis2/util/JavaUtils.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/common/src/org/apache/axis2/util/JavaUtils.java?rev=360507&r1=360506&r2=360507&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/common/src/org/apache/axis2/util/JavaUtils.java (original)
+++ webservices/axis2/trunk/java/modules/common/src/org/apache/axis2/util/JavaUtils.java Sun Jan  1 10:13:49 2006
@@ -83,10 +83,6 @@
     }
 
     public static String xmlNameToJava(String name) {
-        return xmlNameToJava(name,true);
-    }
-
-    public static String xmlNameToJava(String name,boolean decapitalizeFirst) {
         // protect ourselves from garbage
         if (name == null || name.equals(""))
             return name;
@@ -155,13 +151,6 @@
         // covert back to a String
         String newName = result.toString();
 
-        // Follow JavaBean rules, but we need to check if the first
-        // letter is uppercase first
-        // do the decapitalization only if requested
-        if (decapitalizeFirst){
-            if (Character.isUpperCase(newName.charAt(0)))
-                newName = Introspector.decapitalize(newName);
-        }
         // check for Java keywords
         if (isJavaKeyword(newName))
             newName = makeNonJavaKeyword(newName);
@@ -169,4 +158,26 @@
         return newName;
     } // xmlNameToJava
 
+    /**
+     * Capitalize the first character of the name.
+     *
+     * @param name
+     * @return
+     */
+    public static String capitalizeFirstChar(String name) {
+
+        if ((name == null) || name.equals("")) {
+            return name;
+        }
+
+        char start = name.charAt(0);
+
+        if (Character.isLowerCase(start)) {
+            start = Character.toUpperCase(start);
+
+            return start + name.substring(1);
+        }
+
+        return name;
+    }    // capitalizeFirstChar
 }