From efbfae723ec5583378cb90c54fc63b6975c7fc24 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Mon, 30 Sep 2013 09:45:07 -0700 Subject: [PATCH] Switch to setter injection for extensibility Various classes are using member injection to inject extensible objects. Really those object should come from an AdapterList that is injected in. This patch switches the code to use setter injection that will later allow spring to inject an AdapterList or something similar to allow extensibility. --- .../cloud/vm/VirtualMachineManagerImpl.java | 10 ++++++- .../cloud/entity/api/VMEntityManagerImpl.java | 10 ++++++- .../acl/StaticRoleBasedAPIAccessChecker.java | 11 ++++++- server/src/com/cloud/api/ApiServer.java | 22 ++++++++++++-- .../ConfigurationManagerImpl.java | 10 ++++++- .../consoleproxy/ConsoleProxyManagerImpl.java | 10 ++++++- .../hypervisor/HypervisorGuruManagerImpl.java | 30 +++++++++++++++++-- .../com/cloud/network/NetworkServiceImpl.java | 11 ++++++- .../cloud/server/ManagementServerImpl.java | 10 ++++++- .../cloud/storage/VolumeApiServiceImpl.java | 10 ++++++- .../SecondaryStorageManagerImpl.java | 10 ++++++- .../cloud/template/TemplateManagerImpl.java | 10 ++++++- 12 files changed, 139 insertions(+), 15 deletions(-) diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java index af6ca6d643d..560bab26fff 100755 --- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -257,7 +257,6 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac this._hostAllocators = _hostAllocators; } - @Inject protected List _storagePoolAllocators; @Inject @@ -3271,4 +3270,13 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac VmOpWaitInterval}; } + public List getStoragePoolAllocators() { + return _storagePoolAllocators; + } + + @Inject + public void setStoragePoolAllocators(List storagePoolAllocators) { + this._storagePoolAllocators = storagePoolAllocators; + } + } diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/cloud/entity/api/VMEntityManagerImpl.java b/engine/orchestration/src/org/apache/cloudstack/engine/cloud/entity/api/VMEntityManagerImpl.java index 204b832ab4a..e784295b1d3 100755 --- a/engine/orchestration/src/org/apache/cloudstack/engine/cloud/entity/api/VMEntityManagerImpl.java +++ b/engine/orchestration/src/org/apache/cloudstack/engine/cloud/entity/api/VMEntityManagerImpl.java @@ -99,7 +99,6 @@ public class VMEntityManagerImpl implements VMEntityManager { @Inject protected VirtualMachineManager _itMgr; - @Inject protected List _planners; @Inject @@ -257,4 +256,13 @@ public class VMEntityManagerImpl implements VMEntityManager { return true; } + public List getPlanners() { + return _planners; + } + + @Inject + public void setPlanners(List planners) { + this._planners = planners; + } + } diff --git a/plugins/acl/static-role-based/src/org/apache/cloudstack/acl/StaticRoleBasedAPIAccessChecker.java b/plugins/acl/static-role-based/src/org/apache/cloudstack/acl/StaticRoleBasedAPIAccessChecker.java index d4d73d1f77b..affcf919daf 100644 --- a/plugins/acl/static-role-based/src/org/apache/cloudstack/acl/StaticRoleBasedAPIAccessChecker.java +++ b/plugins/acl/static-role-based/src/org/apache/cloudstack/acl/StaticRoleBasedAPIAccessChecker.java @@ -46,7 +46,7 @@ public class StaticRoleBasedAPIAccessChecker extends AdapterBase implements APIC private static Map> s_roleBasedApisMap = new HashMap>(); - @Inject List _services; + List _services; @Inject AccountService _accountService; protected StaticRoleBasedAPIAccessChecker() { @@ -95,4 +95,13 @@ public class StaticRoleBasedAPIAccessChecker extends AdapterBase implements APIC } } } + + public List getServices() { + return _services; + } + + @Inject + public void setServices(List _services) { + this._services = _services; + } } diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java index 550626f111c..26789e3a81a 100755 --- a/server/src/com/cloud/api/ApiServer.java +++ b/server/src/com/cloud/api/ApiServer.java @@ -169,8 +169,8 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer @Inject private EntityManager _entityMgr; - @Inject List _pluggableServices; - @Inject List _apiAccessCheckers; + List _pluggableServices; + List _apiAccessCheckers; @Inject protected ApiAsyncJobDispatcher _asyncDispatcher; @@ -1096,4 +1096,22 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer } return responseText; } + + public List getPluggableServices() { + return _pluggableServices; + } + + @Inject + public void setPluggableServices(List _pluggableServices) { + this._pluggableServices = _pluggableServices; + } + + public List getApiAccessCheckers() { + return _apiAccessCheckers; + } + + @Inject + public void setApiAccessCheckers(List _apiAccessCheckers) { + this._apiAccessCheckers = _apiAccessCheckers; + } } diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index 8a0f7a65a12..2b86bf51238 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -250,7 +250,6 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati @Inject AlertManager _alertMgr; // @com.cloud.utils.component.Inject(adapter = SecurityChecker.class) - @Inject List _secChecker; @Inject @@ -4934,5 +4933,14 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati return false; } + public List getSecChecker() { + return _secChecker; + } + + @Inject + public void setSecChecker(List secChecker) { + this._secChecker = secChecker; + } + } diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index d51eb41c24f..030a31fb5e6 100755 --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -166,7 +166,6 @@ VirtualMachineGuru, SystemVmLoadScanHandler, ResourceStateAdapter { private int _mgmt_port = 8250; - @Inject private List _consoleProxyAllocators; @Inject @@ -1702,4 +1701,13 @@ VirtualMachineGuru, SystemVmLoadScanHandler, ResourceStateAdapter { public void prepareStop(VirtualMachineProfile profile) { } + public List getConsoleProxyAllocators() { + return _consoleProxyAllocators; + } + + @Inject + public void setConsoleProxyAllocators(List consoleProxyAllocators) { + this._consoleProxyAllocators = consoleProxyAllocators; + } + } diff --git a/server/src/com/cloud/hypervisor/HypervisorGuruManagerImpl.java b/server/src/com/cloud/hypervisor/HypervisorGuruManagerImpl.java index 4d1e1b50b40..d0effaba607 100644 --- a/server/src/com/cloud/hypervisor/HypervisorGuruManagerImpl.java +++ b/server/src/com/cloud/hypervisor/HypervisorGuruManagerImpl.java @@ -19,6 +19,7 @@ package com.cloud.hypervisor; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import javax.annotation.PostConstruct; import javax.ejb.Local; @@ -26,6 +27,7 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; import com.cloud.utils.Pair; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -43,8 +45,8 @@ public class HypervisorGuruManagerImpl extends ManagerBase implements Hypervisor @Inject HostDao _hostDao; - @Inject List _hvGuruList; - Map _hvGurus = new HashMap(); + List _hvGuruList; + Map _hvGurus = new ConcurrentHashMap(); @PostConstruct public void init() { @@ -55,7 +57,19 @@ public class HypervisorGuruManagerImpl extends ManagerBase implements Hypervisor @Override public HypervisorGuru getGuru(HypervisorType hypervisorType) { - return _hvGurus.get(hypervisorType); + HypervisorGuru result = _hvGurus.get(hypervisorType); + + if ( result == null ) { + for ( HypervisorGuru guru : _hvGuruList ) { + if ( guru.getHypervisorType() == hypervisorType ) { + _hvGurus.put(hypervisorType, guru); + result = guru; + break; + } + } + } + + return result; } @Override @@ -68,4 +82,14 @@ public class HypervisorGuruManagerImpl extends ManagerBase implements Hypervisor } return hostId; } + + public List getHvGuruList() { + return _hvGuruList; + } + + @Inject + public void setHvGuruList(List hvGuruList) { + this._hvGuruList = hvGuruList; + } + } diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java index 598b31c7bfe..61c070a86c4 100755 --- a/server/src/com/cloud/network/NetworkServiceImpl.java +++ b/server/src/com/cloud/network/NetworkServiceImpl.java @@ -230,7 +230,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { @Inject UsageEventDao _usageEventDao; - @Inject List _networkGurus; + List _networkGurus; @Inject NetworkDomainDao _networkDomainDao; @@ -3944,4 +3944,13 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { return _networkMgr.listVmNics(vmId, nicId); } + public List getNetworkGurus() { + return _networkGurus; + } + + @Inject + public void setNetworkGurus(List networkGurus) { + this._networkGurus = networkGurus; + } + } diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index c0a52f78cef..1c316103424 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -675,7 +675,6 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Inject private HypervisorCapabilitiesDao _hypervisorCapabilitiesDao; private List _hostAllocators; - @Inject private List _storagePoolAllocators; @Inject private ResourceTagDao _resourceTagDao; @@ -3870,4 +3869,13 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe _dpMgr.cleanupVMReservations(); } + + public List getStoragePoolAllocators() { + return _storagePoolAllocators; + } + + @Inject + public void setStoragePoolAllocators(List storagePoolAllocators) { + this._storagePoolAllocators = storagePoolAllocators; + } } diff --git a/server/src/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/com/cloud/storage/VolumeApiServiceImpl.java index b573786e0bf..faff10f11fd 100644 --- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java @@ -273,7 +273,6 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic protected VmDiskStatisticsDao _vmDiskStatsDao; @Inject protected VMSnapshotDao _vmSnapshotDao; - @Inject protected List _storagePoolAllocators; @Inject ConfigurationDao _configDao; @@ -1693,4 +1692,13 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic return true; } + public List getStoragePoolAllocators() { + return _storagePoolAllocators; + } + + @Inject + public void setStoragePoolAllocators(List storagePoolAllocators) { + this._storagePoolAllocators = storagePoolAllocators; + } + } diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index 3a070349ace..007557dcbc5 100755 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -169,7 +169,6 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar private int _mgmt_port = 8250; - @Inject private List _ssVmAllocators; @Inject @@ -1374,4 +1373,13 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar public void prepareStop(VirtualMachineProfile profile) { } + + public List getSecondaryStorageVmAllocators() { + return _ssVmAllocators; + } + + @Inject + public void setSecondaryStorageVmAllocators(List ssVmAllocators) { + this._ssVmAllocators = ssVmAllocators; + } } diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java index 9fa2e8bf2f2..5240102a879 100755 --- a/server/src/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/com/cloud/template/TemplateManagerImpl.java @@ -291,7 +291,6 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, boolean _disableExtraction = false; ExecutorService _preloadExecutor; - @Inject protected List _adapters; @Inject @@ -1823,4 +1822,13 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, public ConfigKey[] getConfigKeys() { return new ConfigKey[] {AllowPublicUserTemplates}; } + + public List getTemplateAdapters() { + return _adapters; + } + + @Inject + public void setTemplateAdapters(List adapters) { + this._adapters = adapters; + } }