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 2004/08/22 05:07:01 UTC

cvs commit: ws-axis/java/src/org/apache/axis/wsdl/toJava Emitter.java JavaBeanHelperWriter.java JavaBeanWriter.java JavaGeneratorFactory.java JavaTypeWriter.java

dims        2004/08/21 20:07:01

  Modified:    java/src/org/apache/axis/wsdl/symbolTable ElementDecl.java
                        SchemaUtils.java SymbolTable.java Type.java
                        TypeEntry.java Utils.java
               java/src/org/apache/axis/wsdl/toJava Emitter.java
                        JavaBeanHelperWriter.java JavaBeanWriter.java
                        JavaGeneratorFactory.java JavaTypeWriter.java
  Added:       java/src/org/apache/axis/wsdl/symbolTable
                        ContainedAttribute.java ContainedEntry.java
  Log:
  Fix for (AXIS-1501) [EWS, AXIS2] A proposal for xml-to-java name mapping in Axis and EWS (WSDL --> Java)
  from Jongjin Choi (mailto:gunsnroz@hotmail.com)
  
  Revision  Changes    Path
  1.9       +3 -50     ws-axis/java/src/org/apache/axis/wsdl/symbolTable/ElementDecl.java
  
  Index: ElementDecl.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/symbolTable/ElementDecl.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ElementDecl.java	25 Feb 2004 14:02:50 -0000	1.8
  +++ ElementDecl.java	22 Aug 2004 03:06:59 -0000	1.9
  @@ -25,13 +25,8 @@
    * @author Glen Daniels (gdaniels@apache.org)
    * @author Tom Jordahl (tomj@apache.org)
    */
  -public class ElementDecl {
  +public class ElementDecl extends ContainedEntry {
   
  -    /** Field name */
  -    private QName name;
  -
  -    /** Field type */
  -    private TypeEntry type;
       
       /** Field documentation */
       private String documentation;
  @@ -54,11 +49,6 @@
       /** Field anyElement */
       private boolean anyElement = false;
   
  -    /**
  -     * Constructor ElementDecl
  -     */
  -    public ElementDecl() {
  -    }
   
       /**
        * Constructor ElementDecl
  @@ -67,45 +57,8 @@
        * @param name 
        */
       public ElementDecl(TypeEntry type, QName name) {
  -        this.type = type;
  -        this.name = name;
  -    }
  -
  -    /**
  -     * Method getType
  -     * 
  -     * @return 
  -     */
  -    public TypeEntry getType() {
  -        return type;
  -    }
  -
  -    /**
  -     * Method setType
  -     * 
  -     * @param type 
  -     */
  -    public void setType(TypeEntry type) {
  -        this.type = type;
  -    }
  -
  -    /**
  -     * Method getName
  -     * 
  -     * @return 
  -     */
  -    public QName getName() {
  -        return name;
  -    }
  -
  -    /**
  -     * Method setName
  -     * 
  -     * @param name 
  -     */
  -    public void setName(QName name) {
  -        this.name = name;
  -    }
  +        super(type, name);
  +    }    
   
       /**
        * Method getMinOccursIs0
  
  
  
  1.47      +10 -24    ws-axis/java/src/org/apache/axis/wsdl/symbolTable/SchemaUtils.java
  
  Index: SchemaUtils.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/symbolTable/SchemaUtils.java,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- SchemaUtils.java	29 Jul 2004 21:36:50 -0000	1.46
  +++ SchemaUtils.java	22 Aug 2004 03:06:59 -0000	1.47
  @@ -273,12 +273,7 @@
                           // Return an element declaration with a fixed name
                           // ("value") and the correct type.
                           Vector v = new Vector();
  -                        ElementDecl elem = new ElementDecl();
  -
  -                        elem.setType(
  -                                symbolTable.getTypeEntry(
  -                                        extendsOrRestrictsType, false));
  -                        elem.setName(VALUE_QNAME);
  +                        ElementDecl elem = new ElementDecl(symbolTable.getTypeEntry(extendsOrRestrictsType, false), VALUE_QNAME);
                           v.add(elem);
   
                           return v;
  @@ -348,28 +343,21 @@
   
                   for (int i = 0; i < simpleQName.length; i++) {
   
  -                    TypeEntry simpleType = symbolTable.getType(simpleQName[i]);
  +                    Type simpleType = symbolTable.getType(simpleQName[i]);
   
                       if (simpleType != null) {
                           if (v == null) {
                               v = new Vector();
                           }
   
  -                        ElementDecl elem = new ElementDecl();
  -
  -                        elem.setType(simpleType);
  -
  +                        QName qname = null;
                           if (simpleQName.length > 1) {
  -                            elem.setName(
  -                                    new javax.xml.namespace.QName(
  -                                            "",
  -                                            simpleQName[i].getLocalPart() + "Value"));
  +                            qname = new QName("", simpleQName[i].getLocalPart() + "Value");
                           } else {
  -                            elem.setName(
  -                                    new javax.xml.namespace.QName("", "value"));
  +                            qname = new QName("", "value");
                           }
   
  -                        v.add(elem);
  +                        v.add(new ElementDecl(simpleType, qname));
                       }
                   }
   
  @@ -557,7 +545,7 @@
                       // Represent this as an element named any of type any type.
                       // This will cause it to be serialized with the element
                       // serializer.
  -                    TypeEntry type = symbolTable.getType(Constants.XSD_ANY);
  +                    Type type = symbolTable.getType(Constants.XSD_ANY);
                       ElementDecl elem = new ElementDecl(type,
                               Utils.findQName("",
                                       "any"));
  @@ -614,7 +602,7 @@
               // The value of the second argument is 'false' since global model group
               // definitions are always represented by objects whose type is
               // assignment compatible with 'org.apache.axis.wsdl.symbolTable.Type'.
  -            TypeEntry type = symbolTable.getTypeEntry(nodeType, false);
  +            Type type = (Type) symbolTable.getTypeEntry(nodeType, false);
   
               if (type != null) {
                   v.add(new ElementDecl(type, nodeName));
  @@ -1579,8 +1567,7 @@
           // add type and name to vector, skip it if we couldn't parse it
           // XXX - this may need to be revisited.
           if ((type != null) && (attributeName != null)) {
  -            v.add(type);
  -            v.add(attributeName);
  +            v.add(new ContainedAttribute(type, attributeName));
           }
       }
   
  @@ -1600,8 +1587,7 @@
   
           if (typeEnt != null)    // better not be null
           {
  -            v.add(typeEnt);
  -            v.add(name);
  +            v.add(new ContainedAttribute(typeEnt, name));
           }
       }
   
  
  
  
  1.104     +32 -10    ws-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java
  
  Index: SymbolTable.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java,v
  retrieving revision 1.103
  retrieving revision 1.104
  diff -u -r1.103 -r1.104
  --- SymbolTable.java	29 Jul 2004 21:36:50 -0000	1.103
  +++ SymbolTable.java	22 Aug 2004 03:06:59 -0000	1.104
  @@ -697,6 +697,7 @@
                   lookForImports(context, doc);
               }
           }
  +        processTypes();
   
           if (def != null) {
               checkForUndefined(def, filename);
  @@ -2082,6 +2083,7 @@
               // See if we can map all the XML types to java(?) types
               // if we can, we use these as the types
               Node node = null;
  +            TypeEntry typeEntry = null;
   
               if ((typeName != null)
                       && (bindingEntry == null || bindingEntry.getMIMETypes().size() == 0)) {
  @@ -2109,7 +2111,8 @@
               // ...
               // <schema targetNamespace="foo">
               // <element name="bar"...>  <--- This one
  -            node = getTypeEntry(elementName, true).getNode();
  +            typeEntry = getTypeEntry(elementName, true);
  +            node = typeEntry.getNode();
   
               // Check if this element is of the form:
               // <element name="foo" type="tns:foo_type"/>
  @@ -2121,7 +2124,8 @@
   
                   // If in fact we have such a type, go get the node that
                   // corresponds to THAT definition.
  -                node = getTypeEntry(type, false).getNode();
  +                typeEntry = getTypeEntry(type, false);
  +                node = typeEntry.getNode();
               }
   
               Vector vTypes = null;
  @@ -2134,11 +2138,7 @@
               } else {
   
                   // check for attributes
  -                Vector vAttrs = SchemaUtils.getContainedAttributeTypes(node,
  -                        this);
  -
  -                if (vAttrs != null) {
  -
  +                if (typeEntry.getContainedAttributes() != null) {
                       // can't do wrapped mode
                       wrapped = false;
                   }
  @@ -2151,8 +2151,7 @@
                   // TODO - If we are unable to represent any of the types in the
                   // element, we need to use SOAPElement/SOAPBodyElement.
                   // I don't believe getContainedElementDecl does the right thing yet.
  -                vTypes = SchemaUtils.getContainedElementDeclarations(node,
  -                        this);
  +                vTypes = typeEntry.getContainedElements();
               }
   
               // IF we got the type entries and we didn't find attributes
  @@ -2164,7 +2163,7 @@
                       ElementDecl elem = (ElementDecl) vTypes.elementAt(j);
                       Parameter p = new Parameter();
   
  -                    p.setQName(elem.getName());
  +                    p.setQName(elem.getQName());
                       p.setType(elem.getType());
                       p.setOmittable(elem.getMinOccursIs0());
                       fillParamInfo(p, bindingEntry, opName, partName);
  @@ -3683,5 +3682,28 @@
           }
   
           return null;
  +    }
  +    
  +    protected void processTypes() {
  +        for (Iterator i = typeTypeEntries.values().iterator(); i.hasNext(); ) {
  +            Type type = (Type) i.next();
  +            Node node = type.getNode();            
  +            
  +            // Process the attributes
  +            Vector attributes = 
  +                    SchemaUtils.getContainedAttributeTypes(node, this);
  +
  +            if (attributes != null) {
  +                type.setContainedAttributes(attributes);
  +            }
  +
  +            // Process the elements
  +            Vector elements =
  +                    SchemaUtils.getContainedElementDeclarations(node, this);
  +
  +            if (elements != null) {
  +                type.setContainedElements(elements);
  +            }
  +        }
       }
   }    // class SymbolTable
  
  
  
  1.6       +9 -1      ws-axis/java/src/org/apache/axis/wsdl/symbolTable/Type.java
  
  Index: Type.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/symbolTable/Type.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Type.java	25 Feb 2004 14:02:51 -0000	1.5
  +++ Type.java	22 Aug 2004 03:06:59 -0000	1.6
  @@ -25,7 +25,8 @@
    * @author Rich Scheuerle  (scheu@us.ibm.com)
    */
   public abstract class Type extends TypeEntry {
  -
  +    private boolean generated;	// true if java class is generated during WSDL->Java processing
  +    
       /**
        * Create a Type object for an xml construct name that represents a base type
        * 
  @@ -56,5 +57,12 @@
        */
       protected Type(QName pqName, Node pNode) {
           super(pqName, pNode);
  +    }
  +    public void setGenerated(boolean b) {
  +        generated = true;        
  +    }
  +    
  +    public boolean isGenerated() {
  +        return generated;
       }
   }
  
  
  
  1.16      +41 -6     ws-axis/java/src/org/apache/axis/wsdl/symbolTable/TypeEntry.java
  
  Index: TypeEntry.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/symbolTable/TypeEntry.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- TypeEntry.java	25 Feb 2004 14:02:51 -0000	1.15
  +++ TypeEntry.java	22 Aug 2004 03:06:59 -0000	1.16
  @@ -22,6 +22,7 @@
   import java.io.IOException;
   import java.io.Serializable;
   import java.util.HashSet;
  +import java.util.Vector;
   
   /**
    * This class represents a wsdl types entry that is supported by the WSDL2Java emitter.
  @@ -104,6 +105,12 @@
       
       /** Field types */
       protected HashSet types = null;
  +    
  +    /** contained elements in the schema's type definition */
  +    protected Vector containedElements;
  +
  +    /** contained attributes in the schema's type definition */
  +    protected Vector containedAttributes;
   
       // whether this type is only referenced
       // via a binding's literal use.
  @@ -391,12 +398,15 @@
                       + "\n";
           }
   
  -        return super.toString(indent) + indent + "Class:         "
  -                + this.getClass().getName() + "\n" + indent + "Base?:         "
  -                + isBaseType + "\n" + indent + "Undefined?:    " + undefined
  -                + "\n" + indent + "isSimpleType?  " + isSimpleType + "\n"
  -                + indent + "Node:          " + getNode() + "\n" + indent
  -                + "Dims:          " + dims + "\n" + refString;
  +        return super.toString(indent) 
  +                + indent + "Class:         " + this.getClass().getName() + "\n" 
  +                + indent + "Base?:         " + isBaseType + "\n" 
  +                + indent + "Undefined?:    " + undefined + "\n" 
  +                + indent + "isSimpleType?  " + isSimpleType + "\n"
  +                + indent + "Node:          " + getNode() + "\n" 
  +                + indent + "Dims:          " + dims + "\n"              
  +                + indent + "isOnlyLiteralReferenced: " + onlyLiteralReference + "\n"
  +                + refString;
       }
   
       /**
  @@ -417,4 +427,29 @@
           }
           return types;
       }    // getNestedTypes
  +
  +    /**
  +     * @return Returns the containedAttributes.
  +     */
  +    public Vector getContainedAttributes() {
  +        return containedAttributes;
  +    }
  +    /**
  +     * @param containedAttributes The containedAttributes to set.
  +     */
  +    public void setContainedAttributes(Vector containedAttributes) {
  +        this.containedAttributes = containedAttributes;
  +    }
  +    /**
  +     * @return Returns the containedElements.
  +     */
  +    public Vector getContainedElements() {
  +        return containedElements;
  +    }
  +    /**
  +     * @param containedElements The containedElements to set.
  +     */
  +    public void setContainedElements(Vector containedElements) {
  +        this.containedElements = containedElements;
  +    }
   }
  
  
  
  1.41      +7 -6      ws-axis/java/src/org/apache/axis/wsdl/symbolTable/Utils.java
  
  Index: Utils.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/symbolTable/Utils.java,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- Utils.java	18 Aug 2004 11:33:56 -0000	1.40
  +++ Utils.java	22 Aug 2004 03:06:59 -0000	1.41
  @@ -640,12 +640,13 @@
           v = SchemaUtils.getContainedAttributeTypes(node, symbolTable);
   
           if (v != null) {
  -            for (int i = 0; i < v.size(); i += 2) {
  -                if (!types.contains(v.get(i))) {
  -                    types.add(v.get(i));
  -                    getNestedTypes(((TypeEntry) v.get(i)), types, symbolTable,
  -                            derivedFlag);
  -                }
  +            for (int i = 0; i < v.size(); i++) {
  +                ContainedAttribute attr = (ContainedAttribute) v.get(i);
  +                TypeEntry te = attr.getType();
  +                if (!types.contains(te)) {
  +                    types.add(te);
  +                    getNestedTypes(te, types, symbolTable, derivedFlag);
  +                }                
               }
           }
   
  
  
  
  1.1                  ws-axis/java/src/org/apache/axis/wsdl/symbolTable/ContainedAttribute.java
  
  Index: ContainedAttribute.java
  ===================================================================
  /*
   * Copyright 2001-2004 The Apache Software Foundation.
   * 
   * 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.axis.wsdl.symbolTable;
  
  import javax.xml.namespace.QName;
  
  public class ContainedAttribute extends ContainedEntry {
  
      /**
       * @param qname
       */
      protected ContainedAttribute(TypeEntry type, QName qname) {
          super(type, qname);
      }
  }
  
  
  
  1.1                  ws-axis/java/src/org/apache/axis/wsdl/symbolTable/ContainedEntry.java
  
  Index: ContainedEntry.java
  ===================================================================
  package org.apache.axis.wsdl.symbolTable;
  
  import javax.xml.namespace.QName;
  
  public class ContainedEntry extends SymTabEntry {    
      protected TypeEntry type;       // TypeEntry for nested type
      
      /**
       * @param qname
       */
      protected ContainedEntry(TypeEntry type, QName qname) {
          super(qname);
          this.type = type;
      }
      
      /**
       * @return Returns the type.
       */
      public TypeEntry getType() {
          return type;
      }
      /**
       * @param type The type to set.
       */
      public void setType(TypeEntry type) {
          this.type = type;
      }
  }
  
  
  
  1.70      +30 -0     ws-axis/java/src/org/apache/axis/wsdl/toJava/Emitter.java
  
  Index: Emitter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/Emitter.java,v
  retrieving revision 1.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- Emitter.java	10 May 2004 17:25:43 -0000	1.69
  +++ Emitter.java	22 Aug 2004 03:07:00 -0000	1.70
  @@ -504,6 +504,10 @@
               return fullJavaName;
           }
   
  +        fullJavaName = getJavaNameHook(qName);
  +        if (fullJavaName != null) {
  +            return fullJavaName;
  +        }
           // Use the namespace uri to get the appropriate package
           String pkg = getPackage(qName.getNamespaceURI());
   
  @@ -516,6 +520,32 @@
   
           return fullJavaName;
       }    // getJavaName
  +    
  +    protected String getJavaNameHook(QName qname) { return null; }
  +    
  +    
  +    /**
  +     * @param typeQName QName for containing xml type
  +     * @param xmlName QName for element
  +     * @return
  +     */
  +    protected String getJavaVariableName(QName typeQName, QName xmlName, boolean isElement) {
  +        String javaName = null;
  +        
  +        
  +        javaName = getJavaVariableNameHook(typeQName, xmlName, isElement);        
  +        if (javaName == null) {
  +            String elemName = Utils.getLastLocalPart(xmlName.getLocalPart());            
  +            javaName = Utils.xmlNameToJava(elemName);
  +        }
  +        return javaName;
  +    }
  +        
  +    protected String getJavaVariableNameHook(QName typeQName, QName xmlName, boolean isElement) {
  +        return null;
  +    }
  +        
  +    
   
       /**
        * Emit appropriate Java files for a WSDL at a given URL.
  
  
  
  1.46      +8 -12     ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanHelperWriter.java
  
  Index: JavaBeanHelperWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanHelperWriter.java,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- JavaBeanHelperWriter.java	25 Feb 2004 14:02:52 -0000	1.45
  +++ JavaBeanHelperWriter.java	22 Aug 2004 03:07:00 -0000	1.46
  @@ -16,6 +16,7 @@
   package org.apache.axis.wsdl.toJava;
   
   import org.apache.axis.utils.Messages;
  +import org.apache.axis.wsdl.symbolTable.ContainedAttribute;
   import org.apache.axis.wsdl.symbolTable.DefinedType;
   import org.apache.axis.wsdl.symbolTable.ElementDecl;
   import org.apache.axis.wsdl.symbolTable.SchemaUtils;
  @@ -270,14 +271,12 @@
               if (attributes != null) {
                   boolean wroteAttrDecl = false;
   
  -                for (int i = 0; i < attributes.size(); i += 2) {
  -                    TypeEntry te = (TypeEntry) attributes.get(i);
  -                    QName attrName = (QName) attributes.get(i + 1);
  -                    String attrLocalName = Utils.getLastLocalPart(attrName.getLocalPart());
  -                    String fieldName =
  -                            Utils.xmlNameToJava(attrLocalName);
  +                for (int i = 0; i < attributes.size(); i += 1) {
  +                    ContainedAttribute attr = (ContainedAttribute) attributes.get(i);
  +                    TypeEntry te = attr.getType();
  +                    QName attrName = attr.getQName();
   
  -                    fieldName = getAsFieldName(fieldName);
  +                    String fieldName = getAsFieldName(attr.getName());
   
                       QName attrXmlType = te.getQName();
   
  @@ -316,12 +315,9 @@
                           continue;
                       }
   
  -                    String elemLocalName = Utils.getLastLocalPart(elem.getName().getLocalPart());
  -                    String fieldName = Utils.xmlNameToJava(elemLocalName);
  +                    String fieldName = getAsFieldName(elem.getName());  // jongjin.
   
  -                    fieldName = getAsFieldName(fieldName);
  -
  -                    QName xmlName = elem.getName();
  +                    QName xmlName = elem.getQName();
   
                       // Some special handling for arrays.
                       TypeEntry elemType = elem.getType();
  
  
  
  1.68      +16 -25    ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java
  
  Index: JavaBeanWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java,v
  retrieving revision 1.67
  retrieving revision 1.68
  diff -u -r1.67 -r1.68
  --- JavaBeanWriter.java	29 Jul 2004 21:36:50 -0000	1.67
  +++ JavaBeanWriter.java	22 Aug 2004 03:07:00 -0000	1.68
  @@ -18,6 +18,7 @@
   import org.apache.axis.Constants;
   import org.apache.axis.utils.JavaUtils;
   import org.apache.axis.utils.Messages;
  +import org.apache.axis.wsdl.symbolTable.ContainedAttribute;
   import org.apache.axis.wsdl.symbolTable.ElementDecl;
   import org.apache.axis.wsdl.symbolTable.SchemaUtils;
   import org.apache.axis.wsdl.symbolTable.TypeEntry;
  @@ -266,8 +267,7 @@
                       variableName = Constants.ANYCONTENT;
                       isAny = true;
                   } else {
  -                    String elemName = Utils.getLastLocalPart(elem.getName().getLocalPart());
  -                    variableName = Utils.xmlNameToJava(elemName);
  +                    variableName = elem.getName();
                       
                       if (elem.getMinOccursIs0() || elem.getNillable()) {
                           typeName = Utils.getWrapperType(typeName);
  @@ -303,14 +303,11 @@
   
           // Add attribute names
           if (attributes != null) {
  -            for (int i = 0; i < attributes.size(); i += 2) {
  -                TypeEntry attr = (TypeEntry) attributes.get(i);
  -                String typeName = attr.getName();
  -                QName xmlName = (QName) attributes.get(i + 1);
  -                String attrName = Utils.getLastLocalPart(xmlName.getLocalPart());
  -                String variableName =
  -                        Utils.xmlNameToJava(attrName);
   
  +            for (int i = 0; i < attributes.size(); i += 1) {
  +                ContainedAttribute attr = (ContainedAttribute) attributes.get(i);
  +                String typeName = attr.getType().getName(); 
  +                String variableName = attr.getName();
                   names.add(typeName);
                   names.add(variableName);
   
  @@ -323,7 +320,7 @@
                   // bug 19069: need to generate code that access member variables that
                   // are enum types through the class interface, not the constructor
                   // this util method returns non-null if the type at node is an enum
  -                if (null != Utils.getEnumerationBaseAndValues(attr.getNode(),
  +                if (null != Utils.getEnumerationBaseAndValues(attr.getType().getNode(),
                           emitter.getSymbolTable())) {
                       enumerationTypes.add(typeName);
                   }
  @@ -566,31 +563,25 @@
               }
   
               // Process the attributes
  -            Vector attributes = SchemaUtils.getContainedAttributeTypes(
  -                    te.getNode(), emitter.getSymbolTable());
  -
  +            Vector attributes = te.getContainedAttributes();
               if (attributes != null) {
  -                for (int j = 0; j < attributes.size(); j += 2) {
  -                    paramTypes.add(((TypeEntry) attributes.get(j)).getName());
  -                    String name = Utils.getLastLocalPart(
  -                            ((QName) attributes.get(j + 1)).getLocalPart());
  -                    paramNames.add(mangle + Utils.xmlNameToJava(name));
  +                for (int j = 0; j < attributes.size(); j += 1) {
  +                    ContainedAttribute attr = (ContainedAttribute) attributes.get(j);
  +                    paramTypes.add(attr.getType().getName());
  +                    paramNames.add(attr.getName());
  +                            
                   }
               }
   
               // Process the elements
  -            Vector elements =
  -                    SchemaUtils.getContainedElementDeclarations(te.getNode(),
  -                            emitter.getSymbolTable());
  +            Vector elements = te.getContainedElements();
   
               if (elements != null) {
                   for (int j = 0; j < elements.size(); j++) {
                       ElementDecl elem = (ElementDecl) elements.get(j);
  -                    String name = Utils.getLastLocalPart(elem.getName().getLocalPart());
  +
                       paramTypes.add(elem.getType().getName());
  -                    paramNames.add(
  -                            mangle
  -                            + Utils.xmlNameToJava(name));
  +                    paramNames.add(elem.getName());
                   }
               }
           }
  
  
  
  1.55      +22 -1     ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaGeneratorFactory.java
  
  Index: JavaGeneratorFactory.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaGeneratorFactory.java,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- JavaGeneratorFactory.java	18 Aug 2004 11:33:57 -0000	1.54
  +++ JavaGeneratorFactory.java	22 Aug 2004 03:07:01 -0000	1.55
  @@ -25,7 +25,9 @@
   import org.apache.axis.wsdl.gen.NoopGenerator;
   import org.apache.axis.wsdl.symbolTable.BaseTypeMapping;
   import org.apache.axis.wsdl.symbolTable.BindingEntry;
  +import org.apache.axis.wsdl.symbolTable.ContainedAttribute;
   import org.apache.axis.wsdl.symbolTable.Element;
  +import org.apache.axis.wsdl.symbolTable.ElementDecl;
   import org.apache.axis.wsdl.symbolTable.FaultInfo;
   import org.apache.axis.wsdl.symbolTable.MessageEntry;
   import org.apache.axis.wsdl.symbolTable.Parameter;
  @@ -524,7 +526,7 @@
   
               if (Utils.getEnumerationBaseAndValues(te.getNode(), symbolTable) == null
                       &&SchemaUtils.getComplexElementExtensionBase(te.getNode(), symbolTable) == null
  -                    &&SchemaUtils.getContainedAttributeTypes(te.getNode(), symbolTable) == null) {
  +					&& te.getContainedAttributes() == null) {
                   if(!SchemaUtils.isSimpleTypeWithUnion(te.getNode())) {
                       if (base.isSimpleType()) {
                           // Case 1:
  @@ -632,7 +634,26 @@
                   // Now set the name with the constructed qname
                   tEntry.setName(emitter.getJavaName(typeQName));
               }
  +        
  +            Vector elements = tEntry.getContainedElements();
  +            if (elements != null) {
  +                for (int i = 0; i < elements.size(); i++) {
  +                    ElementDecl elem = (ElementDecl) elements.get(i);
  +                    String varName = emitter.getJavaVariableName(typeQName, elem.getQName(), true);
  +                    elem.setName(varName);
  +                }
  +            }
  +            
  +            Vector attributes = tEntry.getContainedAttributes();
  +            if (attributes != null) {
  +                for (int i = 0; i < attributes.size(); i++) {
  +                    ContainedAttribute attr = (ContainedAttribute) attributes.get(i);
  +                    String varName = emitter.getJavaVariableName(typeQName, attr.getQName(), false);
  +                    attr.setName(varName);
  +                }
  +            }
           }
  +
           // Set the entry with the same name as the ref'd entry
           // but add the appropriate amount of dimensions
           entry.setName(tEntry.getName() + dims);
  
  
  
  1.21      +10 -10    ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaTypeWriter.java
  
  Index: JavaTypeWriter.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaTypeWriter.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- JavaTypeWriter.java	25 Feb 2004 14:02:52 -0000	1.20
  +++ JavaTypeWriter.java	22 Aug 2004 03:07:01 -0000	1.21
  @@ -19,6 +19,7 @@
   import org.apache.axis.wsdl.symbolTable.SchemaUtils;
   import org.apache.axis.wsdl.symbolTable.SymTabEntry;
   import org.apache.axis.wsdl.symbolTable.SymbolTable;
  +import org.apache.axis.wsdl.symbolTable.Type;
   import org.apache.axis.wsdl.symbolTable.TypeEntry;
   import org.w3c.dom.Node;
   
  @@ -84,12 +85,7 @@
                           }
                       }
   
  -                    typeWriter = getBeanWriter(
  -                            emitter, type,
  -                            SchemaUtils.getContainedElementDeclarations(
  -                                    node, symbolTable), base,
  -                            SchemaUtils.getContainedAttributeTypes(
  -                                    node, symbolTable));
  +                    typeWriter = getBeanWriter(emitter, type, base);
                   }
               }
   
  @@ -98,6 +94,10 @@
               if (holderIsNeeded(type)) {
                   holderWriter = getHolderWriter(emitter, type);
               }
  +            
  +            if (typeWriter != null) {
  +                ((Type)type).setGenerated(true);
  +            }
           }
       }    // ctor
   
  @@ -154,10 +154,10 @@
        * @param attributes 
        * @return 
        */
  -    protected JavaWriter getBeanWriter(Emitter emitter, TypeEntry type,
  -                                       Vector elements, TypeEntry base,
  -                                       Vector attributes) {
  -
  +    protected JavaWriter getBeanWriter(Emitter emitter, TypeEntry type, TypeEntry base) {   // CONTAINED_ELEM_AND_ATTR
  +        Vector elements = type.getContainedElements();
  +        Vector attributes = type.getContainedAttributes();
  +        
           JavaWriter helperWriter = getBeanHelperWriter(emitter, type, elements,
                   base, attributes);