You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/04/13 22:05:05 UTC

svn commit: r528638 - in /incubator/tuscany/java/sca/samples/echo-binding/src: main/java/echo/EchoServer.java main/java/echo/EchoService.java test/java/echo/EchoServiceTestCase.java

Author: jsdelfino
Date: Fri Apr 13 13:05:04 2007
New Revision: 528638

URL: http://svn.apache.org/viewvc?view=rev&rev=528638
Log:
Show how to implement a service binding in the echo-binding sample.

Modified:
    incubator/tuscany/java/sca/samples/echo-binding/src/main/java/echo/EchoServer.java
    incubator/tuscany/java/sca/samples/echo-binding/src/main/java/echo/EchoService.java
    incubator/tuscany/java/sca/samples/echo-binding/src/test/java/echo/EchoServiceTestCase.java

Modified: incubator/tuscany/java/sca/samples/echo-binding/src/main/java/echo/EchoServer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/echo-binding/src/main/java/echo/EchoServer.java?view=diff&rev=528638&r1=528637&r2=528638
==============================================================================
--- incubator/tuscany/java/sca/samples/echo-binding/src/main/java/echo/EchoServer.java (original)
+++ incubator/tuscany/java/sca/samples/echo-binding/src/main/java/echo/EchoServer.java Fri Apr 13 13:05:04 2007
@@ -19,6 +19,7 @@
 
 package echo;
 
+import java.lang.reflect.InvocationTargetException;
 import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
@@ -61,7 +62,7 @@
      * @param input
      * @return
      */
-    public String sendReceive(String composite, String service, String input) {
+    public String sendReceive(String composite, String service, String input) throws InvocationTargetException {
         URI uri = URI.create("/" + composite + "/#" + service);
         return services.get(uri).sendReceive(input);
     }

Modified: incubator/tuscany/java/sca/samples/echo-binding/src/main/java/echo/EchoService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/echo-binding/src/main/java/echo/EchoService.java?view=diff&rev=528638&r1=528637&r2=528638
==============================================================================
--- incubator/tuscany/java/sca/samples/echo-binding/src/main/java/echo/EchoService.java (original)
+++ incubator/tuscany/java/sca/samples/echo-binding/src/main/java/echo/EchoService.java Fri Apr 13 13:05:04 2007
@@ -18,14 +18,21 @@
  */
 package echo;
 
+import java.lang.reflect.InvocationTargetException;
 import java.net.URI;
 
 import javax.xml.namespace.QName;
 
+import org.apache.tuscany.core.util.PojoWorkContextTunnel;
 import org.apache.tuscany.interfacedef.Operation;
 import org.apache.tuscany.spi.CoreRuntimeException;
 import org.apache.tuscany.spi.component.TargetInvokerCreationException;
+import org.apache.tuscany.spi.component.WorkContext;
 import org.apache.tuscany.spi.extension.ServiceBindingExtension;
+import org.apache.tuscany.spi.wire.Interceptor;
+import org.apache.tuscany.spi.wire.InvocationChain;
+import org.apache.tuscany.spi.wire.Message;
+import org.apache.tuscany.spi.wire.MessageImpl;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 
 /**
@@ -45,12 +52,36 @@
     }
 
     public TargetInvoker createTargetInvoker(String targetName, Operation operation, boolean isCallback) throws TargetInvokerCreationException {
-        // TODO Auto-generated method stub
-        return null;
+        //TODO Show support for callbacks in this sample
+        throw new UnsupportedOperationException();
     }
 
-    String sendReceive(String input) {
-        return input;
+    String sendReceive(String input) throws InvocationTargetException {
+        
+        // Get the invocation chain for the first operation in the service interface
+        InvocationChain chain = wire.getInvocationChains().get(0);
+        Interceptor headInterceptor = chain.getHeadInterceptor();
+        WorkContext workContext = PojoWorkContextTunnel.getThreadWorkContext();
+        if (headInterceptor == null) {
+            // short-circuit the dispatch and invoke the target directly
+            TargetInvoker targetInvoker = chain.getTargetInvoker();
+            return (String)targetInvoker.invokeTarget(new Object[]{input}, TargetInvoker.NONE, workContext);
+        } else {
+
+            Message msg = new MessageImpl();
+            msg.setTargetInvoker(chain.getTargetInvoker());
+            msg.setBody(new Object[]{input});
+            msg.setWorkContext(workContext);
+            Message resp;
+
+            // dispatch and get the response
+            resp = headInterceptor.invoke(msg);
+            Object body = resp.getBody();
+            if (resp.isFault()) {
+                throw new InvocationTargetException((Throwable) body);
+            }
+            return (String)body;
+        }
     }
     
 }

Modified: incubator/tuscany/java/sca/samples/echo-binding/src/test/java/echo/EchoServiceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/echo-binding/src/test/java/echo/EchoServiceTestCase.java?view=diff&rev=528638&r1=528637&r2=528638
==============================================================================
--- incubator/tuscany/java/sca/samples/echo-binding/src/test/java/echo/EchoServiceTestCase.java (original)
+++ incubator/tuscany/java/sca/samples/echo-binding/src/test/java/echo/EchoServiceTestCase.java Fri Apr 13 13:05:04 2007
@@ -35,7 +35,7 @@
     	SCARuntime.stop();
     }
 
-    public void testEchoBinding() {
+    public void testEchoBinding() throws Exception {
         String result = EchoServer.getServer().sendReceive("EchoBinding", "EchoService", "foo");
         assertEquals(result, "foo");
     }



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