Scott Kurz wrote:
Mike,
Just trying to use this issue to test/expand my own understanding of the
Tuscany databinding framework.
You're saying there's a problem with setting (resetting) the Axiom DB on the
IC obtained from the WebServiceBindingImpl. I'm just trying to understand
what the problem could be.
What second purpose could this particular IC be serving that you need to
clone the original and only set the Axiom DB on a cloned copy?
Say we look at the DataBindingRuntimeWireProcessor processing and we are
looking at the service-side Axis2 binding, where the wireSource IC is then
the Axis2 binding IC and the wireTarget IC is a BPEL impl IC.
So what side effect is happening in setting the wireSource IC with the Axiom
DB? It seems the wireTarget side of the question should be built off a
completely separate IC object... even though this IC is also built off the
same WSDL file, I'd think distinct objects should be created and you
wouldn't need a clone.
Scott
Scott,
Glad you've taken this out of the JIRA comments and on to the list - easier to
communicate this way ;-).
The point about the original code in Axis2ReferenceBindingProvider and Axis2ServiceBindingProvider
is that there is SUPPOSED to be a new InterfaceContract for the Axis binding itself - separate from
the InterfaceContract of the BPEL component. The wire, when it is created must be able to see the
databinding for the BPEL process (DOM) and the separate databinding for the Axis binding code
(OMElements) and then generate the appropriate conversions between the two.
The current code in Axis2ReferenceBindingProvider and Axis2ServiceBindingProvider is wrong since for
a WSDL InterfaceContract, it does not create a separate InterfaceContract for the Axis binding - it
simply hands over the one from the BPEL Process. When the Axis binding does some updates, in
particular for the databinding used, it simply overwrites the BPEL Process information. This causes
the databinding conversion code to assume that no transformation is necessary and as a result, the
wrong stuff gets delivered. Result: BANG! - some nasty type conversion failure at a random point
in the code.
I'd have submitted a fix by now if I had not found yet another bug lurking
behind this one....
I want to get my Sample code for BPEL process exposed as a Webservice working
before I commit a fix.
Yours, Mike.