[ http://issues.apache.org/jira/browse/AXIS-1978?page=all ]
     
Venkat Reddy resolved AXIS-1978:
--------------------------------

    Resolution: Fixed

Checked in the patch. Thanks Eric.

> Invalid code generated in JavaServiceImplWriter w/multiple ports
> ----------------------------------------------------------------
>
>          Key: AXIS-1978
>          URL: http://issues.apache.org/jira/browse/AXIS-1978
>      Project: Axis
>         Type: Bug
>   Components: WSDL processing
>  Environment: N/A
>     Reporter: Eric Hardesty
>     Priority: Minor

>
> The code generated by writeSetEndpointAddress in JavaServiceImplWriter is 
> incorrect if multiple ports are included for a service.  The code needs to be 
> similar to writeGetPortQNameClass where the else is included at the end of 
> the if statement.  Below I have a sample an example of the WSDL, generated 
> Locator & patch file(untested at this time):
> WSDL:
>    <service name="HooXEndpointInterfaceService">
>       <port binding="impl:HooXEndpointHooxBinding" name="hooxEndpoint3">
>          <wsdlsoap:address 
> location="http://localhost:9000/hooxsample/hooxEndpoint1/hooxEndpoint1"/>
>       </port>
>       <port binding="impl:HooXEndpointHooxBinding" name="hooxEndpoint2">
>          <wsdlsoap:address 
> location="http://localhost:9000/hooxsample/hooxEndpoint1/hooxEndpoint1"/>
>       </port>
>       <port binding="impl:HooXEndpointSoapBinding" name="hooxEndpoint1">
>          <wsdlsoap:address 
> location="http://localhost:9000/hooxsample/hooxEndpoint1/hooxEndpoint1"/>
>       </port>
>    </service>
> HooXEndpointInterfaceServiceLocator:
>     /**
>     * Set the endpoint address for the specified port name.
>     */
>     public void setEndpointAddress(java.lang.String portName, 
> java.lang.String address) throws javax.xml.rpc.ServiceException {
>         if ("hooxEndpoint3".equals(portName)) {
>             sethooxEndpoint3EndpointAddress(address);
>         }
>         if ("hooxEndpoint1".equals(portName)) {
>             sethooxEndpoint1EndpointAddress(address);
>         }
>         if ("hooxEndpoint2".equals(portName)) {
>             sethooxEndpoint2EndpointAddress(address);
>         }
>         else { // Unknown Port Name
>             throw new javax.xml.rpc.ServiceException(" Cannot set Endpoint 
> Address for Unknown Port" + portName);
>         }
> Patch:
> Index: JavaServiceImplWriter.java
> ===================================================================
> RCS file: 
> /home/cvspublic/ws-axis/java/src/org/apache/axis/wsdl/toJava/JavaServiceImplWriter.java,v
> retrieving revision 1.44
> diff -u -r1.44 JavaServiceImplWriter.java
> --- JavaServiceImplWriter.java        20 Jan 2005 21:35:22 -0000      1.44
> +++ JavaServiceImplWriter.java        5 May 2005 22:54:48 -0000
> @@ -601,15 +601,18 @@
>                  "    public void setEndpointAddress(java.lang.String 
> portName, java.lang.String address) throws "
>                  + javax.xml.rpc.ServiceException.class.getName() + " {");
>  
> +        pw.print("        ");
>          for (Iterator p = portNames.iterator(); p.hasNext();) {
>              String name = (String) p.next();
>  
> -            pw.println("        if (\"" + name + "\".equals(portName)) {");
> +            pw.println("if (\"" + name + "\".equals(portName)) {");
>              pw.println("            set" + name + 
> "EndpointAddress(address);");
>              pw.println("        }");
> +            pw.print("        else ");
>          }
>  
> -        pw.println("        else { // Unknown Port Name");
> +        pw.println(" { // Unknown Port Name");
> +
>          pw.println("            throw new "
>                  + javax.xml.rpc.ServiceException.class.getName() + "(\" "
>                  + Messages.getMessage("unknownPortName")

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to