gdaniels    02/03/17 08:25:08

  Modified:    java/src/org/apache/axis/utils JavaUtils.java
               java/src/org/apache/axis/wsdl/toJava
                        JavaComplexTypeWriter.java
               java/test build_functional_tests.xml
               java/src/org/apache/axis/encoding/ser BeanSerializer.java
  Log:
  Fix naming confusion (hopefully for the last time) with xml -> Java property
  names and metadata.
  
  1) Don't try to uppercase the first char of field names when dealing with
     metadata descriptors, so now the names match what the Property
     Descriptors tell us in the BeanSerializer/Deserializer.
  
  2) Follow the bean Introspector pattern for naming properties in
     xmlNameToJava() - if the first char is uppercase and the second
     char is ALSO uppercase, leave it alone.  In other words:
  
     MyID -> myID
     ID -> ID
  
  3) Deal with boolean types and null obj values in the generated equals()
     methods correctly
  
  We might want to merge these changes over to beta1 and refresh the bits,
  since this fixes potentially major problems with literal XML.
  
  Also exclude Interop3TestCase from the func tests since it's not really
  a TestCase and it was breaking my build - this should either be called
  something else or turned into a real test case - Russell, what was your
  intent here?
  
  Revision  Changes    Path
  1.35      +6 -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.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- JavaUtils.java    12 Mar 2002 17:41:06 -0000      1.34
  +++ JavaUtils.java    17 Mar 2002 16:25:08 -0000      1.35
  @@ -459,7 +459,12 @@
               // because toLowerCase will lowercase some characters that
               // isUpperCase will return false for.  Like \u2160, Roman
               // numeral one.
  -            if (Character.isUpperCase(nameArray[i])) {
  +
  +            // 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) ||
  +                    (nameLen > 1 && Character.isLowerCase(nameArray[1])))) {
                   result.append(Character.toLowerCase(nameArray[i]));
               }
               else {
  
  
  
  1.23      +16 -18    
xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaComplexTypeWriter.java
  
  Index: JavaComplexTypeWriter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaComplexTypeWriter.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- JavaComplexTypeWriter.java        15 Mar 2002 01:14:11 -0000      1.22
  +++ JavaComplexTypeWriter.java        17 Mar 2002 16:25:08 -0000      1.23
  @@ -121,8 +121,7 @@
                   if (elementMappings == null)
                       elementMappings = new HashMap();
   
  -                elementMappings.put(Utils.capitalizeFirstChar(javaName),
  -                                    new QName("", elemName));
  +                elementMappings.put(javaName, new QName("", elemName));
               }
               names.add(type.getName());
               names.add(javaName);
  @@ -186,9 +185,9 @@
               String capName = Utils.capitalizeFirstChar(name);
   
               String get = "get";
  -            //if (typeName.equals("boolean") ||
  -            //    typeName.startsWith("boolean["))
  -            //    get = "is"
  +            if (typeName.equals("boolean") ||
  +                typeName.startsWith("boolean["))
  +                get = "is";
   
               pw.println("    public " + typeName + " " + get + capName + "() {");
               pw.println("        return " + name + ";");
  @@ -240,12 +239,6 @@
           // if we have attributes, create metadata function which returns the
           // list of properties that are attributes instead of elements
   
  -        // Glen 3/7/02 : This is now using the type metadata model which
  -        // provides for arbitrary mapping of XML elements or attributes
  -        // <-> Java fields.  We need to generalize this to support element
  -        // mappings as well, but right now this is just to keep the attribute
  -        // mechanism working.
  -
           if (attributes != null || elementMappings != null) {
               boolean wroteFieldType = false;
               pw.println("    // " + JavaUtils.getMessage("typeMeta"));
  @@ -257,9 +250,7 @@
               if (attributes != null) {
                   for (int i = 0; i < attributes.size(); i += 2) {
                       String attrName = (String) attributes.get(i + 1);
  -                    String fieldName =
  -                            Utils.capitalizeFirstChar(
  -                                    Utils.xmlNameToJava(attrName));
  +                    String fieldName = Utils.xmlNameToJava(attrName);
                       pw.print("        ");
                       if (!wroteFieldType) {
                           pw.print("org.apache.axis.description.FieldDesc ");
  @@ -326,6 +317,7 @@
           pw.println("    public boolean equals(Object obj) {");
           pw.println("        // compare elements");
           pw.println("        " +  className + " other = (" + className + ") obj;");
  +        pw.println("        if (obj == null) return false;");
           pw.println("        if (this == obj) return true;");
           pw.println("        if (! (obj instanceof " + className + ")) return 
false;");
           if (names.size() == 0) {
  @@ -335,7 +327,11 @@
               for (int i = 0; i < names.size(); i += 2) {
                   String variableType = (String) names.get(i);
                   String variable = (String) names.get(i + 1);
  -                
  +                String get = "get";
  +
  +                if (variableType.equals("boolean"))
  +                    get = "is";
  +
                   if (variableType.equals("int") ||
                           variableType.equals("long") ||
                           variableType.equals("short") ||
  @@ -343,13 +339,15 @@
                           variableType.equals("double") ||
                           variableType.equals("boolean") ||
                           variableType.equals("byte")) {
  -                    pw.print("            " + variable + " == other.get" + 
  +                    pw.print("            " + variable + " == other." + get +
                               Utils.capitalizeFirstChar(variable) + "()");
                   } else {
  -                    pw.println("            ((" + variable + "==null && other.get" +
  +                    pw.println("            ((" + variable +
  +                               "==null && other." + get +
                                  Utils.capitalizeFirstChar(variable) + "()==null) || 
");
                       pw.println("             (" + variable + "!=null &&");
  -                    pw.print("              " + variable + ".equals(other.get" + 
  +                    pw.print("              " + variable +
  +                             ".equals(other." + get +
                                Utils.capitalizeFirstChar(variable) + "())))");
                   }
                   if (i == (names.size() - 2))
  
  
  
  1.37      +1 -0      xml-axis/java/test/build_functional_tests.xml
  
  Index: build_functional_tests.xml
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/build_functional_tests.xml,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- build_functional_tests.xml        27 Feb 2002 17:22:56 -0000      1.36
  +++ build_functional_tests.xml        17 Mar 2002 16:25:08 -0000      1.37
  @@ -99,6 +99,7 @@
                   has its own test class collecting all the tests -->
                 <include name="**/FunctionalTests.class" />
                 <include name="**/*TestCase.class" />
  +              <exclude name="**/Interop3TestCase.class"/>
           </fileset>
         </batchtest>
       </junit>
  
  
  
  1.21      +4 -1      
xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializer.java
  
  Index: BeanSerializer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/BeanSerializer.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- BeanSerializer.java       14 Mar 2002 21:36:07 -0000      1.20
  +++ BeanSerializer.java       17 Mar 2002 16:25:08 -0000      1.21
  @@ -347,6 +347,7 @@
                           writeAttribute(types, attrName.getLocalPart(),
                                          field.getType(),
                                          complexType);
  +                        continue;
                       } else {
                           QName xmlName = typeDesc.getElementNameForField(
                                   field.getName());
  @@ -356,9 +357,11 @@
                                   // schema for this correctly?
                               }
                               name = xmlName.getLocalPart();
  +                            writeField(types, name, field.getType(),
  +                                       field.getIndexed(), all);
  +                            continue;
                           }
                       }
  -                    return true;
                   }
               }
   
  
  
  


Reply via email to