Skip to content

Commit df68426

Browse files
committed
Put command classes under Spring injection framework
1 parent a2dab60 commit df68426

7 files changed

Lines changed: 58 additions & 92 deletions

File tree

api/src/org/apache/cloudstack/api/BaseCmd.java

Lines changed: 36 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import java.util.Map;
2626
import java.util.regex.Pattern;
2727

28+
import javax.inject.Inject;
29+
2830
import org.apache.cloudstack.query.QueryService;
2931
import org.apache.log4j.Logger;
3032

@@ -109,84 +111,43 @@ public enum CommandType {
109111
@Parameter(name = "response", type = CommandType.STRING)
110112
private String responseType;
111113

112-
public static ConfigurationService _configService;
113-
public static AccountService _accountService;
114-
public static UserVmService _userVmService;
115-
public static ManagementService _mgr;
116-
public static StorageService _storageService;
117-
public static ResourceService _resourceService;
118-
public static NetworkService _networkService;
119-
public static TemplateService _templateService;
120-
public static SecurityGroupService _securityGroupService;
121-
public static SnapshotService _snapshotService;
122-
public static ConsoleProxyService _consoleProxyService;
123-
public static VpcVirtualNetworkApplianceService _routerService;
124-
public static ResponseGenerator _responseGenerator;
125-
public static EntityManager _entityMgr;
126-
public static RulesService _rulesService;
127-
public static AutoScaleService _autoScaleService;
128-
public static LoadBalancingRulesService _lbService;
129-
public static RemoteAccessVpnService _ravService;
130-
public static BareMetalVmService _bareMetalVmService;
131-
public static ProjectService _projectService;
132-
public static FirewallService _firewallService;
133-
public static DomainService _domainService;
134-
public static ResourceLimitService _resourceLimitService;
135-
public static IdentityService _identityService;
136-
public static StorageNetworkService _storageNetworkService;
137-
public static TaggedResourceService _taggedResourceService;
138-
public static VpcService _vpcService;
139-
public static NetworkACLService _networkACLService;
140-
public static Site2SiteVpnService _s2sVpnService;
141-
142-
public static QueryService _queryService;
143-
144-
public static void setComponents(ResponseGenerator generator) {
145-
_mgr = ComponentContext.getComponent(ManagementService.class);
146-
_accountService = ComponentContext.getComponent(AccountService.class);
147-
_configService = ComponentContext.getComponent(ConfigurationService.class);
148-
149-
_userVmService = ComponentContext.getComponent(UserVmService.class);
150-
151-
// TODO, ugly and will change soon
152-
//
153-
Map<String, UserVmService> svmServices = ComponentContext.getComponentsOfType(UserVmService.class);
154-
_userVmService = svmServices.get("BareMetalVmManagerImpl");
155-
156-
_storageService = ComponentContext.getComponent(StorageService.class);
157-
_resourceService = ComponentContext.getComponent(ResourceService.class);
158-
159-
_networkService = ComponentContext.getComponent(NetworkService.class);
160-
_templateService = ComponentContext.getComponent(TemplateService.class);
161-
162-
// TODO, will change to looking for primary component
163-
// ugly binding to a specific implementation
164-
Map<String, SecurityGroupService> _sgServices = ComponentContext.getComponentsOfType(SecurityGroupService.class);
165-
_securityGroupService = _sgServices.get("SecurityGroupManagerImpl2");
166-
167-
_snapshotService = ComponentContext.getComponent(SnapshotService.class);
168-
_consoleProxyService = ComponentContext.getComponent(ConsoleProxyService.class);
169-
_routerService = ComponentContext.getComponent(VpcVirtualNetworkApplianceService.class);
170-
_entityMgr = ComponentContext.getComponent(EntityManager.class);
171-
_rulesService = ComponentContext.getComponent(RulesService.class);
172-
_lbService = ComponentContext.getComponent(LoadBalancingRulesService.class);
173-
_ravService = ComponentContext.getComponent(RemoteAccessVpnService.class);
174-
_responseGenerator = generator;
175-
_bareMetalVmService = ComponentContext.getComponent(BareMetalVmService.class);
176-
_projectService = ComponentContext.getComponent(ProjectService.class);
177-
_firewallService = ComponentContext.getComponent(FirewallService.class);
178-
_domainService = ComponentContext.getComponent(DomainService.class);
179-
_resourceLimitService = ComponentContext.getComponent(ResourceLimitService.class);
180-
_identityService = ComponentContext.getComponent(IdentityService.class);
181-
_storageNetworkService = ComponentContext.getComponent(StorageNetworkService.class);
182-
_taggedResourceService = ComponentContext.getComponent(TaggedResourceService.class);
183-
_vpcService = ComponentContext.getComponent(VpcService.class);
184-
_networkACLService = ComponentContext.getComponent(NetworkACLService.class);
185-
_s2sVpnService = ComponentContext.getComponent(Site2SiteVpnService.class);
186-
}
114+
@Inject public ConfigurationService _configService;
115+
@Inject public AccountService _accountService;
116+
@Inject public UserVmService _userVmService;
117+
@Inject public ManagementService _mgr;
118+
@Inject public StorageService _storageService;
119+
@Inject public ResourceService _resourceService;
120+
@Inject public NetworkService _networkService;
121+
@Inject public TemplateService _templateService;
122+
@Inject public SecurityGroupService _securityGroupService;
123+
@Inject public SnapshotService _snapshotService;
124+
@Inject public ConsoleProxyService _consoleProxyService;
125+
@Inject public VpcVirtualNetworkApplianceService _routerService;
126+
@Inject public ResponseGenerator _responseGenerator;
127+
@Inject public EntityManager _entityMgr;
128+
@Inject public RulesService _rulesService;
129+
@Inject public AutoScaleService _autoScaleService;
130+
@Inject public LoadBalancingRulesService _lbService;
131+
@Inject public RemoteAccessVpnService _ravService;
132+
@Inject public BareMetalVmService _bareMetalVmService;
133+
@Inject public ProjectService _projectService;
134+
@Inject public FirewallService _firewallService;
135+
@Inject public DomainService _domainService;
136+
@Inject public ResourceLimitService _resourceLimitService;
137+
@Inject public IdentityService _identityService;
138+
@Inject public StorageNetworkService _storageNetworkService;
139+
@Inject public TaggedResourceService _taggedResourceService;
140+
@Inject public VpcService _vpcService;
141+
@Inject public NetworkACLService _networkACLService;
142+
@Inject public Site2SiteVpnService _s2sVpnService;
143+
144+
@Inject public QueryService _queryService;
187145

188146
public abstract void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException;
189147

148+
public void configure() {
149+
}
150+
190151
public String getResponseType() {
191152
if (responseType == null) {
192153
return RESPONSE_TYPE_XML;

api/src/org/apache/cloudstack/api/BaseListCmd.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ public abstract class BaseListCmd extends BaseCmd {
4242
// ///////////////// Accessors ///////////////////////
4343
// ///////////////////////////////////////////////////
4444

45+
public BaseListCmd() {
46+
}
47+
4548
public String getKeyword() {
4649
return keyword;
4750
}
@@ -62,10 +65,14 @@ public Integer getPageSize() {
6265
return pageSize;
6366
}
6467

65-
public static void configure() {
66-
if (_configService.getDefaultPageSize().longValue() != PAGESIZE_UNLIMITED) {
67-
MAX_PAGESIZE = _configService.getDefaultPageSize();
68-
}
68+
public void configure() {
69+
if(MAX_PAGESIZE == null) {
70+
if (_configService.getDefaultPageSize().longValue() != PAGESIZE_UNLIMITED) {
71+
MAX_PAGESIZE = _configService.getDefaultPageSize();
72+
} else {
73+
MAX_PAGESIZE = PAGESIZE_UNLIMITED;
74+
}
75+
}
6976
}
7077

7178
@Override

core/src/com/cloud/vm/VMInstanceVO.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import com.cloud.utils.db.StateMachine;
4343
import com.cloud.utils.fsm.FiniteStateObject;
4444
import com.cloud.vm.VirtualMachine.State;
45-
import org.apache.cloudstack.api.InternalIdentity;
4645

4746
@Entity
4847
@Table(name="vm_instance")
@@ -144,12 +143,6 @@ public class VMInstanceVO implements VirtualMachine, FiniteStateObject<State, Vi
144143
@Enumerated(value=EnumType.STRING)
145144
protected HypervisorType hypervisorType;
146145

147-
@Column(name="ram")
148-
protected long ram;
149-
150-
@Column(name="cpu")
151-
protected int cpu;
152-
153146
@Column(name="tags")
154147
protected String tags;
155148

engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/db/SnapshotDao2Impl.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@
1818
*/
1919
package org.apache.cloudstack.storage.snapshot.db;
2020

21+
import org.springframework.stereotype.Component;
22+
2123
import com.cloud.utils.db.GenericDaoBase;
2224

25+
@Component
2326
public class SnapshotDao2Impl extends GenericDaoBase<SnapshotVO, Long> implements SnapshotDao2 {
2427

2528
}

engine/storage/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.List;
2727
import java.util.Map;
2828

29+
import javax.inject.Inject;
2930
import javax.naming.ConfigurationException;
3031

3132
import org.apache.cloudstack.storage.datastore.DataStoreStatus;
@@ -49,7 +50,7 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<PrimaryDataStoreVO,
4950
protected final SearchBuilder<PrimaryDataStoreVO> DeleteLvmSearch;
5051
protected final GenericSearchBuilder<PrimaryDataStoreVO, Long> StatusCountSearch;
5152

52-
protected final PrimaryDataStoreDetailsDao _detailsDao = null;
53+
@Inject protected PrimaryDataStoreDetailsDao _detailsDao;
5354

5455
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 (";
5556
private final String DetailsSqlSuffix = ") GROUP BY storage_pool_details.pool_id HAVING COUNT(storage_pool_details.name) >= ?";
@@ -95,8 +96,6 @@ public PrimaryDataStoreDaoImpl() {
9596
StatusCountSearch.and("status", StatusCountSearch.entity().getStatus(), SearchCriteria.Op.IN);
9697
StatusCountSearch.select(null, Func.COUNT, null);
9798
StatusCountSearch.done();
98-
99-
// _detailsDao = ComponentInject.inject(PrimaryDataStoreDetailsDaoImpl.class);
10099
}
101100

102101
@Override

server/src/com/cloud/api/ApiResponseHelper.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@
132132
import org.apache.cloudstack.api.response.ZoneResponse;
133133

134134
import org.apache.cloudstack.api.response.S3Response;
135+
import org.springframework.stereotype.Component;
136+
135137
import com.cloud.async.AsyncJob;
136138
import com.cloud.capacity.Capacity;
137139
import com.cloud.capacity.CapacityVO;
@@ -240,6 +242,7 @@
240242
import com.cloud.vm.VirtualMachine;
241243
import com.cloud.vm.VirtualMachine.Type;
242244

245+
@Component
243246
public class ApiResponseHelper implements ResponseGenerator {
244247

245248
public final Logger s_logger = Logger.getLogger(ApiResponseHelper.class);

server/src/com/cloud/api/ApiServer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@
132132
import com.cloud.utils.NumbersUtil;
133133
import com.cloud.utils.ReflectUtil;
134134
import com.cloud.utils.StringUtils;
135+
import com.cloud.utils.component.ComponentContext;
135136
import com.cloud.utils.component.PluggableService;
136137
import com.cloud.utils.concurrency.NamedThreadFactory;
137138
import com.cloud.utils.db.SearchCriteria;
@@ -179,9 +180,6 @@ public static ApiServer getInstance() {
179180
}
180181

181182
public void init() {
182-
BaseCmd.setComponents(new ApiResponseHelper());
183-
BaseListCmd.configure();
184-
185183
_systemAccount = _accountMgr.getSystemAccount();
186184
_systemUser = _accountMgr.getSystemUser();
187185

@@ -346,6 +344,8 @@ public String handleRequest(Map params, boolean decode, String responseType, Str
346344
Class<?> cmdClass = getCmdClass(command[0]);
347345
if (cmdClass != null) {
348346
BaseCmd cmdObj = (BaseCmd) cmdClass.newInstance();
347+
cmdObj = ComponentContext.inject(cmdObj);
348+
cmdObj.configure();
349349
cmdObj.setFullUrlParams(paramMap);
350350
cmdObj.setResponseType(responseType);
351351
// This is where the command is either serialized, or directly dispatched

0 commit comments

Comments
 (0)