summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/contrib/modules/binding-websocket/src/main/java/org/apache/tuscany/sca/binding/websocket/runtime/WebsocketReferenceInvoker.java
diff options
context:
space:
mode:
authorfmoga <fmoga@13f79535-47bb-0310-9956-ffa450edef68>2011-07-24 13:32:46 +0000
committerfmoga <fmoga@13f79535-47bb-0310-9956-ffa450edef68>2011-07-24 13:32:46 +0000
commitfc0948d7ad308a47a80139a0779e08f24903df46 (patch)
tree05b27e4e3818f7a4c96f5c8f19468288cf8c9b6e /sca-java-2.x/contrib/modules/binding-websocket/src/main/java/org/apache/tuscany/sca/binding/websocket/runtime/WebsocketReferenceInvoker.java
parent8e0186ce3f9e6fa9ca58118f44c697fa53160334 (diff)
Migrate to embedded Jetty as websocket server. Add javascript service proxy injection.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1150357 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/contrib/modules/binding-websocket/src/main/java/org/apache/tuscany/sca/binding/websocket/runtime/WebsocketReferenceInvoker.java')
-rw-r--r--sca-java-2.x/contrib/modules/binding-websocket/src/main/java/org/apache/tuscany/sca/binding/websocket/runtime/WebsocketReferenceInvoker.java66
1 files changed, 1 insertions, 65 deletions
diff --git a/sca-java-2.x/contrib/modules/binding-websocket/src/main/java/org/apache/tuscany/sca/binding/websocket/runtime/WebsocketReferenceInvoker.java b/sca-java-2.x/contrib/modules/binding-websocket/src/main/java/org/apache/tuscany/sca/binding/websocket/runtime/WebsocketReferenceInvoker.java
index 84025491fe..65c9139a28 100644
--- a/sca-java-2.x/contrib/modules/binding-websocket/src/main/java/org/apache/tuscany/sca/binding/websocket/runtime/WebsocketReferenceInvoker.java
+++ b/sca-java-2.x/contrib/modules/binding-websocket/src/main/java/org/apache/tuscany/sca/binding/websocket/runtime/WebsocketReferenceInvoker.java
@@ -19,26 +19,13 @@
package org.apache.tuscany.sca.binding.websocket.runtime;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.channels.SocketChannel;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
import org.apache.tuscany.sca.assembly.EndpointReference;
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.invocation.Message;
-import org.apache.websocket.WebSocket;
-import org.apache.websocket.WebSocketConnector;
public class WebsocketReferenceInvoker implements Invoker {
- // TODO add timeout mechanism for persistent connections
- private static ConcurrentMap<String, WebSocket<SocketChannel>> persistentWebsockets = new ConcurrentHashMap<String, WebSocket<SocketChannel>>();
-
protected Operation operation;
protected EndpointReference endpoint;
@@ -48,58 +35,7 @@ public class WebsocketReferenceInvoker implements Invoker {
}
public Message invoke(Message msg) {
- try {
- WebSocket<SocketChannel> websocket = initWebsocketConnection(endpoint.getBinding().getURI());
- return doInvoke(msg, websocket);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- private WebSocket<SocketChannel> initWebsocketConnection(String uri) throws IOException, URISyntaxException {
- WebSocket<SocketChannel> websocket = null;
- synchronized (persistentWebsockets) {
- websocket = persistentWebsockets.get(uri);
- if (websocket == null) {
- WebSocketConnector connector = new WebSocketConnector();
- websocket = connector.connect(new URI(uri), null, "apache-tuscany", null);
- persistentWebsockets.put(uri, websocket);
- }
- }
- return websocket;
- }
-
- public Message doInvoke(Message msg, WebSocket<SocketChannel> websocket) throws IOException {
- String componentName = endpoint.getTargetEndpoint().getComponent().getName();
- String serviceName = endpoint.getTargetEndpoint().getService().getName();
- String operationName = operation.getName();
- String uri = componentName + "/" + serviceName + "/" + operationName;
- String payload = JSONUtil.encodeRequestParams((Object[]) msg.getBody());
- WebSocketBindingRequest request = new WebSocketBindingRequest(UUID.randomUUID().toString(), uri, payload);
-
- String operationResponse = invokeViaWebsocket(websocket, JSONUtil.encodeRequest(request));
-
- WebSocketBindingResponse response = JSONUtil.decodeResponse(operationResponse);
- Class<?> returnType = operation.getOutputType().getLogical().get(0).getPhysical();
- Object invocationResponse = JSONUtil.decodeResponsePayload(response.getPayload(), returnType);
- msg.setBody(invocationResponse);
- return msg;
- }
-
- private String invokeViaWebsocket(WebSocket<SocketChannel> websocket, String request) throws IOException {
- websocket.sendText(request);
- return websocket.receiveText();
- }
-
- public static void shutdown() {
- for (WebSocket<SocketChannel> websocket : persistentWebsockets.values()) {
- try {
- websocket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- persistentWebsockets.clear();
+ throw new RuntimeException("Not implemented yet");
}
}