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


I created a simple SCA application, which involves an order process. 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