On Tue, Feb 10, 2009 at 3:04 PM, Simon Nash <[email protected]> wrote:

> Simon Laws wrote:
>
>>    So it affects the namespace of the
>>    binding definition, but it shouldn't affect the namespace of the
>>    global elements used by message parts within the portType
>>    referenced by the binding (i.e., what goes on the wire).
>>    In this example the portType is "ns0:HelloWorld" which refers to
>>    global elements in the correct namespace "http:/helloworld"
>>
>>    So this looks to me like an Axis bug with namespaces for imported
>>    portTypes not being handled correctly.  It seems the binding's
>>    namespace is being used to register these operations instead of
>>    the correct namespace as specified in the portType.
>>
>>    Where in Axis is this registration happening?  Which version
>>    of Axis is being used?  With this information I could dig around
>>    a bit in the Axis code.
>>
>>
>> How, with this generated target namespace, do we intend that the binding
>> operation name is matched with the port type operation name?
>>
>> Simon
>>
> >
> The binding references the port type:
>  <wsdl:binding name="HelloWorldBinding" type="ns0:HelloWorld">
>
> The "ns0:" in this QName provides the cross-namespace linkage.
>
> You've got me wondering now whether the operation names in
> the binding will match those in the portType if the binding
> and portType come from different namespaces.  The operation
> names are NCNames so I would expect them to match.  I'll take
> a look at the WSDL spec and try to confirm this.
>
>  Simon
>
> Ok, so that's what I overlooked. The names in question in the WSDL are not
QNames.

In the class org.apache.axis2.description.AxisOperation.getName() returns a
QName. With this insight I'll look again and see if I'm interpreting what I
see correctly.

There is a line in
org.apache.axis2.description.AxisOperation.AxisDescription

                            AxisBindingOperation axisBindingOperation =
(AxisBindingOperation) axisBinding
                                    .getChild(axisOperation.getName());

That returns null in my particular scenario.

I'm on Axis2 1.4.1

Simon

Reply via email to