From 9aa6e3d0558327677d6a072633db47c35ef7d0c0 Mon Sep 17 00:00:00 2001 From: rfeng Date: Sat, 13 Jun 2009 18:53:15 +0000 Subject: Refine echo binding to use EchoServer for the reference calls git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@784448 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/echo/provider/EchoBindingInvoker.java | 21 ++++++----- .../provider/EchoReferenceBindingProvider.java | 10 +++--- .../echo/provider/EchoServiceBindingProvider.java | 24 +++++++------ .../src/main/java/echo/server/EchoServer.java | 22 +++++++----- .../main/java/echo/server/EchoServiceListener.java | 14 ++++---- .../src/main/resources/sample-binding-echo.xsd | 15 ++++---- .../src/test/java/echo/EchoComponentImpl.java | 10 +++--- .../src/test/java/echo/EchoReferenceTestCase.java | 10 +++--- .../src/test/java/echo/EchoServiceTestCase.java | 12 +++---- .../src/test/resources/EchoBinding.composite | 42 ++++++++++------------ 10 files changed, 93 insertions(+), 87 deletions(-) (limited to 'branches/sca-java-1.x/samples/binding-echo-extension') diff --git a/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoBindingInvoker.java b/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoBindingInvoker.java index 91697fcd9a..f9bb195b29 100644 --- a/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoBindingInvoker.java +++ b/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoBindingInvoker.java @@ -6,27 +6,30 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. */ package echo.provider; import org.apache.tuscany.sca.invocation.Invoker; import org.apache.tuscany.sca.invocation.Message; +import echo.server.EchoServer; + /** * Invoker for the sample echo binding. */ class EchoBindingInvoker implements Invoker { - - EchoBindingInvoker() { + private String uri; + EchoBindingInvoker(String uri) { + this.uri = uri; } public Message invoke(Message msg) { @@ -35,14 +38,14 @@ class EchoBindingInvoker implements Invoker { Object[] args = msg.getBody(); // echo back the first parameter, a real binding would invoke some API for flowing the request - Object result = args[0]; - + Object result = EchoServer.getServer().call(uri, args); + msg.setBody(result); - + } catch (Exception e) { msg.setFaultBody(e); } return msg; - } + } } diff --git a/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoReferenceBindingProvider.java b/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoReferenceBindingProvider.java index 0efc319af9..dbd0c535f4 100644 --- a/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoReferenceBindingProvider.java +++ b/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoReferenceBindingProvider.java @@ -6,15 +6,15 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. */ package echo.provider; @@ -51,9 +51,9 @@ class EchoReferenceBindingProvider implements ReferenceBindingProvider { return new EchoBindingPoliciedInvoker(policySetAttachPoint.getPolicySets()); } } - return new EchoBindingInvoker(); + return new EchoBindingInvoker(binding.getURI()); } - + public boolean supportsOneWayInvocation() { return false; } diff --git a/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoServiceBindingProvider.java b/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoServiceBindingProvider.java index 1cd1e5af4e..43eb562c55 100644 --- a/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoServiceBindingProvider.java +++ b/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoServiceBindingProvider.java @@ -6,15 +6,15 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. */ package echo.provider; @@ -35,14 +35,16 @@ import echo.server.EchoServiceListener; * Implementation of the Echo binding provider. */ class EchoServiceBindingProvider implements ServiceBindingProvider { - + private RuntimeComponent component; - private RuntimeComponentService service; + private RuntimeComponentService service; private EchoBinding binding; private MessageFactory messageFactory; - + EchoServiceBindingProvider(RuntimeComponent component, - RuntimeComponentService service, EchoBinding binding, MessageFactory messageFactory) { + RuntimeComponentService service, + EchoBinding binding, + MessageFactory messageFactory) { this.component = component; this.service = service; this.binding = binding; @@ -52,24 +54,24 @@ class EchoServiceBindingProvider implements ServiceBindingProvider { public InterfaceContract getBindingInterfaceContract() { return service.getInterfaceContract(); } - + public boolean supportsOneWayInvocation() { return false; } public void start() { - RuntimeComponentService componentService = (RuntimeComponentService) service; + RuntimeComponentService componentService = (RuntimeComponentService)service; RuntimeWire wire = componentService.getRuntimeWire(binding); InvocationChain chain = wire.getInvocationChains().get(0); - + // Register with the hosting server String uri = binding.getURI(); EchoServer.getServer().register(uri, new EchoServiceListener(chain.getHeadInvoker(), messageFactory)); } public void stop() { - + // Unregister from the hosting server String uri = component.getURI() + "/" + binding.getName(); EchoServer.getServer().unregister(uri); diff --git a/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/server/EchoServer.java b/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/server/EchoServer.java index 8ea2395d04..7f3a4f9ac3 100644 --- a/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/server/EchoServer.java +++ b/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/server/EchoServer.java @@ -6,15 +6,15 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. */ package echo.server; @@ -24,7 +24,7 @@ import java.util.HashMap; import java.util.Map; /** - * A sample Echo server, showing how to integrate service bindings. + * A sample Echo server, showing how to integrate service bindings. */ public class EchoServer { @@ -46,7 +46,7 @@ public class EchoServer { /** * Register a service under the given name. - * + * * @param service * @param name */ @@ -66,13 +66,17 @@ public class EchoServer { /** * Dispatch an incoming interaction to the corresponding service. - * + * * @param uri - * @param input + * @param args * @return */ - public String sendReceive(String uri, String input) throws InvocationTargetException { - return services.get(uri).sendReceive(input); + public Object call(String uri, Object[] args) throws InvocationTargetException { + EchoServiceListener service = services.get(uri); + if (service == null) { + return args[0]; + } + return service.call(args); } } diff --git a/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/server/EchoServiceListener.java b/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/server/EchoServiceListener.java index 32336dd94f..bc6aa74037 100644 --- a/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/server/EchoServiceListener.java +++ b/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/server/EchoServiceListener.java @@ -6,15 +6,15 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. */ package echo.server; @@ -34,19 +34,19 @@ public class EchoServiceListener { this.messageFactory = messageFactory; } - public String sendReceive(String input) throws InvocationTargetException { + public Object call(Object[] args) throws InvocationTargetException { // Create a request message Message request = messageFactory.createMessage(); - request.setBody(new Object[] {input}); - + request.setBody(args); + // Dispatch and get the response Message response = invoker.invoke(request); Object body = response.getBody(); if (response.isFault()) { throw new InvocationTargetException((Throwable)body); } - return (String)body; + return body; } } diff --git a/branches/sca-java-1.x/samples/binding-echo-extension/src/main/resources/sample-binding-echo.xsd b/branches/sca-java-1.x/samples/binding-echo-extension/src/main/resources/sample-binding-echo.xsd index 9b64df4871..75edf068ae 100644 --- a/branches/sca-java-1.x/samples/binding-echo-extension/src/main/resources/sample-binding-echo.xsd +++ b/branches/sca-java-1.x/samples/binding-echo-extension/src/main/resources/sample-binding-echo.xsd @@ -7,29 +7,30 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. --> - - + + diff --git a/branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoComponentImpl.java b/branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoComponentImpl.java index ba68dfe908..cec1c2bdbc 100644 --- a/branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoComponentImpl.java +++ b/branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoComponentImpl.java @@ -6,27 +6,29 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. */ package echo; import org.osoa.sca.annotations.Constructor; import org.osoa.sca.annotations.Reference; +import org.osoa.sca.annotations.Service; /** * A simple client component that uses a reference with an Echo binding. - * + * * @version $Rev$ $Date$ */ +@Service(Echo.class) public class EchoComponentImpl implements Echo { private Echo echoReference; diff --git a/branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoReferenceTestCase.java b/branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoReferenceTestCase.java index 7383077f18..8922c7702a 100644 --- a/branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoReferenceTestCase.java +++ b/branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoReferenceTestCase.java @@ -6,15 +6,15 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. */ package echo; @@ -35,7 +35,7 @@ public class EchoReferenceTestCase extends TestCase { scaDomain = SCADomain.newInstance("EchoBinding.composite"); service = scaDomain.getService(Echo.class, "EchoComponent"); } - + @Override protected void tearDown() throws Exception { scaDomain.close(); @@ -43,7 +43,7 @@ public class EchoReferenceTestCase extends TestCase { public void testEchoBinding() { String result = service.echo("foo"); - assertEquals(result, "oof"); + assertEquals("oof", result); } diff --git a/branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoServiceTestCase.java b/branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoServiceTestCase.java index dbc047ee77..8056e43280 100644 --- a/branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoServiceTestCase.java +++ b/branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoServiceTestCase.java @@ -6,15 +6,15 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. */ package echo; @@ -35,15 +35,15 @@ public class EchoServiceTestCase extends TestCase { protected void setUp() throws Exception { scaDomain = SCADomain.newInstance("EchoBinding.composite"); } - + @Override protected void tearDown() throws Exception { scaDomain.close(); } public void testEchoBinding() throws Exception { - String result = EchoServer.getServer().sendReceive("http://example.com/temp", "foo"); - assertEquals(result, "oof"); + Object result = EchoServer.getServer().call("http://example.com/server", new Object[] {"foo"}); + assertEquals("oof", result); } diff --git a/branches/sca-java-1.x/samples/binding-echo-extension/src/test/resources/EchoBinding.composite b/branches/sca-java-1.x/samples/binding-echo-extension/src/test/resources/EchoBinding.composite index 456dfbd94d..3b81be5bf4 100644 --- a/branches/sca-java-1.x/samples/binding-echo-extension/src/test/resources/EchoBinding.composite +++ b/branches/sca-java-1.x/samples/binding-echo-extension/src/test/resources/EchoBinding.composite @@ -7,37 +7,31 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. --> - - - - - - - + - + + + + + + + - - - - - - -- cgit v1.2.3