butek       02/04/08 10:33:53

  Modified:    java/src/org/apache/axis/wsdl/toJava SymbolTable.java
               java/test/wsdl Wsdl2javaTestSuite.xml
  Added:       java/test/wsdl/_import ImportMessagesXSDImport.wsdl
  Log:
  Fixed Bugzilla bug #7744:  WSDL2Java does not work properly if xsd:import
  is used.  And added a test for the fix.
  
  Revision  Changes    Path
  1.53      +4 -7      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.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- SymbolTable.java  5 Apr 2002 21:24:32 -0000       1.52
  +++ SymbolTable.java  8 Apr 2002 17:33:52 -0000       1.53
  @@ -407,17 +407,14 @@
           if (doc != null) {
               populateTypes(doc);
   
  -            // If def == null, then WSDL4J doesn't provide any import logic
  -            // for this xml file.  Recurse on Document imports rather than
  -            // Definition imports.
  -            if (def == null && addImports) {
  -                // Recurse through children nodes, looking for imports
  +            if (addImports) {
  +                // Add the symbols from any xsd:import'ed documents.
                   lookForImports(context, doc);
               }
           }
           if (def != null) {
               if (addImports) {
  -                // Add the symbols from the imported WSDL documents
  +                // Add the symbols from the wsdl:import'ed WSDL documents
                   Map imports = def.getImports();
                   Object[] importKeys = imports.keySet().toArray();
                   for (int i = 0; i < importKeys.length; ++i) {
  @@ -489,7 +486,7 @@
           return url;
       } // getURL
       /**
  -     * Recursively find all import objects and call populate for each one.
  +     * Recursively find all xsd:import'ed objects and call populate for each one.
        */
       private void lookForImports(URL context, Node node) throws IOException {
           NodeList children = node.getChildNodes();
  
  
  
  1.94      +10 -0     xml-axis/java/test/wsdl/Wsdl2javaTestSuite.xml
  
  Index: Wsdl2javaTestSuite.xml
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/Wsdl2javaTestSuite.xml,v
  retrieving revision 1.93
  retrieving revision 1.94
  diff -u -r1.93 -r1.94
  --- Wsdl2javaTestSuite.xml    5 Apr 2002 21:24:32 -0000       1.93
  +++ Wsdl2javaTestSuite.xml    8 Apr 2002 17:33:53 -0000       1.94
  @@ -340,6 +340,16 @@
           <mapping namespace="urn:messages.import.test" 
package="test.import2.messages"/>
       </wsdl2java>
   
  +    <!-- Import Test 3:  all namespace->package mappings from the -->
  +    <!--                 command line.  Make sure an xsd:import   -->
  +    <!--                 statement inside a schema inside a type  -->
  +    <!--                 works properly.                          -->
  +    <wsdl2java url="test/wsdl/_import/ImportMessagesXSDImport.wsdl"
  +               output="build/work"
  +               noimports="no">
  +        <mapping namespace="urn:types.import.test" package="test.import.test3"/>
  +    </wsdl2java>
  +
       <!-- InOut Sample -->
       <wsdl2java url="test/wsdl/inout/inout.wsdl"
                  output="build/work"
  
  
  
  1.1                  xml-axis/java/test/wsdl/_import/ImportMessagesXSDImport.wsdl
  
  Index: ImportMessagesXSDImport.wsdl
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <definitions
      targetNamespace="urn:messages.import.test"
      xmlns="http://schemas.xmlsoap.org/wsdl/";
      xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
      xmlns:addressTypes="urn:types.import.test">
  
  <type>
    <schema
      targetNamespace="urn:types.import.test"
      xmlns:tns="urn:types.import.test"
      xmlns="http://www.w3.org/2001/XMLSchema/";>
  
      <import
        schemaLocation="Phone.xsd"
        namespace="urn:types.import.test">
      </import>
  
      <complexType name="Address">
        <all>
          <element name="streetNum" type="int"/>
          <element name="streetName" type="string"/>
          <element name="city" type="string"/>
          <element name="state" type="string"/>
          <element name="zip" type="int"/>
          <element name="phoneNumber" type="tns:PhoneNumber"/>
        </all>
      </complexType>
  
    </schema>
  </type>
  
  <message name="empty"/>
  
  <message name="InaddEntryRequest">
    <part name="key" type="xsd:string"/>
    <part name="value" type="addressTypes:Address"/>
  </message>
  
  <message name="IngetAddressFromNameRequest">
    <part name="key" type="xsd:string"/>
  </message>
  
  <message name="OutgetAddressFromNameResponse">
    <part name="value" type="addressTypes:Address"/>
  </message>
  
  <message name="Fault">
    <part name="value" type="xsd:string"/>
  </message>
  
  </definitions>
  
  
  


Reply via email to