summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/samples/binding-echo-extension
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-06-13 18:53:15 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-06-13 18:53:15 +0000
commit9aa6e3d0558327677d6a072633db47c35ef7d0c0 (patch)
treeeec15b42f6d264b09087bd1d77616d25f7510305 /branches/sca-java-1.x/samples/binding-echo-extension
parentc5c2ad8739e959e3e847aec2659200d871ef1be2 (diff)
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
Diffstat (limited to '')
-rw-r--r--branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoBindingInvoker.java21
-rw-r--r--branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoReferenceBindingProvider.java10
-rw-r--r--branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/provider/EchoServiceBindingProvider.java24
-rw-r--r--branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/server/EchoServer.java22
-rw-r--r--branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo/server/EchoServiceListener.java14
-rw-r--r--branches/sca-java-1.x/samples/binding-echo-extension/src/main/resources/sample-binding-echo.xsd15
-rw-r--r--branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoComponentImpl.java10
-rw-r--r--branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoReferenceTestCase.java10
-rw-r--r--branches/sca-java-1.x/samples/binding-echo-extension/src/test/java/echo/EchoServiceTestCase.java12
-rw-r--r--branches/sca-java-1.x/samples/binding-echo-extension/src/test/resources/EchoBinding.composite42
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>