diff options
Diffstat (limited to 'branches/sca-java-1.x/samples/binding-echo-extension')
10 files changed, 93 insertions, 87 deletions
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. --> -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://echo" +<schema xmlns="http://www.w3.org/2001/XMLSchema" + targetNamespace="http://echo" xmlns:sca="http://www.osoa.org/xmlns/sca/1.0" - xmlns:e="http://echo" + xmlns:e="http://echo" elementFormDefault="qualified"> <import namespace="http://www.osoa.org/xmlns/sca/1.0"/> <element name="binding.echo" type="e:EchoBinding"/> - + <complexType name="EchoBinding"> <complexContent> <extension base="sca:Binding"> + <anyAttribute namespace="##other" processContents="lax"/> </extension> </complexContent> </complexType> 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. --> -<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" - xmlns:sca="http://www.osoa.org/xmlns/sca/1.0" - targetNamespace="http://sample/echo" - xmlns:se="http://sample/echo" - xmlns:e="http://echo" - xmlns:p="http://sample/policy" - xmlns:t="http://test" - name="EchoBinding"> - - <service name="EchoService" promote="EchoComponent"> - <interface.java interface="echo.Echo"/> - <e:binding.echo uri="http://example.com/temp" /> - </service> - +<composite + xmlns="http://www.osoa.org/xmlns/sca/1.0" + targetNamespace="http://sample/echo" + xmlns:e="http://echo" + xmlns:t="http://test" + name="EchoBinding"> <component name="EchoComponent"> - <implementation.java class="echo.EchoComponentImpl"/> + <implementation.java + class="echo.EchoComponentImpl" /> + <service name="Echo"> + <e:binding.echo uri="http://example.com/server" /> + </service> + <reference name="echoReference"> + <e:binding.echo uri="http://example.com/client" + policySets="t:EncryptionPolicy" /> + </reference> </component> - - <reference name="EchoReference" promote="EchoComponent/echoReference"> - <interface.java interface="echo.Echo"/> - <e:binding.echo uri="http://example.com/temp" policySets="t:EncryptionPolicy" /> - </reference> - </composite> |