You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ke...@apache.org on 2012/12/04 19:43:18 UTC

git commit: Add compilable client RPC test file

Updated Branches:
  refs/heads/javelin 2c689adce -> 168891921


Add compilable client RPC test file


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

Branch: refs/heads/javelin
Commit: 1688919218357f24dcdbac902fef1415a70ffd50
Parents: 2c689ad
Author: Kelven Yang <ke...@gmail.com>
Authored: Tue Dec 4 10:42:45 2012 -0800
Committer: Kelven Yang <ke...@gmail.com>
Committed: Tue Dec 4 10:43:08 2012 -0800

----------------------------------------------------------------------
 .../framework/messaging/RpcClientCall.java         |    4 +-
 .../framework/messaging/RpcClientCallImpl.java     |    4 +-
 .../framework/messaging/RpcServerCall.java         |    2 +-
 .../messaging/ClientOnlyEventDrivenStyle.java      |   28 ++++++++++++
 .../messaging/ClientOnlyListenerStyle.java         |   34 +++++++++++++++
 .../framework/messaging/SampleComponent.java       |    4 --
 .../framework/messaging/TestCommand.java           |    7 +++
 .../framework/messaging/TestCommandAnswer.java     |   23 ++++++++++
 8 files changed, 98 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16889192/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 1ad03ef..0a2bfe4 100644
--- a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCall.java
+++ b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCall.java
@@ -29,14 +29,14 @@ public interface RpcClientCall {
 	Object getCommandArg();
 	
 	RpcClientCall setContextParam(String key, Object param);
-	Object getContextParam(String key);
+	<T> T getContextParam(String key);
 	
 	<T> RpcClientCall addCallbackListener(RpcCallbackListener<T> listener);
 	RpcClientCall setCallbackDispatcherTarget(Object target);
 	
 	RpcClientCall setOneway();
 	
-	void apply();
+	RpcClientCall apply();
 	void cancel();
 	
 	/**

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16889192/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCallImpl.java
----------------------------------------------------------------------
diff --git a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCallImpl.java b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCallImpl.java
index 3298245..ba8dd14 100644
--- a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCallImpl.java
+++ b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCallImpl.java
@@ -136,7 +136,7 @@ public class RpcClientCallImpl implements RpcClientCall {
 	}
 
 	@Override
-	public void apply() {
+	public RpcClientCall apply() {
 		// sanity check
 		assert(_sourceAddress != null);
 		assert(_targetAddress != null);
@@ -152,6 +152,8 @@ public class RpcClientCallImpl implements RpcClientCall {
 		
 		_rpcProvider.sendRpcPdu(getSourceAddress(), getTargetAddress(), 
 			_rpcProvider.getMessageSerializer().serializeTo(RpcCallRequestPdu.class, pdu));
+		
+		return this;
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16889192/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 b6dd943..4df851d 100644
--- a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcServerCall.java
+++ b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcServerCall.java
@@ -20,7 +20,7 @@ package org.apache.cloudstack.framework.messaging;
 
 public interface RpcServerCall {
 	String getCommand();
-	Object getCommandArgument();
+	<T> T getCommandArgument();
 
 	// for receiver to response call
 	void completeCall(Object returnObject);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16889192/framework/ipc/test/org/apache/cloudstack/framework/messaging/ClientOnlyEventDrivenStyle.java
----------------------------------------------------------------------
diff --git a/framework/ipc/test/org/apache/cloudstack/framework/messaging/ClientOnlyEventDrivenStyle.java b/framework/ipc/test/org/apache/cloudstack/framework/messaging/ClientOnlyEventDrivenStyle.java
new file mode 100644
index 0000000..2fff15b
--- /dev/null
+++ b/framework/ipc/test/org/apache/cloudstack/framework/messaging/ClientOnlyEventDrivenStyle.java
@@ -0,0 +1,28 @@
+package org.apache.cloudstack.framework.messaging;
+
+public class ClientOnlyEventDrivenStyle {
+	RpcProvider _rpcProvider;
+	
+	public void AsyncCallRpcService() {
+		TestCommand cmd = new TestCommand();
+		_rpcProvider.newCall("host-2").setCommand("TestCommand").setCommandArg(cmd).setTimeout(10000)
+			.setCallbackDispatcherTarget(this)
+			.setContextParam("origCmd", cmd)		// save context object for callback handler
+			.apply();
+	}
+	
+	@RpcCallbackHandler(command="TestCommand")
+	public void OnAsyncCallRpcServiceCallback(RpcClientCall call) {
+		try {
+			TestCommand origCmd = call.getContextParam("origCmd");	// restore calling context at callback handler	
+
+			TestCommandAnswer answer = call.get();
+			
+		} catch(RpcTimeoutException e) {
+			
+		} catch(RpcIOException e) {
+			
+		} catch(RpcException e) {
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16889192/framework/ipc/test/org/apache/cloudstack/framework/messaging/ClientOnlyListenerStyle.java
----------------------------------------------------------------------
diff --git a/framework/ipc/test/org/apache/cloudstack/framework/messaging/ClientOnlyListenerStyle.java b/framework/ipc/test/org/apache/cloudstack/framework/messaging/ClientOnlyListenerStyle.java
new file mode 100644
index 0000000..ed58382
--- /dev/null
+++ b/framework/ipc/test/org/apache/cloudstack/framework/messaging/ClientOnlyListenerStyle.java
@@ -0,0 +1,34 @@
+package org.apache.cloudstack.framework.messaging;
+
+public class ClientOnlyListenerStyle {
+	
+	RpcProvider _rpcProvider;
+	
+	public void AsyncCallRpcService() {
+		TestCommand cmd = new TestCommand();
+		_rpcProvider.newCall("host-2").setCommand("TestCommand").setCommandArg(cmd).setTimeout(10000)
+			.addCallbackListener(new RpcCallbackListener<TestCommandAnswer>() {
+				@Override
+				public void onSuccess(TestCommandAnswer result) {
+				}
+
+				@Override
+				public void onFailure(RpcException e) {
+				}
+			}).apply();
+	}
+	
+	public void SyncCallRpcService() {
+		TestCommand cmd = new TestCommand();
+		RpcClientCall call = _rpcProvider.newCall("host-2").setCommand("TestCommand").setCommandArg(cmd).setTimeout(10000).apply();
+		
+		try {
+			TestCommandAnswer answer = call.get();
+		} catch (RpcTimeoutException e) {
+			
+		} catch (RpcIOException e) {
+			
+		} catch (RpcException e) {
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16889192/framework/ipc/test/org/apache/cloudstack/framework/messaging/SampleComponent.java
----------------------------------------------------------------------
diff --git a/framework/ipc/test/org/apache/cloudstack/framework/messaging/SampleComponent.java b/framework/ipc/test/org/apache/cloudstack/framework/messaging/SampleComponent.java
index 869b661..cd76729 100644
--- a/framework/ipc/test/org/apache/cloudstack/framework/messaging/SampleComponent.java
+++ b/framework/ipc/test/org/apache/cloudstack/framework/messaging/SampleComponent.java
@@ -28,10 +28,6 @@ public class SampleComponent extends ComponentEndpoint {
 		call.completeCall("Call response");
 	}
 	
-	@RpcCallbackHandler(command="StartCommand")
-	void onStartCommandCallback(RpcClientCall call) {
-	}
-	
 	@EventHandler(topic="network.prepare")
 	void onPrepareNetwork(String sender, String topic, Object args) {
 	}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16889192/framework/ipc/test/org/apache/cloudstack/framework/messaging/TestCommand.java
----------------------------------------------------------------------
diff --git a/framework/ipc/test/org/apache/cloudstack/framework/messaging/TestCommand.java b/framework/ipc/test/org/apache/cloudstack/framework/messaging/TestCommand.java
new file mode 100644
index 0000000..c8f62a5
--- /dev/null
+++ b/framework/ipc/test/org/apache/cloudstack/framework/messaging/TestCommand.java
@@ -0,0 +1,7 @@
+package org.apache.cloudstack.framework.messaging;
+
+@OnwireName(name="TestCommand")
+public class TestCommand {
+	public TestCommand() {
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/16889192/framework/ipc/test/org/apache/cloudstack/framework/messaging/TestCommandAnswer.java
----------------------------------------------------------------------
diff --git a/framework/ipc/test/org/apache/cloudstack/framework/messaging/TestCommandAnswer.java b/framework/ipc/test/org/apache/cloudstack/framework/messaging/TestCommandAnswer.java
new file mode 100644
index 0000000..550333b
--- /dev/null
+++ b/framework/ipc/test/org/apache/cloudstack/framework/messaging/TestCommandAnswer.java
@@ -0,0 +1,23 @@
+/*
+ * 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;
+
+@OnwireName(name="TestCommandAnswer")
+public class TestCommandAnswer {
+}