@OneWay over binding.ws arguments not being serialized properly
---------------------------------------------------------------

                 Key: TUSCANY-2186
                 URL: https://issues.apache.org/jira/browse/TUSCANY-2186
             Project: Tuscany
          Issue Type: Bug
            Reporter: Lou Amodeo


I am finding that @Oneway operations over binding.ws are not having method 
arguments marshalled properly apparently due to a change in  the sequence of 
interceptors. Previously the NonBlockingInterceptor was being added after the 
DataTransformationInterceptor.  The data transformation needs to occur prior
to the thread switch to the non-blocking interceptor to allow Axiom to marshall 
 the message payload before the thread switch.  

In the Tuscany revision level  I have R634808 the 
DataBindingRuntimeWireProcessor does this:

                chain.addInterceptor(0, interceptor);

In the past the index of 0 would have put the databinding interceptor at the 
front of the interceptor chain, ahead of the NonBlockingInterceptor (which has 
already been added at this point).  However in this Tuscany revision the index 
is ignored and instead a new phase-based ordering mechanism is used.  The above 
call to addInterceptor obviously wasn't changed yet at this level to replace 
the index with a phase.  It has been changed in the trunk and now looks like 
this:

String phase =
    (wire.getSource().getContract() instanceof ComponentReference) ? 
Phase.REFERENCE_INTERFACE
        : Phase.SERVICE_INTERFACE;
chain.addInterceptor(phase, interceptor);

RuntimeWireImpl is doing this to add the NonBlockingInterceptor:

chain.addInterceptor(Phase.SERVICE_BINDING, new 
NonBlockingInterceptor(workScheduler));

Here are the relevant phase definitions in PhaseManager:

    private final static String[] SYSTEM_SERVICE_PHASES =
        {Phase.SERVICE_BINDING, Phase.SERVICE_POLICY, Phase.SERVICE_INTERFACE, 
Phase.SERVICE};

I assume this is an ordered list, so this means the NonBlockingInterceptor 
(phase SERVICE_BINDING) is before the DataBindingInterceptor (phase 
SERVICE_INTERFACE), which is still opposite of what we want to solve this 
problem.   

Thanks for your help! 

 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to