axis-java-dev mailing list archives

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

Your statement about about only one IF or ELSE block being executed is incorrect.  In the
example if the endpoint is "hooxEndpoint2" then only the last IF is executed, but if the endpoint
is "hooxEndpoint3" then the first IF to set the endpoint is executed and the final else is
also executed and an unknown port name is returned since the ELSE is only applicable to the
final IF block.  The code is setting the endpoint and continuing not returning.

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


Mime
View raw message