[ 
https://issues.apache.org/jira/browse/TUSCANY-1398?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jean-Sebastien Delfino resolved TUSCANY-1398.
---------------------------------------------

    Resolution: Fixed

> Nested Callbacks Fail
> ---------------------
>
>                 Key: TUSCANY-1398
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-1398
>             Project: Tuscany
>          Issue Type: Bug
>          Components: Java SCA Java Implementation Extension
>    Affects Versions: Java-SCA-0.90, Java-SCA-Next
>            Reporter: York (He Yuan) HUANG
>             Fix For: Java-SCA-Next
>
>         Attachments: non-block-orderprocess.zip
>
>
> I created a simple SCA application, which involves an order process.  The 
> application was attached. Below is the composite file of the application. 
> Note that, the callback method of Supplier will invoke the callback interface 
> of Customer. Thus, there are nested callbacks.
> <?xml version="1.0" encoding="UTF-8"?>
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
>       targetNamespace="http://orderprocess";
>       xmlns:cb="http://orderprocess";
>       name="orderprocess">
>       <component name="Customer">
>               <implementation.java class="orderprocess.CustomerImpl"/>
>               <reference name="supplier" target="Supplier/Order">
>                       <interface.java interface="orderprocess.Order" 
> callbackInterface="orderprocess.OrderNotification"/>
>               </reference>
>       </component>
>     <component name="Supplier">
>       <service name="Order">
>                       <interface.java interface="orderprocess.Order" 
> callbackInterface="orderprocess.OrderNotification"/>
>       </service>
>         <implementation.java class="orderprocess.SupplierImpl"/>
>         <reference name="railway" target="RailwayTransport/Shipment">
>                       <interface.java interface="orderprocess.Shipment" 
> callbackInterface="orderprocess.ShipmentNotification"/>
>         </reference>
>         <reference name="highway" target="HighwayTransport">
>                       <interface.java interface="orderprocess.Shipment" 
> callbackInterface="orderprocess.ShipmentNotification"/>
>         </reference>        
>     </component>
>     
>     <component name="HighwayTransport">
>         <service name="Shipment">
>                       <interface.java interface="orderprocess.Shipment" 
> callbackInterface="orderprocess.ShipmentNotification"/>
>       </service>
>         <implementation.java class="orderprocess.HighwayTransport"/>
>         <property name="period">5000</property>
>     </component>
>  
>     <component name="RailwayTransport">
>         <service name="Shipment">
>                       <interface.java interface="orderprocess.Shipment" 
> callbackInterface="orderprocess.ShipmentNotification"/>
>       </service>    
>         <implementation.java class="orderprocess.RaiwayTransport"/>
>         <property name="period">1000</property>
>     </component>
>     
> </composite>
> However, the application fails on both SCA Java 0.90 and trunk. Below is the 
> error message. When I debugged the application, I found that it might be 
> caused by wrong "from" info in ThreadMessageContext.
> java.lang.NullPointerException
>       at 
> org.apache.tuscany.sca.core.invocation.JDKCallbackInvocationHandler.invoke(JDKCallbackInvocationHandler.java:77)
>       at $Proxy11.notify(Unknown Source)
>       at orderprocess.SupplierImpl.notify(SupplierImpl.java:70)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:585)
>       at 
> org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invokeTarget(JavaTargetInvoker.java:112)
>       at 
> org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invoke(JavaTargetInvoker.java:134)
>       at 
> org.apache.tuscany.sca.implementation.java.invocation.TargetInvokerInvoker.invoke(TargetInvokerInvoker.java:46)
>       at 
> org.apache.tuscany.sca.core.invocation.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:84)
>       at 
> org.apache.tuscany.sca.core.invocation.JDKCallbackInvocationHandler.invoke(JDKCallbackInvocationHandler.java:85)
>       at $Proxy13.notify(Unknown Source)
>       at orderprocess.RaiwayTransport.doShipping(RaiwayTransport.java:56)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:585)
>       at 
> org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invokeTarget(JavaTargetInvoker.java:112)
>       at 
> org.apache.tuscany.sca.implementation.java.invocation.JavaTargetInvoker.invoke(JavaTargetInvoker.java:134)RuntimeException
>  invoking receiveResult: java.lang.NullPointerException
>       at 
> org.apache.tuscany.sca.implementation.java.invocation.TargetInvokerInvoker.invoke(TargetInvokerInvoker.java:46)
>       at 
> org.apache.tuscany.sca.core.invocation.NonBlockingInterceptor$1.run(NonBlockingInterceptor.java:68)
>       at org.apache.tuscany.sca.core.work.Jsr237Work.run(Jsr237Work.java:61)
>       at 
> org.apache.tuscany.sca.core.work.ThreadPoolWorkManager$DecoratingWork.run(ThreadPoolWorkManager.java:206)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>       at java.lang.Thread.run(Thread.java:595)

-- 
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