You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by is...@apache.org on 2006/12/07 15:27:03 UTC

svn commit: r483467 - in /incubator/tuscany/java: samples/sca/simplecallback/src/main/java/simplecallback/ sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/

Author: isilval
Date: Thu Dec  7 06:27:02 2006
New Revision: 483467

URL: http://svn.apache.org/viewvc?view=rev&rev=483467
Log:
Adding check for NoRegisteredCallbackException

Modified:
    incubator/tuscany/java/samples/sca/simplecallback/src/main/java/simplecallback/MyServiceImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaAtomicComponent.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaTargetInvoker.java

Modified: incubator/tuscany/java/samples/sca/simplecallback/src/main/java/simplecallback/MyServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/simplecallback/src/main/java/simplecallback/MyServiceImpl.java?view=diff&rev=483467&r1=483466&r2=483467
==============================================================================
--- incubator/tuscany/java/samples/sca/simplecallback/src/main/java/simplecallback/MyServiceImpl.java (original)
+++ incubator/tuscany/java/samples/sca/simplecallback/src/main/java/simplecallback/MyServiceImpl.java Thu Dec  7 06:27:02 2006
@@ -42,6 +42,10 @@
     
     public void someMethod(String arg) {
         // invoke the callback
-        myServiceCallback.receiveResult(arg + " -> receiveResult");
+        try {
+            myServiceCallback.receiveResult(arg + " -> receiveResult");
+        } catch(RuntimeException e) {
+            System.out.println("RuntimeException invoking receiveResult: " + e.toString());
+        }
     }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaAtomicComponent.java?view=diff&rev=483467&r1=483466&r2=483467
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaAtomicComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaAtomicComponent.java Thu Dec  7 06:27:02 2006
@@ -75,14 +75,16 @@
 
     public TargetInvoker createTargetInvoker(String targetName, Operation operation, InboundWire callbackWire) {
         Method[] methods;
+        Class callbackClass = null;
         if (operation.isCallback()) {
-            methods = operation.getServiceContract().getCallbackClass().getMethods();
+            callbackClass = operation.getServiceContract().getCallbackClass(); 
+            methods = callbackClass.getMethods();
 
         } else {
             methods = operation.getServiceContract().getInterfaceClass().getMethods();
         }
         Method method = findMethod(operation, methods);
-        return new JavaTargetInvoker(method, this, callbackWire, workContext, monitor);
+        return new JavaTargetInvoker(method, this, callbackWire, callbackClass, workContext, monitor);
     }
 
     protected void onServiceWire(InboundWire wire) {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaTargetInvoker.java?view=diff&rev=483467&r1=483466&r2=483467
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaTargetInvoker.java Thu Dec  7 06:27:02 2006
@@ -29,6 +29,7 @@
 import org.apache.tuscany.spi.extension.TargetInvokerExtension;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.InvocationRuntimeException;
+import org.osoa.sca.NoRegisteredCallbackException;
 
 import static org.apache.tuscany.core.util.JavaIntrospectionHelper.findClosestMatchingMethod;
 import static org.apache.tuscany.core.util.JavaIntrospectionHelper.getAllUniquePublicProtectedMethods;
@@ -42,21 +43,36 @@
     protected Method operation;
     protected JavaAtomicComponent component;
     protected Object target;
+    protected Class callbackClass;
 
     public JavaTargetInvoker(Method operation,
                              JavaAtomicComponent component,
                              InboundWire wire,
+                             Class callbackClass,
                              WorkContext context,
                              ExecutionMonitor monitor) {
         super(wire, context, monitor);
         assert operation != null : "Operation method cannot be null";
         this.operation = operation;
         this.component = component;
+        this.callbackClass = callbackClass;
+    }
+    
+    public JavaTargetInvoker(Method operation,
+                             JavaAtomicComponent component,
+                             InboundWire callbackWire,
+                             WorkContext context,
+                             ExecutionMonitor monitor) {
+        this(operation, component, callbackWire, null, context, monitor);
     }
 
     public Object invokeTarget(final Object payload, final short sequence) throws InvocationTargetException {
         try {
             Object instance = getInstance(sequence);
+            if (callbackClass != null && !callbackClass.isInstance(instance)) {
+                throw new NoRegisteredCallbackException("Instance is does not implement callback: "
+                                                        + callbackClass.toString());
+            }
             if (!operation.getDeclaringClass().isInstance(instance)) {
                 Set<Method> methods = getAllUniquePublicProtectedMethods(instance.getClass());
                 Method newOperation = findClosestMatchingMethod(operation.getName(),



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org