You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2012/12/11 23:19:36 UTC
[1/3] git commit: api: refactor common code to get classname for an
api in ApiServer
Updated Branches:
refs/heads/api_refactoring f4892fbb8 -> c455cf927
api: refactor common code to get classname for an api in ApiServer
- Refactor common code to get classname from apiname
- Fix search mechanism within api access checker adapter to:
* check permissions
* get class name for an apiname
Signed-off-by: Rohit Yadav <bh...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/c455cf92
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/c455cf92
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/c455cf92
Branch: refs/heads/api_refactoring
Commit: c455cf9271042b7897a55fc12e96cc8ce2640259
Parents: 79b54e6
Author: Rohit Yadav <bh...@apache.org>
Authored: Tue Dec 11 14:17:47 2012 -0800
Committer: Rohit Yadav <bh...@apache.org>
Committed: Tue Dec 11 14:17:47 2012 -0800
----------------------------------------------------------------------
server/src/com/cloud/api/ApiServer.java | 24 +++++++++++++++++-------
1 files changed, 17 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c455cf92/server/src/com/cloud/api/ApiServer.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java
index 2719765..38bae13 100755
--- a/server/src/com/cloud/api/ApiServer.java
+++ b/server/src/com/cloud/api/ApiServer.java
@@ -310,7 +310,8 @@ public class ApiServer implements HttpRequestHandler {
}
paramMap.put(key, decodedValue);
}
- String cmdClassName = _apiCommands.getProperty(command[0]);
+
+ String cmdClassName = getCmdClassName(command[0]);
if (cmdClassName != null) {
Class<?> cmdClass = Class.forName(cmdClassName);
BaseCmd cmdObj = (BaseCmd) cmdClass.newInstance();
@@ -768,13 +769,22 @@ public class ApiServer implements HttpRequestHandler {
}
private boolean isCommandAvailable(User user, String commandName) {
- boolean isCommandAvailable = false;
-
- for(APIAccessChecker apichecker : _apiAccessCheckers){
- isCommandAvailable = apichecker.canAccessAPI(user, commandName);
+ for(APIAccessChecker apichecker : _apiAccessCheckers) {
+ if (apichecker.canAccessAPI(user, commandName))
+ return true;
}
+ return false;
+ }
- return isCommandAvailable;
+ private String getCmdClassName(String cmdName) {
+ String cmdClassName = null;
+ for(APIAccessChecker apiChecker : _apiAccessCheckers){
+ cmdClassName = apiChecker.getApiCommands().getProperty(cmdName);
+ // Break on the first non-null value
+ if (cmdClassName != null)
+ return cmdClassName;
+ }
+ return null;
}
// FIXME: rather than isError, we might was to pass in the status code to give more flexibility
@@ -921,7 +931,7 @@ public class ApiServer implements HttpRequestHandler {
// cmd name can be null when "command" parameter is missing in the request
if (cmdObj != null) {
String cmdName = ((String[]) cmdObj)[0];
- cmdClassName = _apiCommands.getProperty(cmdName);
+ cmdClassName = getCmdClassName(cmdName);
if (cmdClassName != null) {
Class<?> claz = Class.forName(cmdClassName);
responseName = ((BaseCmd) claz.newInstance()).getCommandName();