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 2013/01/16 03:29:03 UTC

[1/3] git commit: Put command classes under Spring injection framework

Put command classes under Spring injection framework


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

Branch: refs/heads/javelin
Commit: df684261cf72f08227b01f1d188c1a44412289ce
Parents: a2dab60
Author: Kelven Yang <ke...@gmail.com>
Authored: Tue Jan 15 18:06:25 2013 -0800
Committer: Kelven Yang <ke...@gmail.com>
Committed: Tue Jan 15 18:07:19 2013 -0800

----------------------------------------------------------------------
 api/src/org/apache/cloudstack/api/BaseCmd.java     |  111 +++++----------
 api/src/org/apache/cloudstack/api/BaseListCmd.java |   15 ++-
 core/src/com/cloud/vm/VMInstanceVO.java            |    7 -
 .../storage/snapshot/db/SnapshotDao2Impl.java      |    3 +
 .../datastore/db/PrimaryDataStoreDaoImpl.java      |    5 +-
 server/src/com/cloud/api/ApiResponseHelper.java    |    3 +
 server/src/com/cloud/api/ApiServer.java            |    6 +-
 7 files changed, 58 insertions(+), 92 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df684261/api/src/org/apache/cloudstack/api/BaseCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/BaseCmd.java b/api/src/org/apache/cloudstack/api/BaseCmd.java
index ba2c4d2..fe97694 100644
--- a/api/src/org/apache/cloudstack/api/BaseCmd.java
+++ b/api/src/org/apache/cloudstack/api/BaseCmd.java
@@ -25,6 +25,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.regex.Pattern;
 
+import javax.inject.Inject;
+
 import org.apache.cloudstack.query.QueryService;
 import org.apache.log4j.Logger;
 
@@ -109,84 +111,43 @@ public abstract class BaseCmd {
     @Parameter(name = "response", type = CommandType.STRING)
     private String responseType;
 
-    public static ConfigurationService _configService;
-    public static AccountService _accountService;
-    public static UserVmService _userVmService;
-    public static ManagementService _mgr;
-    public static StorageService _storageService;
-    public static ResourceService _resourceService;
-    public static NetworkService _networkService;
-    public static TemplateService _templateService;
-    public static SecurityGroupService _securityGroupService;
-    public static SnapshotService _snapshotService;
-    public static ConsoleProxyService _consoleProxyService;
-    public static VpcVirtualNetworkApplianceService _routerService;
-    public static ResponseGenerator _responseGenerator;
-    public static EntityManager _entityMgr;
-    public static RulesService _rulesService;
-    public static AutoScaleService _autoScaleService;
-    public static LoadBalancingRulesService _lbService;
-    public static RemoteAccessVpnService _ravService;
-    public static BareMetalVmService _bareMetalVmService;
-    public static ProjectService _projectService;
-    public static FirewallService _firewallService;
-    public static DomainService _domainService;
-    public static ResourceLimitService _resourceLimitService;
-    public static IdentityService _identityService;
-    public static StorageNetworkService _storageNetworkService;
-    public static TaggedResourceService _taggedResourceService;
-    public static VpcService _vpcService;
-    public static NetworkACLService _networkACLService;
-    public static Site2SiteVpnService _s2sVpnService;
-
-    public static QueryService _queryService;
-
-    public static void setComponents(ResponseGenerator generator) {
-        _mgr = ComponentContext.getComponent(ManagementService.class);
-        _accountService = ComponentContext.getComponent(AccountService.class);
-        _configService = ComponentContext.getComponent(ConfigurationService.class);
-
-        _userVmService = ComponentContext.getComponent(UserVmService.class);
-
-        // TODO, ugly and will change soon
-        //
-        Map<String, UserVmService> svmServices = ComponentContext.getComponentsOfType(UserVmService.class);
-        _userVmService = svmServices.get("BareMetalVmManagerImpl");
-
-        _storageService = ComponentContext.getComponent(StorageService.class);
-        _resourceService = ComponentContext.getComponent(ResourceService.class);
-
-        _networkService = ComponentContext.getComponent(NetworkService.class);
-        _templateService = ComponentContext.getComponent(TemplateService.class);
-
-        // TODO, will change to looking for primary component
-        // ugly binding to a specific implementation
-        Map<String, SecurityGroupService> _sgServices = ComponentContext.getComponentsOfType(SecurityGroupService.class);
-        _securityGroupService = _sgServices.get("SecurityGroupManagerImpl2");
-
-        _snapshotService = ComponentContext.getComponent(SnapshotService.class);
-        _consoleProxyService = ComponentContext.getComponent(ConsoleProxyService.class);
-        _routerService = ComponentContext.getComponent(VpcVirtualNetworkApplianceService.class);
-        _entityMgr = ComponentContext.getComponent(EntityManager.class);
-        _rulesService = ComponentContext.getComponent(RulesService.class);
-        _lbService = ComponentContext.getComponent(LoadBalancingRulesService.class);
-        _ravService = ComponentContext.getComponent(RemoteAccessVpnService.class);
-        _responseGenerator = generator;
-        _bareMetalVmService = ComponentContext.getComponent(BareMetalVmService.class);
-        _projectService = ComponentContext.getComponent(ProjectService.class);
-        _firewallService = ComponentContext.getComponent(FirewallService.class);
-        _domainService = ComponentContext.getComponent(DomainService.class);
-        _resourceLimitService = ComponentContext.getComponent(ResourceLimitService.class);
-        _identityService = ComponentContext.getComponent(IdentityService.class);
-        _storageNetworkService = ComponentContext.getComponent(StorageNetworkService.class);
-        _taggedResourceService = ComponentContext.getComponent(TaggedResourceService.class);
-        _vpcService = ComponentContext.getComponent(VpcService.class);
-        _networkACLService = ComponentContext.getComponent(NetworkACLService.class);
-        _s2sVpnService = ComponentContext.getComponent(Site2SiteVpnService.class);
-    }
+    @Inject public ConfigurationService _configService;
+    @Inject public AccountService _accountService;
+    @Inject public UserVmService _userVmService;
+    @Inject public ManagementService _mgr;
+    @Inject public StorageService _storageService;
+    @Inject public ResourceService _resourceService;
+    @Inject public NetworkService _networkService;
+    @Inject public TemplateService _templateService;
+    @Inject public SecurityGroupService _securityGroupService;
+    @Inject public SnapshotService _snapshotService;
+    @Inject public ConsoleProxyService _consoleProxyService;
+    @Inject public VpcVirtualNetworkApplianceService _routerService;
+    @Inject public ResponseGenerator _responseGenerator;
+    @Inject public EntityManager _entityMgr;
+    @Inject public RulesService _rulesService;
+    @Inject public AutoScaleService _autoScaleService;
+    @Inject public LoadBalancingRulesService _lbService;
+    @Inject public RemoteAccessVpnService _ravService;
+    @Inject public BareMetalVmService _bareMetalVmService;
+    @Inject public ProjectService _projectService;
+    @Inject public FirewallService _firewallService;
+    @Inject public DomainService _domainService;
+    @Inject public ResourceLimitService _resourceLimitService;
+    @Inject public IdentityService _identityService;
+    @Inject public StorageNetworkService _storageNetworkService;
+    @Inject public TaggedResourceService _taggedResourceService;
+    @Inject public VpcService _vpcService;
+    @Inject public NetworkACLService _networkACLService;
+    @Inject public Site2SiteVpnService _s2sVpnService;
+
+    @Inject public QueryService _queryService;
 
     public abstract void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException;
 
+    public void configure() {
+    }
+
     public String getResponseType() {
         if (responseType == null) {
             return RESPONSE_TYPE_XML;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df684261/api/src/org/apache/cloudstack/api/BaseListCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/BaseListCmd.java b/api/src/org/apache/cloudstack/api/BaseListCmd.java
index 58e83f7..bc0b2b8 100644
--- a/api/src/org/apache/cloudstack/api/BaseListCmd.java
+++ b/api/src/org/apache/cloudstack/api/BaseListCmd.java
@@ -42,6 +42,9 @@ public abstract class BaseListCmd extends BaseCmd {
     // ///////////////// Accessors ///////////////////////
     // ///////////////////////////////////////////////////
 
+    public BaseListCmd() {
+    }
+    
     public String getKeyword() {
         return keyword;
     }
@@ -62,10 +65,14 @@ public abstract class BaseListCmd extends BaseCmd {
         return pageSize;
     }
 
-    public static void configure() {
-        if (_configService.getDefaultPageSize().longValue() != PAGESIZE_UNLIMITED) {
-            MAX_PAGESIZE = _configService.getDefaultPageSize();
-        }
+    public void configure() {
+    	if(MAX_PAGESIZE == null) {
+	        if (_configService.getDefaultPageSize().longValue() != PAGESIZE_UNLIMITED) {
+	            MAX_PAGESIZE = _configService.getDefaultPageSize();
+	        } else {
+	        	MAX_PAGESIZE = PAGESIZE_UNLIMITED;
+	        }
+    	}
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df684261/core/src/com/cloud/vm/VMInstanceVO.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/vm/VMInstanceVO.java b/core/src/com/cloud/vm/VMInstanceVO.java
index c63dd83..33ebed9 100644
--- a/core/src/com/cloud/vm/VMInstanceVO.java
+++ b/core/src/com/cloud/vm/VMInstanceVO.java
@@ -42,7 +42,6 @@ import com.cloud.utils.db.GenericDao;
 import com.cloud.utils.db.StateMachine;
 import com.cloud.utils.fsm.FiniteStateObject;
 import com.cloud.vm.VirtualMachine.State;
-import org.apache.cloudstack.api.InternalIdentity;
 
 @Entity
 @Table(name="vm_instance")
@@ -144,12 +143,6 @@ public class VMInstanceVO implements VirtualMachine, FiniteStateObject<State, Vi
     @Enumerated(value=EnumType.STRING)
     protected HypervisorType hypervisorType;
 
-    @Column(name="ram")
-    protected long ram;
-
-    @Column(name="cpu")
-    protected int cpu;
-
     @Column(name="tags")
     protected String tags;
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df684261/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/db/SnapshotDao2Impl.java
----------------------------------------------------------------------
diff --git a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/db/SnapshotDao2Impl.java b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/db/SnapshotDao2Impl.java
index 5e36e10..74cec5e 100644
--- a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/db/SnapshotDao2Impl.java
+++ b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/db/SnapshotDao2Impl.java
@@ -18,8 +18,11 @@
  */
 package org.apache.cloudstack.storage.snapshot.db;
 
+import org.springframework.stereotype.Component;
+
 import com.cloud.utils.db.GenericDaoBase;
 
+@Component
 public class SnapshotDao2Impl extends GenericDaoBase<SnapshotVO, Long> implements SnapshotDao2 {
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df684261/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
index f73d72c..faca54b 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
@@ -26,6 +26,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
 import org.apache.cloudstack.storage.datastore.DataStoreStatus;
@@ -49,7 +50,7 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<PrimaryDataStoreVO,
     protected final SearchBuilder<PrimaryDataStoreVO> DeleteLvmSearch;
     protected final GenericSearchBuilder<PrimaryDataStoreVO, Long> StatusCountSearch;
 
-    protected final PrimaryDataStoreDetailsDao _detailsDao = null;
+    @Inject protected PrimaryDataStoreDetailsDao _detailsDao;
 
     private final String DetailsSqlPrefix = "SELECT storage_pool.* from storage_pool LEFT JOIN storage_pool_details ON storage_pool.id = storage_pool_details.pool_id WHERE storage_pool.removed is null and storage_pool.data_center_id = ? and (storage_pool.pod_id = ? or storage_pool.pod_id is null) and (";
     private final String DetailsSqlSuffix = ") GROUP BY storage_pool_details.pool_id HAVING COUNT(storage_pool_details.name) >= ?";
@@ -95,8 +96,6 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<PrimaryDataStoreVO,
         StatusCountSearch.and("status", StatusCountSearch.entity().getStatus(), SearchCriteria.Op.IN);
         StatusCountSearch.select(null, Func.COUNT, null);
         StatusCountSearch.done();
-
-       // _detailsDao = ComponentInject.inject(PrimaryDataStoreDetailsDaoImpl.class);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df684261/server/src/com/cloud/api/ApiResponseHelper.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java
index c346a6b..dfeeb87 100755
--- a/server/src/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/com/cloud/api/ApiResponseHelper.java
@@ -132,6 +132,8 @@ import org.apache.cloudstack.api.response.VpnUsersResponse;
 import org.apache.cloudstack.api.response.ZoneResponse;
 
 import org.apache.cloudstack.api.response.S3Response;
+import org.springframework.stereotype.Component;
+
 import com.cloud.async.AsyncJob;
 import com.cloud.capacity.Capacity;
 import com.cloud.capacity.CapacityVO;
@@ -240,6 +242,7 @@ import com.cloud.vm.NicProfile;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachine.Type;
 
+@Component
 public class ApiResponseHelper implements ResponseGenerator {
 
     public final Logger s_logger = Logger.getLogger(ApiResponseHelper.class);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df684261/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 8a2c675..9a62524 100755
--- a/server/src/com/cloud/api/ApiServer.java
+++ b/server/src/com/cloud/api/ApiServer.java
@@ -132,6 +132,7 @@ import com.cloud.utils.Pair;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.ReflectUtil;
 import com.cloud.utils.StringUtils;
+import com.cloud.utils.component.ComponentContext;
 import com.cloud.utils.component.PluggableService;
 import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.db.SearchCriteria;
@@ -179,9 +180,6 @@ public class ApiServer implements HttpRequestHandler {
     }
 
     public void init() {
-        BaseCmd.setComponents(new ApiResponseHelper());
-        BaseListCmd.configure();
-
         _systemAccount = _accountMgr.getSystemAccount();
         _systemUser = _accountMgr.getSystemUser();
 
@@ -346,6 +344,8 @@ public class ApiServer implements HttpRequestHandler {
                 Class<?> cmdClass = getCmdClass(command[0]);
                 if (cmdClass != null) {
                     BaseCmd cmdObj = (BaseCmd) cmdClass.newInstance();
+                    cmdObj = ComponentContext.inject(cmdObj);
+                    cmdObj.configure();
                     cmdObj.setFullUrlParams(paramMap);
                     cmdObj.setResponseType(responseType);
                     // This is where the command is either serialized, or directly dispatched