axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tom Jordahl (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Commented: (AXIS-1978) Invalid code generated in JavaServiceImplWriter w/multiple ports
Date Tue, 24 May 2005 17:04:17 GMT
     [ http://issues.apache.org/jira/browse/AXIS-1978?page=comments#action_66183 ]
     
Tom Jordahl commented on AXIS-1978:
-----------------------------------

Eric is correct, the patched code is correct, the original code will throw the unknown endpoint
exception.  We should fix that.

> 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


Mime
View raw message