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 {
+}