Updated Branches:
  refs/heads/javelin bcff47d4b -> 17f2af409

modify RPC API flavor to be in Java Future<T> style


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/17f2af40
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/17f2af40
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/17f2af40

Branch: refs/heads/javelin
Commit: 17f2af409e69e9acf8dca695a2279d1d5c393024
Parents: bcff47d
Author: Kelven Yang <[email protected]>
Authored: Mon Nov 19 17:36:56 2012 -0800
Committer: Kelven Yang <[email protected]>
Committed: Mon Nov 19 17:37:13 2012 -0800

----------------------------------------------------------------------
 .../framework/messaging/ComponentContainer.java    |    5 ++
 .../framework/messaging/ComponentEndpoint.java     |   15 ----
 .../framework/messaging/MessageSerializer.java     |    4 +-
 .../framework/messaging/RpcCallContext.java        |   56 ---------------
 .../framework/messaging/RpcCallbackListener.java   |   24 ++++++
 .../framework/messaging/RpcClientCall.java         |   19 ++++-
 .../framework/messaging/RpcEndpoint.java           |    1 -
 .../framework/messaging/RpcProvider.java           |    5 +-
 .../framework/messaging/RpcServerCall.java         |    1 -
 .../framework/messaging/TransportEndpoint.java     |    2 +
 .../messaging/client/ClientTransportEndpoint.java  |    6 ++
 11 files changed, 57 insertions(+), 81 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentContainer.java
----------------------------------------------------------------------
diff --git 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentContainer.java
 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentContainer.java
new file mode 100644
index 0000000..1d0f274
--- /dev/null
+++ 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentContainer.java
@@ -0,0 +1,5 @@
+package org.apache.cloudstack.framework.messaging;
+
+public interface ComponentContainer {
+       ComponentEndpoint wireComponent(ComponentEndpoint endpoint, String 
predefinedAddress);
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentEndpoint.java
----------------------------------------------------------------------
diff --git 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentEndpoint.java
 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentEndpoint.java
index 442f986..92443e5 100644
--- 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentEndpoint.java
+++ 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentEndpoint.java
@@ -45,16 +45,6 @@ public class ComponentEndpoint implements RpcEndpoint, 
Subscriber {
                rpcProvider.registerRpcEndpoint(this);
        }
 
-       // it will throw RpcRuntimeException in case of transport
-       public String call(RpcCallContext callContext, String targetAddress, 
String command, Object cmdArg)
-       {
-               return rpcProvider.call(this, callContext, targetAddress, 
command, cmdArg);
-       }
-       
-       public RpcClientCall asyncCall(RpcCallContext callContext, String 
targetAddress, String command, Object cmdArg) {
-               return rpcProvider.asyncCall(this, callContext, targetAddress, 
command, cmdArg);
-       }
-
        @Override
        public void onCallReceive(RpcServerCall call) {
                // TODO Auto-generated method stub
@@ -62,11 +52,6 @@ public class ComponentEndpoint implements RpcEndpoint, 
Subscriber {
        }
        
        @Override
-       public void onCallReturn(RpcClientCall call, Object returnObject, 
RpcException e) {
-               // ???
-       }
-       
-       @Override
        public void onPublishEvent(String subject, String senderAddress, Object 
args) {
                // TODO
        }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/MessageSerializer.java
----------------------------------------------------------------------
diff --git 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/MessageSerializer.java
 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/MessageSerializer.java
index 3aafd85..d07a3ad 100644
--- 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/MessageSerializer.java
+++ 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/MessageSerializer.java
@@ -19,6 +19,6 @@
 package org.apache.cloudstack.framework.messaging;
 
 public interface MessageSerializer {
-       String serializeTo(Object object);
-       Object serializeFrom(String message);
+       <T>String serializeTo(Class<?> clz, T object);
+       <T> T serializeFrom(String message);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallContext.java
----------------------------------------------------------------------
diff --git 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallContext.java
 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallContext.java
deleted file mode 100644
index 2d379b3..0000000
--- 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallContext.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// 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.
-package org.apache.cloudstack.framework.messaging;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class RpcCallContext {
-       private final static int DEFAULT_RPC_TIMEOUT = 10000;
-       
-       Map<String, Object> _contextMap = new HashMap<String, Object>();
-       int _timeoutMilliSeconds = DEFAULT_RPC_TIMEOUT;
-       String _pipeline;
-       
-       public RpcCallContext() {
-       }
-       
-       public int getTimeoutMilliSeconds() {
-               return _timeoutMilliSeconds;
-       }
-       
-       public void setTimeoutMilliSeconds(int timeoutMilliseconds) {
-               _timeoutMilliSeconds = timeoutMilliseconds;
-       }
-       
-       public void setPipeline(String pipeName) {
-               _pipeline = pipeName;
-       }
-       
-       public String getPipeline() {
-               return _pipeline;
-       }
-       
-       @SuppressWarnings("unchecked")
-       public <T> T getContextParameter(String key) {
-               return (T)_contextMap.get(key);
-       }
-       
-       public void setContextParameter(String key, Object object) {
-               _contextMap.put(key, object);
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallbackListener.java
----------------------------------------------------------------------
diff --git 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallbackListener.java
 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallbackListener.java
new file mode 100644
index 0000000..729c41d
--- /dev/null
+++ 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallbackListener.java
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * 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.
+ */
+package org.apache.cloudstack.framework.messaging;
+
+public interface RpcCallbackListener<T> {
+       void onSuccess(T result);
+       void onFailure(RpcException e);
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCall.java
----------------------------------------------------------------------
diff --git 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCall.java
 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCall.java
index 7d9cd8f..5a1e9c4 100644
--- 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCall.java
+++ 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCall.java
@@ -16,10 +16,23 @@
 // under the License.
 package org.apache.cloudstack.framework.messaging;
 
+import java.util.concurrent.TimeUnit;
+
 public interface RpcClientCall {
-       String getCommand();
-       Object getCommandArgument();
-       RpcCallContext getCallContext();
+       RpcClientCall setCommand(String cmd);
+       RpcClientCall setPipeline(String pipeline);
+       RpcClientCall setTimeout(TimeUnit timeout);
+       
+       RpcClientCall setCommandArg(Object arg);
+       Object getCommandArg();
+       
+       RpcClientCall setContextParam(String key, Object param);
+       Object getContextParam(String key);
        
+       <T> RpcClientCall addCallbackListener(RpcCallbackListener<T> listener);
+       
+       void apply();
        void cancel();
+       
+       <T> T get();
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcEndpoint.java
----------------------------------------------------------------------
diff --git 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcEndpoint.java 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcEndpoint.java
index ff00728..375c1d3 100644
--- 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcEndpoint.java
+++ 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcEndpoint.java
@@ -20,5 +20,4 @@ package org.apache.cloudstack.framework.messaging;
 
 public interface RpcEndpoint {
        void onCallReceive(RpcServerCall call);
-       void onCallReturn(RpcClientCall call, Object returnObject, RpcException 
e);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcProvider.java
----------------------------------------------------------------------
diff --git 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcProvider.java 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcProvider.java
index 95217cd..547a81a 100644
--- 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcProvider.java
+++ 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcProvider.java
@@ -24,7 +24,6 @@ public interface RpcProvider extends TransportMultiplexier {
        
        void registerRpcEndpoint(RpcEndpoint rpcEndpoint);
        void unregisteRpcEndpoint(RpcEndpoint rpcEndpoint);
-
-       String call(RpcEndpoint endpoint, RpcCallContext callContext, String 
targetAddress, String command, Object cmdArg);
-       RpcClientCall asyncCall(RpcEndpoint endpoint, RpcCallContext 
callContext, String targetAddress, String command, Object cmdArg);
+       
+       RpcClientCall target(String target);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcServerCall.java
----------------------------------------------------------------------
diff --git 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcServerCall.java
 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcServerCall.java
index 7380fb2..b6dd943 100644
--- 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcServerCall.java
+++ 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcServerCall.java
@@ -21,7 +21,6 @@ package org.apache.cloudstack.framework.messaging;
 public interface RpcServerCall {
        String getCommand();
        Object getCommandArgument();
-       String getRequestTag();
 
        // for receiver to response call
        void completeCall(Object returnObject);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/TransportEndpoint.java
----------------------------------------------------------------------
diff --git 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/TransportEndpoint.java
 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/TransportEndpoint.java
index 6bca566..91ec86f 100644
--- 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/TransportEndpoint.java
+++ 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/TransportEndpoint.java
@@ -19,6 +19,8 @@
 package org.apache.cloudstack.framework.messaging;
 
 public interface TransportEndpoint {
+       String getEndpointAddress();
+       
        void onAttachConfirm(boolean bSuccess, String endpointAddress);
        void onDetachIndication(String endpointAddress);
        

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/client/ClientTransportEndpoint.java
----------------------------------------------------------------------
diff --git 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/client/ClientTransportEndpoint.java
 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/client/ClientTransportEndpoint.java
index 3c8878f..e12ddcf 100644
--- 
a/framework/ipc/src/org/apache/cloudstack/framework/messaging/client/ClientTransportEndpoint.java
+++ 
b/framework/ipc/src/org/apache/cloudstack/framework/messaging/client/ClientTransportEndpoint.java
@@ -24,6 +24,12 @@ import 
org.apache.cloudstack.framework.messaging.TransportMultiplexier;
 public class ClientTransportEndpoint implements TransportEndpoint {
 
        @Override
+       public String getEndpointAddress() {
+               // ???
+               return "";
+       }
+       
+       @Override
        public void onAttachConfirm(boolean bSuccess, String endpointAddress) {
                // TODO Auto-generated method stub
        }

Reply via email to