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