butek       02/02/02 07:23:06

  Modified:    java/src/org/apache/axis/wsdl/toJava JavaWriterFactory.java
               java/test/wsdl Wsdl2javaTestSuite.xml
  Added:       java/test/wsdl/clash clash.wsdl
  Removed:     java/test/clash AirportWeather.xml
  Log:
  Replace the existing clash test with a more comprehensive one and move it to the
  wsdl directory.  Also fix a bug this clash test found.
  
  Revision  Changes    Path
  1.9       +28 -13    
xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaWriterFactory.java
  
  Index: JavaWriterFactory.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaWriterFactory.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- JavaWriterFactory.java    24 Jan 2002 23:12:59 -0000      1.8
  +++ JavaWriterFactory.java    2 Feb 2002 15:23:06 -0000       1.9
  @@ -210,6 +210,7 @@
                       if (eType != null && eType.equals(e.getQName()))
                           resolve = false;
                   }
  +
                   // Other Special Case:
                   // If the names are already different, no mangling is needed.
                   if (resolve) {
  @@ -229,14 +230,14 @@
                       }
                   }
   
  -                    
                   // Full Mangle if resolution is necessary.
                   if (resolve) {
                       boolean firstType = true;
                       for (int i = 0; i < v.size(); ++i) {
                           SymTabEntry entry = (SymTabEntry) v.elementAt(i);
                           if (entry instanceof Element) {
  -                            entry.setName(mangleName(entry.getName() , 
"_ElemType"));
  +                            entry.setName(mangleName(entry.getName(),
  +                                    "_ElemType"));
                           }
                           else if (entry instanceof TypeEntry) {
                               // Search all other types for java names that match 
this one.
  @@ -246,30 +247,44 @@
                                   firstType = false;
                                   Vector types = symbolTable.getTypes();
                                   for (int j = 0; j < types.size(); ++j) {
  -                                    TypeEntry type = (TypeEntry) types.elementAt(j);
  +                                    TypeEntry type = (TypeEntry)
  +                                            types.elementAt(j);
                                       if (type != entry && 
  -                                        !(type instanceof Element) &&
  -                                        type.getBaseType() == null &&
  -                                        sameJavaClass(((Type)entry).getName(), 
type.getName())) {
  +                                            !(type instanceof Element) &&
  +                                            type.getBaseType() == null &&
  +                                            sameJavaClass(
  +                                                    ((Type) entry).getName(),
  +                                                    type.getName())) {
                                           v.add(type);  
                                       }
                                   }
                               }
  -                            entry.setName(mangleName(entry.getName() , "_Type"));
  +                            entry.setName(mangleName(entry.getName(), "_Type"));
                           }
                           else if (entry instanceof PortTypeEntry) {
  -                            entry.setName(mangleName(entry.getName() , "_Port"));
  +                            entry.setName(mangleName(entry.getName(), "_Port"));
                           }
                           else if (entry instanceof ServiceEntry) {
  -                            entry.setName(mangleName(entry.getName() , "_Service"));
  +                            entry.setName(mangleName(entry.getName(),
  +                                    "_Service"));
                           }
                           // else if (entry instanceof MessageEntry) {
                           //     we don't care about messages
                           // }
  -                        // else if (entry instanceof BindingEntry) {
  -                        //     since files generated from bindings all append 
strings to the name,
  -                        //     we don't care about bindings
  -                        // }
  +                         else if (entry instanceof BindingEntry) {
  +                             BindingEntry bEntry = (BindingEntry) entry;
  +
  +                             // If there is no literal use, then we never see a
  +                             // class named directly from the binding name.  They
  +                             // all have suffixes:  Stub, Skeleton, Impl.
  +                             // If there IS literal use, then the SDI will be
  +                             // named after the binding name, so there is the
  +                             // possibility of a name clash.
  +                             if (bEntry.hasLiteral()) {
  +                                 entry.setName(mangleName(entry.getName(),
  +                                         "_Binding"));
  +                             }
  +                        }
                       }
                   }
               }
  
  
  
  1.66      +3 -8      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.65
  retrieving revision 1.66
  diff -u -r1.65 -r1.66
  --- Wsdl2javaTestSuite.xml    1 Feb 2002 18:04:09 -0000       1.65
  +++ Wsdl2javaTestSuite.xml    2 Feb 2002 15:23:06 -0000       1.66
  @@ -346,16 +346,11 @@
           <mapping namespace="http://soapinterop.org/xsd"; 
package="mssoapinterop.interopc"/>
       </wsdl2java>
   
  -    <!-- PortType/Service name clash test -->
  -    <wsdl2java url="test/clash/AirportWeather.xml"
  +    <!-- Name clash test -->
  +    <wsdl2java url="test/wsdl/clash/clash.wsdl"
                  output="build/work"
                  testcase="yes"
  -               deployscope="none"
  -               skeleton="yes"
  -               verbose="no"
  -               noimports="no">
  -        <mapping namespace="http://www.capeclear.com/AirportWeather.wsdl"; 
package="test.clash"/>
  -        <mapping namespace="http://www.capeclear.com/AirportWeather.xsd"; 
package="test.clash.types"/>
  +               skeleton="yes">
       </wsdl2java>
   
       <!-- WSDL fault generation test -->
  
  
  
  1.1                  xml-axis/java/test/wsdl/clash/clash.wsdl
  
  Index: clash.wsdl
  ===================================================================
  <?xml version="1.0" ?>
  
  <definitions 
      name="name clash test"
      targetNamespace="clash.wsdl.test"
      xmlns:tns="clash.wsdl.test"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
      xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
      xmlns="http://schemas.xmlsoap.org/wsdl/";>
  
    <!-- type defs -->
    <types>
      <xsd:schema targetNamespace="clash.wsdl.test"
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
        <xsd:complexType name="sharedName">
          <xsd:all>
            <xsd:element name="sharedName" type="xsd:int"/>
          </xsd:all>
        </xsd:complexType>
      </xsd:schema>
    </types>
  
    <!-- message declns -->
    <message name="empty"/>
  
    <message name="sharedName">
      <part name="sharedName" type="tns:sharedName"/>
    </message>
  
    <!-- port type declns -->
    <portType name="sharedName">
      <operation name="sharedName">
        <input name="sharedName" message="tns:empty"/>
        <output name="sharedName" message="tns:sharedName"/>
      </operation>
  <!-- a bug in WSDL4J doesn't allow overloaded operations 
      <operation name="sharedName">
        <input name="sharedName" message="tns:sharedName"/>
        <output name="empty" message="tns:empty"/>
      </operation>
      <operation name="sharedName">
        <input name="empty" message="tns:empty"/>
        <output name="sharedName" message="tns:sharedName"/>
      </operation>
  -->
    </portType>
  
    <!-- binding declns -->
    <binding name="nonSharedName" type="tns:sharedName">
      <soap:binding
          style="rpc"
          transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="sharedName">
        <input name="sharedName">
          <soap:body use="encoded"/>
        </input>
        <output name="sharedName">
          <soap:body use="encoded"/>
        </output>
      </operation>
  <!-- a bug in WSDL4J doesn't allow overloaded operations 
      <operation name="sharedName">
        <input name="sharedName">
          <soap:body use="encoded"/>
        </input>
        <output name="empty">
          <soap:body use="encoded"/>
        </output>
      </operation>
      <operation name="sharedName">
        <input name="empty">
          <soap:body use="encoded"/>
        </input>
        <output name="sharedName">
          <soap:body use="encoded"/>
        </output>
      </operation>
  -->
    </binding>
  
    <binding name="sharedName" type="tns:sharedName">
      <soap:binding
          style="rpc"
          transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="sharedName">
        <input name="sharedName">
          <soap:body use="literal"/>
        </input>
        <output name="sharedName">
          <soap:body use="literal"/>
        </output>
      </operation>
  <!-- a bug in WSDL4J doesn't allow overloaded operations 
      <operation name="sharedName">
        <input name="sharedName">
          <soap:body use="literal"/>
        </input>
        <output name="empty">
          <soap:body use="encoded"/>
        </output>
      </operation>
      <operation name="sharedName">
        <input name="empty">
          <soap:body use="encoded"/>
        </input>
        <output name="sharedName">
          <soap:body use="encoded"/>
        </output>
      </operation>
  -->
    </binding>
  
    <binding name="anotherNonSharedName" type="tns:sharedName">
      <soap:binding
          style="rpc"
          transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="sharedName">
        <input name="sharedName">
          <soap:body use="encoded"/>
        </input>
        <output name="sharedName">
          <soap:body use="encoded"/>
        </output>
      </operation>
  <!-- a bug in WSDL4J doesn't allow overloaded operations 
      <operation name="sharedName">
        <input name="sharedName">
          <soap:body use="encoded"/>
        </input>
        <output name="empty">
          <soap:body use="encoded"/>
        </output>
      </operation>
      <operation name="sharedName">
        <input name="empty">
          <soap:body use="encoded"/>
        </input>
        <output name="sharedName">
          <soap:body use="encoded"/>
        </output>
      </operation>
  -->
    </binding>
  
    <!-- service decln -->
    <service name="sharedName">
      <port name="nonSharedName" binding="tns:nonSharedName">
        <soap:address location="http://localhost:8080/axis/services/nonSharedName"/>
      </port>
      <port name="anotherNonSharedName" binding="tns:anotherNonSharedName">
        <soap:address 
location="http://localhost:8080/axis/services/anotherNonSharedName"/>
      </port>
      <port name="sharedName" binding="tns:sharedName">
        <soap:address location="http://localhost:8080/axis/services/sharedName"/>
      </port>
    </service>
  
  </definitions>
  
  
  
  


Reply via email to