Ant,

You misquoted me slightly :-)

Here's a slightly more detailed version of my proposed "wsif-only" fix:

Try to find the bindingOperation using the input/output names given. Then
if no match is found, try using null for the input/output names. If a match
is then found we know that only one operation exists in the binding with
the same name as the operation we're looking for (for more details see the
com.ibm.wsdl.BindingImpl.getBindingOperation method in wsdl4j). Now check
the input/output names of the "matched" bindingOperation object. If they
are null then we accept it as a match. If they are not null then we
consider it to be a different operation.

One downside to this is that you inspect/iterate over the binding
operations twice. It's also still up for debate as to whether specifying
input/output names in a port type operation and not specifying them in the
corresponding binding operation is valid. The spec suggests it isn't for
overloaded operations, which makes sense, but seems to allow any
combination of port type/binding, input/output names for non-overloaded
operations.

Owen

Owen Burroughs
[EMAIL PROTECTED]



|---------+---------------------------->
|         |           Anthony          |
|         |           Elder/UK/IBM@IBMG|
|         |           B                |
|         |                            |
|         |           27/09/2002 11:58 |
|         |           Please respond to|
|         |           axis-dev         |
|         |                            |
|---------+---------------------------->
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
  |                                                                                    
                                                              |
  |       To:       [EMAIL PROTECTED]                                            
                                                              |
  |       cc:       "Jeff Greif" <[EMAIL PROTECTED]>                         
                                                              |
  |       Subject:  [wsif] Bug 13038 - WSIF's dynamic port/operation creation 
confusion about message names                                          |
  |                                                                                    
                                                              |
  |                                                                                    
                                                              |
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|



There's a bugzilla bug raised for wsif,
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13038, to do with wsif
not correctly finding an operation.

The problem is because the wsdl, http://www.ebi.ac.uk/xembl/XEMBL.wsdl,
specifies an input name on the operation in the portType, but does not
specify a name on the input in the binding. This causes the wsdl4j method
getBindingOperation in com.ibm.wsdl.BindingImpl to return null when wsif
calls it with the operation, input, and output names from the portType.

Reading the wsdl spec it not clear to me if it is valid wsdl to leave out
the names on the binding when they're specified in the portType.

If it is valid is this a wsdl4j bug or should wsif work around it?

We could fix it in wsif by doing something like (thanks Owen) trying to
find the bindingOperation using the input/output names given, then if no
match is found try using null for the input/output names, and then if still
no match is then found check to see if the binding input/output names for
the matched operation are null. If they are then use that bindingOperation.
If not then return null since it is not a "match".

What does anyone think?

       ...ant

Anthony Elder
[EMAIL PROTECTED]
Web Services Development
IBM UK Laboratories,  Hursley Park
(+44) 01962 818320, x248320, MP208.





Reply via email to