tomj        02/02/06 13:00:20

  Modified:    java/src/org/apache/axis/wsdl/toJava SymbolTable.java
  Log:
  Update the handling of literal message parts to handle either
  the element= or type= declaration (e.g. <part name="foo" type="ns:myType">).
  
  Revision  Changes    Path
  1.25      +44 -34    xml-axis/java/src/org/apache/axis/wsdl/toJava/SymbolTable.java
  
  Index: SymbolTable.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/SymbolTable.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- SymbolTable.java  5 Feb 2002 22:42:35 -0000       1.24
  +++ SymbolTable.java  6 Feb 2002 21:00:20 -0000       1.25
  @@ -982,46 +982,56 @@
               Part part = (Part) i.next();
               QName elementName = part.getElementName();
               QName typeName = part.getTypeName();
  +            
  +            if (!literal) {
  +                // not doing literal use, add this type or element name
  +                if (typeName != null) {
  +                    v.add(getType(typeName));
  +                    v.add(part.getName());
  +                } else if (elementName != null) {
  +                    v.add(getElement(elementName));
  +                    v.add(part.getName());
  +                }
  +                continue;   // next part
  +            }
  +                
  +            // See if we can map all the XML types to java types
  +            // if we can, we use these as the types
  +            Node node = null;
  +            Element e;
               if (typeName != null) {
  -                v.add(getType(typeName));
  -                v.add(part.getName());
  +                node = getTypeEntry(typeName, false).getNode();
               } else if (elementName != null) {
  -                // if literal use, try to map the elements
  -                if (literal) {
  -                    // See if we can map all the XML types to java types
  -                    // if we can, we use these as the types
  -                    
  -                    // Get the Element
  -                    Element e = getElement((elementName));
  -                    Node node = getTypeEntry(elementName, true).getNode();
  -                    
  -                    // Check if this element is of the form:
  -                    //    <element name="foo" type="tns:foo_type"/> 
  -                    QName type = Utils.getNodeTypeRefQName(e.getNode(), "type");
  -                    if (type != null)
  -                        node = getTypeEntry(type, false).getNode();
  -                    
  -                    // Get the nested type entries.
  -                    Vector vTypes = SchemaUtils.getComplexElementTypesAndNames(
  -                            //getTypeEntry(elementName, true).getNode(), 
  -                            node, 
  -                            this);
  -                    
  -                    if (vTypes != null) {
  -                        // add the elements in this list
  -                        v.addAll(vTypes);
  -                    } else {
  -                        // XXX - This should be a SOAPElement/SOAPBodyElement
  -                        v.add(getElement(elementName));
  -                        v.add(part.getName());
  -                    }
  -                } else {
  -                    // not doing literal use, add this element name
  +                node = getTypeEntry(elementName, true).getNode();
  +                // Check if this element is of the form:
  +                //    <element name="foo" type="tns:foo_type"/> 
  +                QName type = Utils.getNodeTypeRefQName(node, "type");
  +                if (type != null)
  +                    node = getTypeEntry(type, false).getNode();
  +            }
  +            
  +            if (node == null)
  +                continue;  // ??? Skip this part, something is wrong
  +            
  +            // Get the nested type entries.
  +            Vector vTypes = 
  +                    SchemaUtils.getComplexElementTypesAndNames(node, this);
  +            
  +            if (vTypes != null) {
  +                // add the elements in this list
  +                v.addAll(vTypes);
  +            } else {
  +                // XXX - This should be a SOAPElement/SOAPBodyElement
  +                if (typeName != null) {
  +                    v.add(getType(typeName));
  +                    v.add(part.getName());
  +                } else if (elementName != null) {
                       v.add(getElement(elementName));
                       v.add(part.getName());
                   }
               }
  -        }
  +        } // while
  +        
       } // partStrings
   
       /**
  
  
  


Reply via email to