summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo
diff options
context:
space:
mode:
Diffstat (limited to 'branches/sca-java-1.x/samples/binding-echo-extension/src/main/java/echo')
-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
5 files changed, 50 insertions, 41 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;
}
}