You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Greg Dritschler <gr...@gmail.com> on 2011/08/23 22:38:44 UTC

asynchronous service interface and introspection

I am having some trouble with getting the input to an asynchronous service
operation processed correctly using a JAXB databinding.   I have tracked it
down to the following:

* JAXWSJavaInterfaceProcessor introspects the actual asynchronous Java
interface (i.e. the one with xxxAsync methods), and sets wrapper information
into the Operation objects.

* Subsequently when JavaInterfaceImpl.getOperations() is called, it
constructs a list of equivalent synchronous Operation objects and returns
that.  These Operation objects lack the wrapper information.

It seems like JAXWSJavaInterfaceProcessor, and possibly other introspectors,
need to be made sensitive to whether an asynchronous service interface is
being processed and adjust accordingly (e.g. not treat ResposeDispatch as
part of the business interface).

It seems like JavaInterfaceImpl.getOperations() needs to preserve the work
of the introspectors by copying/cloning the original Operation elements.  Or
maybe JavaInterfaceIntrospectorImpl should just build the Operation elements
correctly in the first place?  Is there any reason to build them for the
original async interface and then try to swizzle them at the end?  That
approach seems to hope it can hide the impact of async, but I'm not sure
whether that's a good idea or not.

Greg

Re: asynchronous service interface and introspection

Posted by ant elder <an...@gmail.com>.
On Tue, Aug 23, 2011 at 9:38 PM, Greg Dritschler
<gr...@gmail.com> wrote:
> I am having some trouble with getting the input to an asynchronous service
> operation processed correctly using a JAXB databinding.   I have tracked it
> down to the following:
> * JAXWSJavaInterfaceProcessor introspects the actual asynchronous Java
> interface (i.e. the one with xxxAsync methods), and sets wrapper information
> into the Operation objects.
> * Subsequently when JavaInterfaceImpl.getOperations() is called, it
> constructs a list of equivalent synchronous Operation objects and returns
> that.  These Operation objects lack the wrapper information.
> It seems like JAXWSJavaInterfaceProcessor, and possibly other introspectors,
> need to be made sensitive to whether an asynchronous service interface is
> being processed and adjust accordingly (e.g. not treat ResposeDispatch as
> part of the business interface).
> It seems like JavaInterfaceImpl.getOperations() needs to preserve the work
> of the introspectors by copying/cloning the original Operation elements.  Or
> maybe JavaInterfaceIntrospectorImpl should just build the Operation elements
> correctly in the first place?  Is there any reason to build them for the
> original async interface and then try to swizzle them at the end?  That
> approach seems to hope it can hide the impact of async, but I'm not sure
> whether that's a good idea or not.
> Greg

I've raised TUSCANY-3934 for this, and its related to TUSCANY-3931 too.

I think i agree it seems like it might be better for
JavaInterfaceIntrospectorImpl to just build the Operation elements
correctly in the first place. I'm going to give that approach a go
anyway and see how it turns out.

   ...ant