You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/01/11 01:01:22 UTC
[12/32] git commit: ApiDiscoveryService: Use only as pluggable service
ApiDiscoveryService: Use only as pluggable service
Remove usage and impl as adapter.
We have duplicate code that generates apiname:cmd class maps which is
unavoidable right now as:
- Plugin should not depend on ApiServer or any other component
- cloud-utils cannot depend on cloud-api for the APICommand annotation
- Use java reflect to create a static method in cloud-utils that does the job
would be unsafe.
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/d13cc7e7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/d13cc7e7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/d13cc7e7
Branch: refs/heads/javelin
Commit: d13cc7e7e49a54e2fdd177c4fe4ce45739b4736d
Parents: 657fb6a
Author: Rohit Yadav <bh...@apache.org>
Authored: Wed Jan 9 17:19:49 2013 -0800
Committer: Rohit Yadav <bh...@apache.org>
Committed: Wed Jan 9 17:25:29 2013 -0800
----------------------------------------------------------------------
.../cloudstack/discovery/ApiDiscoveryService.java | 6 +--
client/tomcatconf/components.xml.in | 3 -
.../discovery/ApiDiscoveryServiceImpl.java | 51 ++++-----------
3 files changed, 14 insertions(+), 46 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d13cc7e7/api/src/org/apache/cloudstack/discovery/ApiDiscoveryService.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/discovery/ApiDiscoveryService.java b/api/src/org/apache/cloudstack/discovery/ApiDiscoveryService.java
index 1220694..96ea3ee 100644
--- a/api/src/org/apache/cloudstack/discovery/ApiDiscoveryService.java
+++ b/api/src/org/apache/cloudstack/discovery/ApiDiscoveryService.java
@@ -16,14 +16,10 @@
// under the License.
package org.apache.cloudstack.discovery;
-import com.cloud.utils.component.Adapter;
import com.cloud.utils.component.PluggableService;
import org.apache.cloudstack.api.BaseResponse;
import org.apache.cloudstack.api.response.ListResponse;
-import java.util.Map;
-
-public interface ApiDiscoveryService extends Adapter, PluggableService {
+public interface ApiDiscoveryService extends PluggableService {
ListResponse<? extends BaseResponse> listApis();
- Map<String, Class<?>> getApiNameCmdClassMapping();
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d13cc7e7/client/tomcatconf/components.xml.in
----------------------------------------------------------------------
diff --git a/client/tomcatconf/components.xml.in b/client/tomcatconf/components.xml.in
index b9feed1..b779c86 100755
--- a/client/tomcatconf/components.xml.in
+++ b/client/tomcatconf/components.xml.in
@@ -56,9 +56,6 @@ under the License.
<adapters key="org.apache.cloudstack.acl.APIAccessChecker">
<adapter name="StaticRoleBasedAPIAccessChecker" class="org.apache.cloudstack.acl.StaticRoleBasedAPIAccessChecker"/>
</adapters>
- <adapters key="org.apache.cloudstack.discovery.ApiDiscoveryService">
- <adapter name="ApiDiscoveryService" class="org.apache.cloudstack.discovery.ApiDiscoveryServiceImpl"/>
- </adapters>
<adapters key="com.cloud.agent.manager.allocator.HostAllocator">
<adapter name="FirstFitRouting" class="com.cloud.agent.manager.allocator.impl.FirstFitRoutingAllocator"/>
<!--adapter name="FirstFitRouting" class="com.cloud.agent.manager.allocator.impl.RecreateHostAllocator"/-->
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d13cc7e7/plugins/api/discovery/src/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java
----------------------------------------------------------------------
diff --git a/plugins/api/discovery/src/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java b/plugins/api/discovery/src/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java
index 5363e55..ea6b206 100644
--- a/plugins/api/discovery/src/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java
+++ b/plugins/api/discovery/src/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java
@@ -17,7 +17,6 @@
package org.apache.cloudstack.discovery;
import com.cloud.utils.ReflectUtil;
-import com.cloud.utils.component.AdapterBase;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.BaseCmd;
import org.apache.cloudstack.api.BaseAsyncCmd;
@@ -30,7 +29,6 @@ import org.apache.cloudstack.api.response.ListResponse;
import org.apache.log4j.Logger;
import javax.ejb.Local;
-import javax.naming.ConfigurationException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
@@ -39,36 +37,28 @@ import java.util.Map;
import java.util.Set;
@Local(value = ApiDiscoveryService.class)
-public class ApiDiscoveryServiceImpl extends AdapterBase implements ApiDiscoveryService {
-
+public class ApiDiscoveryServiceImpl implements ApiDiscoveryService {
private static final Logger s_logger = Logger.getLogger(ApiDiscoveryServiceImpl.class);
- private Map<String, Class<?>> _apiNameCmdClassMap;
- private ListResponse<ApiDiscoveryResponse> _discoveryResponse;
+
+ private ListResponse<ApiDiscoveryResponse> _discoveryResponse = new ListResponse<ApiDiscoveryResponse>();
+
+ private Map<String, Class<?>> _apiNameCmdClassMap = new HashMap<String, Class<?>>();
protected ApiDiscoveryServiceImpl() {
super();
+ generateApiNameCmdClassMap();
+ cacheListApiResponse();
}
- private void generateApiNameCmdClassMapping() {
- _apiNameCmdClassMap = new HashMap<String, Class<?>>();
- Set<Class<?>> cmdClasses = ReflectUtil.getClassesWithAnnotation(APICommand.class, new String[]{"org.apache.cloudstack.api", "com.cloud.api"});
+ private void generateApiNameCmdClassMap() {
+ Set<Class<?>> cmdClasses = ReflectUtil.getClassesWithAnnotation(APICommand.class,
+ new String[]{"org.apache.cloudstack.api", "com.cloud.api"});
- for(Class<?> cmdClass: cmdClasses) {
- String apiName = cmdClass.getAnnotation(APICommand.class).name();
- if (_apiNameCmdClassMap.containsKey(apiName)) {
- s_logger.error("API Cmd class " + cmdClass.getName() + " has non-unique apiname" + apiName);
- continue;
- }
- _apiNameCmdClassMap.put(apiName, cmdClass);
- }
+ for(Class<?> cmdClass: cmdClasses)
+ _apiNameCmdClassMap.put(cmdClass.getAnnotation(APICommand.class).name(), cmdClass);
}
- private void precacheListApiResponse() {
-
- if(_apiNameCmdClassMap == null)
- return;
-
- _discoveryResponse = new ListResponse<ApiDiscoveryResponse>();
+ private void cacheListApiResponse() {
List<ApiDiscoveryResponse> apiDiscoveryResponses = new ArrayList<ApiDiscoveryResponse>();
@@ -118,21 +108,6 @@ public class ApiDiscoveryServiceImpl extends AdapterBase implements ApiDiscovery
}
@Override
- public boolean configure(String name, Map<String, Object> params)
- throws ConfigurationException {
- super.configure(name, params);
-
- generateApiNameCmdClassMapping();
- precacheListApiResponse();
-
- return true;
- }
-
- public Map<String, Class<?>> getApiNameCmdClassMapping() {
- return _apiNameCmdClassMap;
- }
-
- @Override
public ListResponse<? extends BaseResponse> listApis() {
return _discoveryResponse;
}