http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java 
b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
index ddc79a0..7d8934f 100644
--- a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
+++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
@@ -93,6 +93,7 @@ public class Site2SiteVpnManagerImpl implements 
Site2SiteVpnManager, Manager {
     @Inject VpcDao _vpcDao;
     @Inject IPAddressDao _ipAddressDao;
     @Inject AccountDao _accountDao;
+    @Inject ConfigurationDao _configDao;
     @Inject VpcManager _vpcMgr;
     @Inject AccountManager _accountMgr;
     
@@ -104,9 +105,7 @@ public class Site2SiteVpnManagerImpl implements 
Site2SiteVpnManager, Manager {
     public boolean configure(String name, Map<String, Object> params) throws 
ConfigurationException {
         _name = name;
         
-        ComponentLocator locator = ComponentLocator.getCurrentLocator();
-        ConfigurationDao configDao = locator.getDao(ConfigurationDao.class);
-        Map<String, String> configs = configDao.getConfiguration(params);
+        Map<String, String> configs = _configDao.getConfiguration(params);
         _connLimit = 
NumbersUtil.parseInt(configs.get(Config.Site2SiteVpnConnectionPerVpnGatewayLimit.key()),
 4);
         _subnetsLimit = 
NumbersUtil.parseInt(configs.get(Config.Site2SiteVpnSubnetsPerCustomerGatewayLimit.key()),
 10);
         return true;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/server/src/com/cloud/resource/DiscovererBase.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/resource/DiscovererBase.java 
b/server/src/com/cloud/resource/DiscovererBase.java
index 01dd126..6f6d1ba 100644
--- a/server/src/com/cloud/resource/DiscovererBase.java
+++ b/server/src/com/cloud/resource/DiscovererBase.java
@@ -48,8 +48,7 @@ public abstract class DiscovererBase implements Discoverer {
     
     @Override
     public boolean configure(String name, Map<String, Object> params) throws 
ConfigurationException {
-        ConfigurationDao dao = 
ComponentLocator.getCurrentLocator().getDao(ConfigurationDao.class);
-        _params = dao.getConfiguration(params);
+        _params = _configDao.getConfiguration(params);
         _name = name;
         
         return true;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/server/src/com/cloud/storage/StorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java 
b/server/src/com/cloud/storage/StorageManagerImpl.java
index 6289a7a..bb2f599 100755
--- a/server/src/com/cloud/storage/StorageManagerImpl.java
+++ b/server/src/com/cloud/storage/StorageManagerImpl.java
@@ -331,6 +331,8 @@ public class StorageManagerImpl implements StorageManager, 
Manager, ClusterManag
     protected ResourceTagDao _resourceTagDao;
     @Inject
     protected List<StoragePoolAllocator> _storagePoolAllocators;
+    @Inject ConfigurationDao _configDao;
+    @Inject ManagementServer _msServer;
 
     // TODO : we don't have any instantiated pool discover, disable injection 
temporarily
     // @Inject
@@ -930,15 +932,7 @@ public class StorageManagerImpl implements StorageManager, 
Manager, ClusterManag
     public boolean configure(String name, Map<String, Object> params) throws 
ConfigurationException {
         _name = name;
 
-        ComponentLocator locator = ComponentLocator.getCurrentLocator();
-
-        ConfigurationDao configDao = locator.getDao(ConfigurationDao.class);
-        if (configDao == null) {
-            s_logger.error("Unable to get the configuration dao.");
-            return false;
-        }
-
-        Map<String, String> configs = 
configDao.getConfiguration("management-server", params);
+        Map<String, String> configs = 
_configDao.getConfiguration("management-server", params);
 
         String overProvisioningFactorStr = 
configs.get("storage.overprovisioning.factor");
         if (overProvisioningFactorStr != null) {
@@ -956,27 +950,27 @@ public class StorageManagerImpl implements 
StorageManager, Manager, ClusterManag
         String storageCleanupEnabled = configs.get("storage.cleanup.enabled");
         _storageCleanupEnabled = (storageCleanupEnabled == null) ? true : 
Boolean.parseBoolean(storageCleanupEnabled);
 
-        String value = 
configDao.getValue(Config.CreateVolumeFromSnapshotWait.toString());
+        String value = 
_configDao.getValue(Config.CreateVolumeFromSnapshotWait.toString());
         _createVolumeFromSnapshotWait = NumbersUtil.parseInt(value, 
Integer.parseInt(Config.CreateVolumeFromSnapshotWait.getDefaultValue()));
 
-        value = configDao.getValue(Config.CopyVolumeWait.toString());
+        value = _configDao.getValue(Config.CopyVolumeWait.toString());
         _copyvolumewait = NumbersUtil.parseInt(value, 
Integer.parseInt(Config.CopyVolumeWait.getDefaultValue()));
 
-        value = configDao.getValue(Config.RecreateSystemVmEnabled.key());
+        value = _configDao.getValue(Config.RecreateSystemVmEnabled.key());
         _recreateSystemVmEnabled = Boolean.parseBoolean(value);
         
-        value = configDao.getValue(Config.StorageTemplateCleanupEnabled.key());
+        value = 
_configDao.getValue(Config.StorageTemplateCleanupEnabled.key());
         _templateCleanupEnabled = (value == null ? true : 
Boolean.parseBoolean(value));
 
         String time = configs.get("storage.cleanup.interval");
         _storageCleanupInterval = NumbersUtil.parseInt(time, 86400);
 
-        String storageUsedThreshold = 
configDao.getValue(Config.StorageCapacityDisableThreshold.key());
+        String storageUsedThreshold = 
_configDao.getValue(Config.StorageCapacityDisableThreshold.key());
         if (storageUsedThreshold != null) {
             _storageUsedThreshold = Double.parseDouble(storageUsedThreshold);
         }
 
-        String storageAllocatedThreshold = 
configDao.getValue(Config.StorageAllocatedCapacityDisableThreshold.key());
+        String storageAllocatedThreshold = 
_configDao.getValue(Config.StorageAllocatedCapacityDisableThreshold.key());
         if (storageAllocatedThreshold != null) {
             _storageAllocatedThreshold = 
Double.parseDouble(storageAllocatedThreshold);
         }
@@ -992,13 +986,13 @@ public class StorageManagerImpl implements 
StorageManager, Manager, ClusterManag
 
         
_agentMgr.registerForHostEvents(ComponentLocator.inject(LocalStoragePoolListener.class),
 true, false, false);
 
-        String maxVolumeSizeInGbString = 
configDao.getValue("storage.max.volume.size");
+        String maxVolumeSizeInGbString = 
_configDao.getValue("storage.max.volume.size");
         _maxVolumeSizeInGb = NumbersUtil.parseLong(maxVolumeSizeInGbString, 
2000);
 
-        String _customDiskOfferingMinSizeStr = 
configDao.getValue(Config.CustomDiskOfferingMinSize.toString());
+        String _customDiskOfferingMinSizeStr = 
_configDao.getValue(Config.CustomDiskOfferingMinSize.toString());
         _customDiskOfferingMinSize = 
NumbersUtil.parseInt(_customDiskOfferingMinSizeStr, 
Integer.parseInt(Config.CustomDiskOfferingMinSize.getDefaultValue()));
 
-        String _customDiskOfferingMaxSizeStr = 
configDao.getValue(Config.CustomDiskOfferingMaxSize.toString());
+        String _customDiskOfferingMaxSizeStr = 
_configDao.getValue(Config.CustomDiskOfferingMaxSize.toString());
         _customDiskOfferingMaxSize = 
NumbersUtil.parseInt(_customDiskOfferingMaxSizeStr, 
Integer.parseInt(Config.CustomDiskOfferingMaxSize.getDefaultValue()));
 
         HostTemplateStatesSearch = _vmTemplateHostDao.createSearchBuilder();
@@ -1012,7 +1006,7 @@ public class StorageManagerImpl implements 
StorageManager, Manager, ClusterManag
         HostSearch.done();
         HostTemplateStatesSearch.done();
 
-        _serverId = ((ManagementServer) 
ComponentLocator.getComponent(ManagementServer.Name)).getId();
+        _serverId = _msServer.getId();
 
         UpHostsInPoolSearch = 
_storagePoolHostDao.createSearchBuilder(Long.class);
         
UpHostsInPoolSearch.selectField(UpHostsInPoolSearch.entity().getHostId());

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/server/src/com/cloud/storage/allocator/GarbageCollectingStoragePoolAllocator.java
----------------------------------------------------------------------
diff --git 
a/server/src/com/cloud/storage/allocator/GarbageCollectingStoragePoolAllocator.java
 
b/server/src/com/cloud/storage/allocator/GarbageCollectingStoragePoolAllocator.java
index a6d227b..3e1030d 100644
--- 
a/server/src/com/cloud/storage/allocator/GarbageCollectingStoragePoolAllocator.java
+++ 
b/server/src/com/cloud/storage/allocator/GarbageCollectingStoragePoolAllocator.java
@@ -20,6 +20,7 @@ import java.util.List;
 import java.util.Map;
 
 import javax.ejb.Local;
+import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
 import org.apache.log4j.Logger;
@@ -42,8 +43,8 @@ public class GarbageCollectingStoragePoolAllocator extends 
AbstractStoragePoolAl
     
     StoragePoolAllocator _firstFitStoragePoolAllocator;
     StoragePoolAllocator _localStoragePoolAllocator;
-    StorageManager _storageMgr;
-    ConfigurationDao _configDao;
+    @Inject StorageManager _storageMgr;
+    @Inject ConfigurationDao _configDao;
     boolean _storagePoolCleanupEnabled;
     
     @Override
@@ -94,16 +95,6 @@ public class GarbageCollectingStoragePoolAllocator extends 
AbstractStoragePoolAl
         _localStoragePoolAllocator = 
ComponentLocator.inject(LocalStoragePoolAllocator.class);
         _localStoragePoolAllocator.configure("GCLocalStoragePoolAllocator", 
params);
         
-        _storageMgr = locator.getManager(StorageManager.class);
-        if (_storageMgr == null) {
-               throw new ConfigurationException("Unable to get " + 
StorageManager.class.getName());
-        }
-        
-        _configDao = locator.getDao(ConfigurationDao.class);
-        if (_configDao == null) {
-            throw new ConfigurationException("Unable to get the configuration 
dao.");
-        }
-        
         String storagePoolCleanupEnabled = 
_configDao.getValue("storage.pool.cleanup.enabled");
         _storagePoolCleanupEnabled = (storagePoolCleanupEnabled == null) ? 
true : Boolean.parseBoolean(storagePoolCleanupEnabled);
         

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java 
b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
index 31beeaf..6afcf32 100755
--- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
+++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
@@ -793,27 +793,21 @@ public class SecondaryStorageManagerImpl implements 
SecondaryStorageVmManager, V
 
         _name = name;
 
-        ComponentLocator locator = ComponentLocator.getCurrentLocator();
-        ConfigurationDao configDao = locator.getDao(ConfigurationDao.class);
-        if (configDao == null) {
-            throw new ConfigurationException("Unable to get the configuration 
dao.");
-        }
-
-        Map<String, String> configs = 
configDao.getConfiguration("management-server", params);
+        Map<String, String> configs = 
_configDao.getConfiguration("management-server", params);
         
         _secStorageVmMtuSize = 
NumbersUtil.parseInt(configs.get("secstorage.vm.mtu.size"), 
DEFAULT_SS_VM_MTUSIZE);
-        String useServiceVM = configDao.getValue("secondary.storage.vm");
+        String useServiceVM = _configDao.getValue("secondary.storage.vm");
         boolean _useServiceVM = false;
         if ("true".equalsIgnoreCase(useServiceVM)) {
             _useServiceVM = true;
         }
 
-        String sslcopy = configDao.getValue("secstorage.encrypt.copy");
+        String sslcopy = _configDao.getValue("secstorage.encrypt.copy");
         if ("true".equalsIgnoreCase(sslcopy)) {
             _useSSlCopy = true;
         }
 
-        _allowedInternalSites = 
configDao.getValue("secstorage.allowed.internal.sites");
+        _allowedInternalSites = 
_configDao.getValue("secstorage.allowed.internal.sites");
 
         String value = configs.get("secstorage.capacityscan.interval");
         _capacityScanInterval = NumbersUtil.parseLong(value, 
DEFAULT_CAPACITY_SCAN_INTERVAL);
@@ -823,7 +817,7 @@ public class SecondaryStorageManagerImpl implements 
SecondaryStorageVmManager, V
             _instance = "DEFAULT";
         }
 
-        Map<String, String> agentMgrConfigs = 
configDao.getConfiguration("AgentManager", params);
+        Map<String, String> agentMgrConfigs = 
_configDao.getConfiguration("AgentManager", params);
         _mgmt_host = agentMgrConfigs.get("host");
         if (_mgmt_host == null) {
             s_logger.warn("Critical warning! Please configure your management 
server host address right after you have started your management server and 
then restart it, otherwise you won't have access to secondary storage");

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java 
b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
index b8b530a..583f90d 100755
--- a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
+++ b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
@@ -183,6 +183,8 @@ public class SnapshotManagerImpl implements 
SnapshotManager, SnapshotService, Ma
     private VolumeDao _volumeDao;
     @Inject
     private ResourceTagDao _resourceTagDao;
+    @Inject
+    private ConfigurationDao _configDao;
     
     String _name;
     private int _totalRetries;
@@ -1330,23 +1332,16 @@ public class SnapshotManagerImpl implements 
SnapshotManager, SnapshotService, Ma
     public boolean configure(String name, Map<String, Object> params) throws 
ConfigurationException {
         _name = name;
 
-        ComponentLocator locator = ComponentLocator.getCurrentLocator();
-
-        ConfigurationDao configDao = locator.getDao(ConfigurationDao.class);
-        if (configDao == null) {
-            throw new ConfigurationException("Unable to get the configuration 
dao.");
-        }
-        
-        String value = 
configDao.getValue(Config.BackupSnapshotWait.toString());
+        String value = 
_configDao.getValue(Config.BackupSnapshotWait.toString());
         _backupsnapshotwait = NumbersUtil.parseInt(value, 
Integer.parseInt(Config.BackupSnapshotWait.getDefaultValue()));
 
-        
Type.HOURLY.setMax(NumbersUtil.parseInt(configDao.getValue("snapshot.max.hourly"),
 HOURLYMAX));
-        
Type.DAILY.setMax(NumbersUtil.parseInt(configDao.getValue("snapshot.max.daily"),
 DAILYMAX));
-        
Type.WEEKLY.setMax(NumbersUtil.parseInt(configDao.getValue("snapshot.max.weekly"),
 WEEKLYMAX));
-        
Type.MONTHLY.setMax(NumbersUtil.parseInt(configDao.getValue("snapshot.max.monthly"),
 MONTHLYMAX));
-        _deltaSnapshotMax = 
NumbersUtil.parseInt(configDao.getValue("snapshot.delta.max"), DELTAMAX);
-        _totalRetries = 
NumbersUtil.parseInt(configDao.getValue("total.retries"), 4);
-        _pauseInterval = 2 * 
NumbersUtil.parseInt(configDao.getValue("ping.interval"), 60);
+        
Type.HOURLY.setMax(NumbersUtil.parseInt(_configDao.getValue("snapshot.max.hourly"),
 HOURLYMAX));
+        
Type.DAILY.setMax(NumbersUtil.parseInt(_configDao.getValue("snapshot.max.daily"),
 DAILYMAX));
+        
Type.WEEKLY.setMax(NumbersUtil.parseInt(_configDao.getValue("snapshot.max.weekly"),
 WEEKLYMAX));
+        
Type.MONTHLY.setMax(NumbersUtil.parseInt(_configDao.getValue("snapshot.max.monthly"),
 MONTHLYMAX));
+        _deltaSnapshotMax = 
NumbersUtil.parseInt(_configDao.getValue("snapshot.delta.max"), DELTAMAX);
+        _totalRetries = 
NumbersUtil.parseInt(_configDao.getValue("total.retries"), 4);
+        _pauseInterval = 2 * 
NumbersUtil.parseInt(_configDao.getValue("ping.interval"), 60);
 
         s_logger.info("Snapshot Manager is configured.");
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java 
b/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
index bea077d..09f43be 100644
--- a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
+++ b/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
@@ -73,7 +73,8 @@ public class SnapshotSchedulerImpl implements 
SnapshotScheduler {
     @Inject protected SnapshotPolicyDao       _snapshotPolicyDao;
     @Inject protected AsyncJobManager         _asyncMgr;
     @Inject protected VolumeDao               _volsDao;
-
+    @Inject protected ConfigurationDao                   _configDao;
+    
     private static final int ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_COOPERATION = 5;  
  // 5 seconds
     private int        _snapshotPollInterval;
     private Timer      _testClockTimer;
@@ -340,23 +341,16 @@ public class SnapshotSchedulerImpl implements 
SnapshotScheduler {
     throws ConfigurationException {
         _name = name;
 
-        ComponentLocator locator = ComponentLocator.getCurrentLocator();
-
-        ConfigurationDao configDao = locator.getDao(ConfigurationDao.class);
-        if (configDao == null) {
-            s_logger.error("Unable to get the configuration dao. " + 
ConfigurationDao.class.getName());
-            return false;
-        }
-        _snapshotPollInterval = 
NumbersUtil.parseInt(configDao.getValue("snapshot.poll.interval"), 300);
-        boolean snapshotsRecurringTest = 
Boolean.parseBoolean(configDao.getValue("snapshot.recurring.test"));
+     _snapshotPollInterval = 
NumbersUtil.parseInt(_configDao.getValue("snapshot.poll.interval"), 300);
+        boolean snapshotsRecurringTest = 
Boolean.parseBoolean(_configDao.getValue("snapshot.recurring.test"));
         if (snapshotsRecurringTest) {
             // look for some test values in the configuration table so that 
snapshots can be taken more frequently (QA test code)
-            int minutesPerHour = 
NumbersUtil.parseInt(configDao.getValue("snapshot.test.minutes.per.hour"), 60);
-            int hoursPerDay = 
NumbersUtil.parseInt(configDao.getValue("snapshot.test.hours.per.day"), 24);
-            int daysPerWeek = 
NumbersUtil.parseInt(configDao.getValue("snapshot.test.days.per.week"), 7);
-            int daysPerMonth = 
NumbersUtil.parseInt(configDao.getValue("snapshot.test.days.per.month"), 30);
-            int weeksPerMonth = 
NumbersUtil.parseInt(configDao.getValue("snapshot.test.weeks.per.month"), 4);
-            int monthsPerYear = 
NumbersUtil.parseInt(configDao.getValue("snapshot.test.months.per.year"), 12);
+            int minutesPerHour = 
NumbersUtil.parseInt(_configDao.getValue("snapshot.test.minutes.per.hour"), 60);
+            int hoursPerDay = 
NumbersUtil.parseInt(_configDao.getValue("snapshot.test.hours.per.day"), 24);
+            int daysPerWeek = 
NumbersUtil.parseInt(_configDao.getValue("snapshot.test.days.per.week"), 7);
+            int daysPerMonth = 
NumbersUtil.parseInt(_configDao.getValue("snapshot.test.days.per.month"), 30);
+            int weeksPerMonth = 
NumbersUtil.parseInt(_configDao.getValue("snapshot.test.weeks.per.month"), 4);
+            int monthsPerYear = 
NumbersUtil.parseInt(_configDao.getValue("snapshot.test.months.per.year"), 12);
 
             _testTimerTask = new TestClock(this, minutesPerHour, hoursPerDay, 
daysPerWeek, daysPerMonth, weeksPerMonth, monthsPerYear);
         }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/server/src/com/cloud/template/TemplateManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java 
b/server/src/com/cloud/template/TemplateManagerImpl.java
index 289bcf9..ccfb459 100755
--- a/server/src/com/cloud/template/TemplateManagerImpl.java
+++ b/server/src/com/cloud/template/TemplateManagerImpl.java
@@ -1018,8 +1018,6 @@ public class TemplateManagerImpl implements 
TemplateManager, Manager, TemplateSe
     public boolean configure(String name, Map<String, Object> params) throws 
ConfigurationException {
         _name = name;
         
-        ComponentLocator locator = ComponentLocator.getCurrentLocator();
-        
         final Map<String, String> configs = 
_configDao.getConfiguration("AgentManager", params);
         _routerTemplateId = 
NumbersUtil.parseInt(configs.get("router.template.id"), 1);
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/server/src/com/cloud/user/AccountManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/user/AccountManagerImpl.java 
b/server/src/com/cloud/user/AccountManagerImpl.java
index d0ae748..23f6d04 100755
--- a/server/src/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/com/cloud/user/AccountManagerImpl.java
@@ -250,9 +250,7 @@ public class AccountManagerImpl implements AccountManager, 
AccountService, Manag
             throw new ConfigurationException("Unable to find the system user 
using " + User.UID_SYSTEM);
         }
 
-        ComponentLocator locator = ComponentLocator.getCurrentLocator();
-        ConfigurationDao configDao = locator.getDao(ConfigurationDao.class);
-        Map<String, String> configs = configDao.getConfiguration(params);
+        Map<String, String> configs = _configDao.getConfiguration(params);
 
         String loginAttempts = 
configs.get(Config.IncorrectLoginAttemptsAllowed.key());
         _allowedLoginAttempts = NumbersUtil.parseInt(loginAttempts, 5);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java 
b/server/src/com/cloud/vm/UserVmManagerImpl.java
index e0454c3..09d5578 100755
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -381,7 +381,7 @@ public class UserVmManagerImpl implements UserVmManager, 
UserVmService, Manager
        protected String _instance;
        protected String _zone;
 
-       private ConfigurationDao _configDao;
+       @Inject private ConfigurationDao _configDao;
        private int _createprivatetemplatefromvolumewait;
        private int _createprivatetemplatefromsnapshotwait;
 
@@ -1333,13 +1333,6 @@ public class UserVmManagerImpl implements UserVmManager, 
UserVmService, Manager
                        throws ConfigurationException {
                _name = name;
 
-               ComponentLocator locator = ComponentLocator.getCurrentLocator();
-               _configDao = locator.getDao(ConfigurationDao.class);
-               if (_configDao == null) {
-                       throw new ConfigurationException(
-                                       "Unable to get the configuration dao.");
-               }
-
                Map<String, String> configs = _configDao.getConfiguration(
                                "AgentManager", params);
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java 
b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
index 68ad1d3..00df41c 100755
--- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -22,7 +22,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
-import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -141,8 +140,6 @@ import com.cloud.utils.Journal;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
 import com.cloud.utils.Ternary;
-import com.cloud.utils.component.Adapters;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.GlobalLock;
@@ -239,6 +236,9 @@ public class VirtualMachineManagerImpl implements 
VirtualMachineManager, Listene
     @Inject
     protected ResourceManager _resourceMgr;
 
+    @Inject
+    protected ConfigurationDao _configDao;
+    
     Map<VirtualMachine.Type, VirtualMachineGuru<? extends VMInstanceVO>> 
_vmGurus = new HashMap<VirtualMachine.Type, VirtualMachineGuru<? extends 
VMInstanceVO>>();
     protected StateMachine2<State, VirtualMachine.Event, VirtualMachine> 
_stateMachine;
 
@@ -428,9 +428,7 @@ public class VirtualMachineManagerImpl implements 
VirtualMachineManager, Listene
     public boolean configure(String name, Map<String, Object> xmlParams) 
throws ConfigurationException {
         _name = name;
 
-        ComponentLocator locator = ComponentLocator.getCurrentLocator();
-        ConfigurationDao configDao = locator.getDao(ConfigurationDao.class);
-        Map<String, String> params = configDao.getConfiguration(xmlParams);
+        Map<String, String> params = _configDao.getConfiguration(xmlParams);
 
         _retry = NumbersUtil.parseInt(params.get(Config.StartRetry.key()), 10);
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/server/src/com/cloud/vm/dao/UserVmDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/dao/UserVmDaoImpl.java 
b/server/src/com/cloud/vm/dao/UserVmDaoImpl.java
index 1284408..8eda2e2 100755
--- a/server/src/com/cloud/vm/dao/UserVmDaoImpl.java
+++ b/server/src/com/cloud/vm/dao/UserVmDaoImpl.java
@@ -284,7 +284,6 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, 
Long> implements Use
     @Override
     public List<UserVmVO> listByNetworkIdAndStates(long networkId, State... 
states) {
         if (UserVmSearch == null) {
-            NicDao _nicDao = 
ComponentLocator.getLocator("management-server").getDao(NicDao.class);
             SearchBuilder<NicVO> nicSearch = _nicDao.createSearchBuilder();
             nicSearch.and("networkId", nicSearch.entity().getNetworkId(), 
SearchCriteria.Op.EQ);
             nicSearch.and("ip4Address", nicSearch.entity().getIp4Address(), 
SearchCriteria.Op.NNULL);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/usage/src/com/cloud/usage/UsageAlertManagerImpl.java
----------------------------------------------------------------------
diff --git a/usage/src/com/cloud/usage/UsageAlertManagerImpl.java 
b/usage/src/com/cloud/usage/UsageAlertManagerImpl.java
index 6d46262..2b698c8 100644
--- a/usage/src/com/cloud/usage/UsageAlertManagerImpl.java
+++ b/usage/src/com/cloud/usage/UsageAlertManagerImpl.java
@@ -22,6 +22,7 @@ import java.util.Map;
 import java.util.Properties;
 
 import javax.ejb.Local;
+import javax.inject.Inject;
 import javax.mail.Authenticator;
 import javax.mail.MessagingException;
 import javax.mail.PasswordAuthentication;
@@ -32,6 +33,7 @@ import javax.mail.internet.InternetAddress;
 import javax.naming.ConfigurationException;
 
 import org.apache.log4j.Logger;
+import org.springframework.stereotype.Component;
 
 import com.cloud.alert.AlertManager;
 import com.cloud.alert.AlertVO;
@@ -43,26 +45,21 @@ import com.sun.mail.smtp.SMTPMessage;
 import com.sun.mail.smtp.SMTPSSLTransport;
 import com.sun.mail.smtp.SMTPTransport;
 
+@Component
 @Local(value={AlertManager.class})
 public class UsageAlertManagerImpl implements AlertManager {
     private static final Logger s_logger = 
Logger.getLogger(UsageAlertManagerImpl.class.getName());
 
     private String _name = null;
     private EmailAlert _emailAlert;
-    private AlertDao _alertDao;
+    @Inject private AlertDao _alertDao;
+    @Inject private ConfigurationDao _configDao;
     
     @Override
     public boolean configure(String name, Map<String, Object> params) throws 
ConfigurationException {
         _name = name;
 
-        ComponentLocator locator = ComponentLocator.getCurrentLocator();
-        ConfigurationDao configDao = locator.getDao(ConfigurationDao.class);
-        if (configDao == null) {
-            s_logger.error("Unable to get the configuration dao.");
-            return false;
-        }
-
-        Map<String, String> configs = 
configDao.getConfiguration("management-server", params);
+         Map<String, String> configs = 
_configDao.getConfiguration("management-server", params);
 
         // set up the email system for alerts
         String emailAddressList = configs.get("alert.email.addresses");
@@ -85,14 +82,7 @@ public class UsageAlertManagerImpl implements AlertManager {
         }
 
         _emailAlert = new EmailAlert(emailAddresses, smtpHost, smtpPort, 
useAuth, smtpUsername, smtpPassword, emailSender, smtpDebug);
-
-        _alertDao = locator.getDao(AlertDao.class);
-        if (_alertDao == null) {
-            s_logger.error("Unable to get the alert dao.");
-            return false;
-        }
-
-        return true;
+         return true;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/usage/src/com/cloud/usage/UsageManagerImpl.java
----------------------------------------------------------------------
diff --git a/usage/src/com/cloud/usage/UsageManagerImpl.java 
b/usage/src/com/cloud/usage/UsageManagerImpl.java
index 53ebb14..bbf2cd6 100644
--- a/usage/src/com/cloud/usage/UsageManagerImpl.java
+++ b/usage/src/com/cloud/usage/UsageManagerImpl.java
@@ -124,7 +124,7 @@ public class UsageManagerImpl implements UsageManager, 
Runnable {
     private Future m_heartbeat = null;
     private Future m_sanity = null;
 
-    protected UsageManagerImpl() {
+    public UsageManagerImpl() {
     }
 
     private void mergeConfigs(Map<String, String> dbParams, Map<String, 
Object> xmlParams) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/utils/src/com/cloud/utils/component/ComponentContext.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/component/ComponentContext.java 
b/utils/src/com/cloud/utils/component/ComponentContext.java
index 5d3f8c6..ce46423 100644
--- a/utils/src/com/cloud/utils/component/ComponentContext.java
+++ b/utils/src/com/cloud/utils/component/ComponentContext.java
@@ -23,7 +23,6 @@ import org.apache.log4j.Logger;
 import org.springframework.aop.Advisor;
 import org.springframework.aop.framework.Advised;
 import org.springframework.aop.framework.ProxyFactory;
-import org.springframework.aop.support.AopUtils;
 import org.springframework.aop.support.DefaultPointcutAdvisor;
 import org.springframework.beans.factory.NoSuchBeanDefinitionException;
 import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
@@ -85,9 +84,21 @@ public class ComponentContext implements 
ApplicationContextAware {
     }
     
     public static <T> boolean isPrimary(Object instance, Class<T> beanType) {
-               Map<String, T> matchedTypes = 
ComponentContext.getComponentsOfType(beanType);
+       
+       // we assume single line of interface inheritance of beanType
+       Class<?> componentType = beanType;
+       Class<?> targetClass = getTargetClass(instance);
+       Class<?> interfaces[] = targetClass.getInterfaces();
+       for(Class<?> intf : interfaces)  {
+               if(beanType.isAssignableFrom(intf)) {
+                       componentType = intf;
+                       break;
+               }
+       }
+       
+               Map<String, T> matchedTypes = (Map<String, 
T>)ComponentContext.getComponentsOfType(componentType);
                if(matchedTypes.size() > 1) {
-                       Primary primary = 
getTargetClass(instance).getAnnotation(Primary.class);
+                       Primary primary = 
targetClass.getAnnotation(Primary.class);
                        if(primary != null)
                                return true;
                        
@@ -96,7 +107,7 @@ public class ComponentContext implements 
ApplicationContextAware {
        
        return true;
     }
-    
+     
     public static Class<?> getTargetClass(Object instance) {
            if(instance instanceof Advised) {
                try {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b274c570/utils/src/com/cloud/utils/component/ComponentLocator.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/component/ComponentLocator.java 
b/utils/src/com/cloud/utils/component/ComponentLocator.java
index 90118b6..d8d6e63 100644
--- a/utils/src/com/cloud/utils/component/ComponentLocator.java
+++ b/utils/src/com/cloud/utils/component/ComponentLocator.java
@@ -24,7 +24,6 @@ import com.cloud.utils.db.GenericDao;
 
 @Component
 public class ComponentLocator {
-
     public static ComponentLocator getCurrentLocator() {
        return ComponentContext.getCompanent(ComponentLocator.class);
     }

Reply via email to