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/03 22:34:10 UTC

git commit: Replace Adapters with standard List to work with Spring injection

Updated Branches:
  refs/heads/javelin 8a9cf0400 -> 25d14418b


Replace Adapters<T> with standard List<T> to work with Spring injection


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

Branch: refs/heads/javelin
Commit: 25d14418b9358ecee0efa02c8d927a154bdacd31
Parents: 8a9cf04
Author: Kelven Yang <ke...@gmail.com>
Authored: Thu Jan 3 11:49:12 2013 -0800
Committer: Kelven Yang <ke...@gmail.com>
Committed: Thu Jan 3 13:33:52 2013 -0800

----------------------------------------------------------------------
 client/pom.xml                                     |    1 +
 client/tomcatconf/applicationContext.xml.in        |    3 +
 .../AsyncSampleEventDrivenStyleCaller.java         |    4 +-
 .../agent/manager/ClusteredAgentManagerImpl.java   |    4 +-
 .../cloud/baremetal/BareMetalVmManagerImpl.java    |    9 +++-
 .../com/cloud/baremetal/PxeServerManagerImpl.java  |    5 +-
 .../configuration/ConfigurationManagerImpl.java    |    6 ++-
 server/src/com/cloud/deploy/FirstFitPlanner.java   |   25 ++++------
 .../src/com/cloud/network/NetworkManagerImpl.java  |   37 ++++++++------
 .../com/cloud/resource/ResourceManagerImpl.java    |   35 ++++++++------
 .../PremiumSecondaryStorageManagerImpl.java        |    2 +
 .../src/com/cloud/storage/StorageManagerImpl.java  |   17 +++----
 .../secondary/SecondaryStorageManagerImpl.java     |   12 ++---
 .../com/cloud/template/TemplateManagerImpl.java    |    8 ++--
 .../com/cloud/vm/VirtualMachineManagerImpl.java    |    6 +-
 .../test/com/cloud/vpc/MockNetworkManagerImpl.java |    6 +-
 utils/src/com/cloud/utils/component/Adapters.java  |    8 +++
 17 files changed, 103 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/client/pom.xml
----------------------------------------------------------------------
diff --git a/client/pom.xml b/client/pom.xml
index e00e28b..e62c6a9 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -199,6 +199,7 @@
               <maxIdleTime>60000</maxIdleTime>
             </connector>
           </connectors>
+          <jvmArgs>-XX:MaxPermSize=256m -Xmx2g</jvmArgs>
           <contextPath>/client</contextPath>
           <webXml>${basedir}/target/${project.artifactId}-${project.version}/WEB-INF/web.xml</webXml>
           <webAppSourceDirectory>${basedir}/target/${project.artifactId}-${project.version}</webAppSourceDirectory>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/client/tomcatconf/applicationContext.xml.in
----------------------------------------------------------------------
diff --git a/client/tomcatconf/applicationContext.xml.in b/client/tomcatconf/applicationContext.xml.in
index 34bb853..60e68e0 100644
--- a/client/tomcatconf/applicationContext.xml.in
+++ b/client/tomcatconf/applicationContext.xml.in
@@ -19,6 +19,8 @@
   <!--
     @DB support
   -->
+  
+<!--  
   <aop:config proxy-target-class="true">
     <aop:aspect id="dbContextBuilder" ref="transactionContextBuilder">
     <aop:pointcut id="captureAnyMethod"
@@ -26,6 +28,7 @@
       <aop:around pointcut-ref="captureAnyMethod" method="AroundAnyMethod"/> 
     </aop:aspect>
   </aop:config>
+-->
 
   <bean id="transactionContextBuilder" class="com.cloud.utils.db.TransactionContextBuilder" />
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/framework/ipc/test/org/apache/cloudstack/framework/codestyle/AsyncSampleEventDrivenStyleCaller.java
----------------------------------------------------------------------
diff --git a/framework/ipc/test/org/apache/cloudstack/framework/codestyle/AsyncSampleEventDrivenStyleCaller.java b/framework/ipc/test/org/apache/cloudstack/framework/codestyle/AsyncSampleEventDrivenStyleCaller.java
index df66f10..1176eb2 100644
--- a/framework/ipc/test/org/apache/cloudstack/framework/codestyle/AsyncSampleEventDrivenStyleCaller.java
+++ b/framework/ipc/test/org/apache/cloudstack/framework/codestyle/AsyncSampleEventDrivenStyleCaller.java
@@ -28,14 +28,14 @@ public class AsyncSampleEventDrivenStyleCaller {
 	@SuppressWarnings("unchecked")
 	public void MethodThatWillCallAsyncMethod() {
 		String vol = new String("Hello");
-		AsyncCallbackDispatcher<AsyncSampleEventDrivenStyleCaller> caller = AsyncCallbackDispatcher.create(this);
+		AsyncCallbackDispatcher<AsyncSampleEventDrivenStyleCaller, Object> caller = AsyncCallbackDispatcher.create(this);
 		_ds.createVolume(vol, caller
 			.setCallback(caller.getTarget().HandleVolumeCreateAsyncCallback(null, null))
 			.setContext(vol)
 		);
 	}
 
-	public Void HandleVolumeCreateAsyncCallback(AsyncCallbackDispatcher<AsyncSampleEventDrivenStyleCaller> callback, String context) {
+	public Void HandleVolumeCreateAsyncCallback(AsyncCallbackDispatcher<AsyncSampleEventDrivenStyleCaller, Object> callback, String context) {
 		Object resultVol = callback.getResult();
 		
 		return null;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java b/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java
index eb39c0e..4f09954 100755
--- a/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java
+++ b/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java
@@ -116,8 +116,8 @@ public class ClusteredAgentManagerImpl extends AgentManagerImpl implements Clust
     @Inject
     protected HostTransferMapDao _hostTransferDao;
     
-    @com.cloud.utils.component.Inject(adapter = AgentLoadBalancerPlanner.class)
-    protected Adapters<AgentLoadBalancerPlanner> _lbPlanners;
+    // @com.cloud.utils.component.Inject(adapter = AgentLoadBalancerPlanner.class)
+    @Inject protected List<AgentLoadBalancerPlanner> _lbPlanners;
     
     @Inject
     protected AgentManager _agentMgr;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java b/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
index f712791..255d79a 100755
--- a/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
+++ b/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Executors;
 
+import javax.annotation.PostConstruct;
 import javax.ejb.Local;
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
@@ -112,9 +113,13 @@ public class BareMetalVmManagerImpl extends UserVmManagerImpl implements BareMet
 	@Inject PxeServerManager _pxeMgr;
 	@Inject ResourceManager _resourceMgr;
 	
-	@com.cloud.utils.component.Inject (adapter=TemplateAdapter.class)
-    protected Adapters<TemplateAdapter> _adapters;
+	// @com.cloud.utils.component.Inject (adapter=TemplateAdapter.class)
+    @Inject protected List<TemplateAdapter> _adapters;
 
+    @PostConstruct
+    public void init() {
+    }
+    
 	@Override
 	public boolean attachISOToVM(long vmId, long isoId, boolean attach) {
 		s_logger.warn("attachISOToVM is not supported by Bare Metal, just fake a true");

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/server/src/com/cloud/baremetal/PxeServerManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/baremetal/PxeServerManagerImpl.java b/server/src/com/cloud/baremetal/PxeServerManagerImpl.java
index dde1bb4..1029790 100755
--- a/server/src/com/cloud/baremetal/PxeServerManagerImpl.java
+++ b/server/src/com/cloud/baremetal/PxeServerManagerImpl.java
@@ -58,8 +58,9 @@ public class PxeServerManagerImpl implements PxeServerManager, ResourceStateAdap
 	@Inject AgentManager _agentMgr;
 	@Inject ExternalDhcpManager exDhcpMgr;
 	@Inject ResourceManager _resourceMgr;
-	@com.cloud.utils.component.Inject(adapter=PxeServerService.class)
-	protected Adapters<PxeServerService> _services;
+	
+	// @com.cloud.utils.component.Inject(adapter=PxeServerService.class)
+	@Inject protected List<PxeServerService> _services;
 	
 	@Override
 	public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index e2e657d..0a6aaa8 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -211,8 +211,10 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
     ClusterDao _clusterDao;
     @Inject
     AlertManager _alertMgr;
-    @com.cloud.utils.component.Inject(adapter = SecurityChecker.class)
-    Adapters<SecurityChecker> _secChecker;
+    // @com.cloud.utils.component.Inject(adapter = SecurityChecker.class)
+    @Inject 
+    List<SecurityChecker> _secChecker;
+    
     @Inject
     CapacityDao _capacityDao;
     @Inject

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/server/src/com/cloud/deploy/FirstFitPlanner.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/deploy/FirstFitPlanner.java b/server/src/com/cloud/deploy/FirstFitPlanner.java
index ec32e63..9b5646d 100755
--- a/server/src/com/cloud/deploy/FirstFitPlanner.java
+++ b/server/src/com/cloud/deploy/FirstFitPlanner.java
@@ -106,10 +106,11 @@ public class FirstFitPlanner extends PlannerBase implements DeploymentPlanner {
     @Inject protected AccountManager _accountMgr;
     @Inject protected StorageManager _storageMgr;
 
-    @com.cloud.utils.component.Inject(adapter=StoragePoolAllocator.class)
-    protected Adapters<StoragePoolAllocator> _storagePoolAllocators;
-    @com.cloud.utils.component.Inject(adapter=HostAllocator.class)
-    protected Adapters<HostAllocator> _hostAllocators;
+    //@com.cloud.utils.component.Inject(adapter=StoragePoolAllocator.class)
+    @Inject protected List<StoragePoolAllocator> _storagePoolAllocators;
+    
+    //@com.cloud.utils.component.Inject(adapter=HostAllocator.class)
+    @Inject protected List<HostAllocator> _hostAllocators;
     protected String _allocationAlgorithm = "random";
 
 
@@ -714,17 +715,13 @@ public class FirstFitPlanner extends PlannerBase implements DeploymentPlanner {
 
     protected List<Host> findSuitableHosts(VirtualMachineProfile<? extends VirtualMachine> vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo){
         List<Host> suitableHosts = new ArrayList<Host>();
-        Enumeration<HostAllocator> enHost = _hostAllocators.enumeration();
-        s_logger.debug("Calling HostAllocators to find suitable hosts");
-
-        while (enHost.hasMoreElements()) {
-            final HostAllocator allocator = enHost.nextElement();
+        for(HostAllocator allocator : _hostAllocators) {
             suitableHosts = allocator.allocateTo(vmProfile, plan, Host.Type.Routing, avoid, returnUpTo);
             if (suitableHosts != null && !suitableHosts.isEmpty()) {
                 break;
             }
         }
-
+        
         if(suitableHosts.isEmpty()){
             s_logger.debug("No suitable hosts found");
         }
@@ -812,12 +809,8 @@ public class FirstFitPlanner extends PlannerBase implements DeploymentPlanner {
             }
             diskProfile.setUseLocalStorage(useLocalStorage);
 
-
             boolean foundPotentialPools = false;
-
-            Enumeration<StoragePoolAllocator> enPool = _storagePoolAllocators.enumeration();
-            while (enPool.hasMoreElements()) {
-                final StoragePoolAllocator allocator = enPool.nextElement();
+            for(StoragePoolAllocator allocator : _storagePoolAllocators) {
                 final List<StoragePool> suitablePools = allocator.allocateToPool(diskProfile, vmProfile, plan, avoid, returnUpTo);
                 if (suitablePools != null && !suitablePools.isEmpty()) {
                     suitableVolumeStoragePools.put(toBeCreated, suitablePools);
@@ -825,7 +818,7 @@ public class FirstFitPlanner extends PlannerBase implements DeploymentPlanner {
                     break;
                 }
             }
-
+            
             if(!foundPotentialPools){
                 s_logger.debug("No suitable pools found for volume: "+toBeCreated +" under cluster: "+plan.getClusterId());
                 //No suitable storage pools found under this cluster for this volume. - remove any suitable pools found for other volumes.

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java
index d5b934c..085b1c9 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -272,10 +272,15 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
     RemoteAccessVpnService _vpnMgr;
     @Inject
     PodVlanMapDao _podVlanMapDao;
-    @com.cloud.utils.component.Inject(adapter = NetworkGuru.class)
-    Adapters<NetworkGuru> _networkGurus;
-    @com.cloud.utils.component.Inject(adapter = NetworkElement.class)
-    Adapters<NetworkElement> _networkElements;
+    
+    //@com.cloud.utils.component.Inject(adapter = NetworkGuru.class)
+    @Inject 
+    List<NetworkGuru> _networkGurus;
+
+    // @com.cloud.utils.component.Inject(adapter = NetworkElement.class)
+    @Inject 
+    List<NetworkElement> _networkElements;
+    
     @Inject
     NetworkDomainDao _networkDomainDao;
     @Inject
@@ -351,7 +356,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
     @Override
     public NetworkElement getElementImplementingProvider(String providerName) {
         String elementName = s_providerToNetworkElementMap.get(providerName);
-        NetworkElement element = _networkElements.get(elementName);
+        NetworkElement element = Adapters.getAdapterByName(_networkElements, elementName);
         return element;
     }
 
@@ -1791,7 +1796,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
         
         NetworkVO ntwkVO = _networksDao.findById(network.getId());
         s_logger.debug("Allocating nic for vm " + vm.getVirtualMachine() + " in network " + network + " with requested profile " + requested);
-        NetworkGuru guru = _networkGurus.get(ntwkVO.getGuruName());
+        NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, ntwkVO.getGuruName());
 
         if (requested != null && requested.getMode() == null) {
             requested.setMode(network.getMode());
@@ -1936,7 +1941,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
         }
 
         try {
-            NetworkGuru guru = _networkGurus.get(network.getGuruName());
+            NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
             Network.State state = network.getState();
             if (state == Network.State.Implemented || state == Network.State.Setup || state == Network.State.Implementing) {
                 s_logger.debug("Network id=" + networkId + " is already implemented");
@@ -2124,7 +2129,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
             ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException {
         
         Integer networkRate = getNetworkRate(network.getId(), vmProfile.getId());
-        NetworkGuru guru = _networkGurus.get(network.getGuruName());
+        NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
         NicVO nic = _nicDao.findById(nicId);
         
         NicProfile profile = null;
@@ -2186,7 +2191,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
             NetworkVO network = _networksDao.findById(nic.getNetworkId());
             Integer networkRate = getNetworkRate(network.getId(), vm.getId());
 
-            NetworkGuru guru = _networkGurus.get(network.getGuruName());
+            NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
             NicProfile profile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), networkRate, 
                     isSecurityGroupSupportedInNetwork(network), getNetworkTag(vm.getHypervisorType(), network));
             guru.updateNicProfile(profile, network);
@@ -2216,7 +2221,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
         if (nic.getState() == Nic.State.Reserved || nic.getState() == Nic.State.Reserving) {
             Nic.State originalState = nic.getState();
             if (nic.getReservationStrategy() == Nic.ReservationStrategy.Start) {
-                NetworkGuru guru = _networkGurus.get(network.getGuruName());
+                NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
                 nic.setState(Nic.State.Releasing);
                 _nicDao.update(nic.getId(), nic);
                 NicProfile profile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), null,
@@ -2262,7 +2267,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
                 NetworkVO network = _networksDao.findById(nic.getNetworkId());
                 Integer networkRate = getNetworkRate(network.getId(), vm.getId());
 
-                NetworkGuru guru = _networkGurus.get(network.getGuruName());
+                NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
                 NicProfile profile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), 
                         networkRate, isSecurityGroupSupportedInNetwork(network), getNetworkTag(vm.getHypervisorType(), network));
                 guru.updateNicProfile(profile, network);
@@ -2283,7 +2288,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
         NetworkVO network = _networksDao.findById(networkId);
         Integer networkRate = getNetworkRate(network.getId(), vm.getId());
     
-        NetworkGuru guru = _networkGurus.get(network.getGuruName());
+        NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
         NicProfile profile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), 
                 networkRate, isSecurityGroupSupportedInNetwork(network), getNetworkTag(vm.getHypervisorType(), network));
         guru.updateNicProfile(profile, network);            
@@ -2438,7 +2443,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
         NetworkVO network = _networksDao.findById(nic.getNetworkId());
         NicProfile profile = new NicProfile(nic, network, null, null, null,
                 isSecurityGroupSupportedInNetwork(network), getNetworkTag(vm.getHypervisorType(), network));
-        NetworkGuru guru = _networkGurus.get(network.getGuruName());
+        NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
         guru.deallocate(network, profile, vm);
         _nicDao.remove(nic.getId());
         s_logger.debug("Removed nic id=" + nic.getId());
@@ -3414,7 +3419,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
             if (s_logger.isDebugEnabled()) {
                 s_logger.debug("Network id=" + networkId + " is shutdown successfully, cleaning up corresponding resources now.");
             }
-            NetworkGuru guru = _networkGurus.get(network.getGuruName());
+            NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
             NetworkProfile profile = convertNetworkToNetworkProfile(network.getId());
             guru.shutdown(profile, _networkOfferingDao.findById(network.getNetworkOfferingId()));
 
@@ -3574,7 +3579,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
             if (s_logger.isDebugEnabled()) {
                 s_logger.debug("Network id=" + networkId + " is destroyed successfully, cleaning up corresponding resources now.");
             }
-            NetworkGuru guru = _networkGurus.get(network.getGuruName());
+            NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
             Account owner = _accountMgr.getAccount(network.getAccountId());
 
             Transaction txn = Transaction.currentTxn();
@@ -4258,7 +4263,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
     @Override
     public NetworkProfile convertNetworkToNetworkProfile(long networkId) {
         NetworkVO network = _networksDao.findById(networkId);
-        NetworkGuru guru = _networkGurus.get(network.getGuruName());
+        NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
         NetworkProfile profile = new NetworkProfile(network);
         guru.updateNetworkProfile(profile);
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/server/src/com/cloud/resource/ResourceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java
index 70549ed..b4f6d14 100755
--- a/server/src/com/cloud/resource/ResourceManagerImpl.java
+++ b/server/src/com/cloud/resource/ResourceManagerImpl.java
@@ -27,6 +27,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import javax.annotation.PostConstruct;
 import javax.ejb.Local;
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
@@ -204,14 +205,18 @@ public class ResourceManagerImpl implements ResourceManager, ResourceService, Ma
     protected HighAvailabilityManager        _haMgr;
     @Inject 
     protected StorageService                 _storageSvr;
-    @com.cloud.utils.component.Inject(adapter = Discoverer.class)
-    protected Adapters<? extends Discoverer> _discoverers;
+    //@com.cloud.utils.component.Inject(adapter = Discoverer.class)
+    @Inject
+    protected List<? extends Discoverer> _discoverers;
     @Inject
     protected ClusterManager                 _clusterMgr;
     @Inject
     protected StoragePoolHostDao             _storagePoolHostDao;
-    @com.cloud.utils.component.Inject(adapter = PodAllocator.class)
-    protected Adapters<PodAllocator> _podAllocators = null;
+
+    // @com.cloud.utils.component.Inject(adapter = PodAllocator.class)
+    @Inject 
+    protected List<PodAllocator> _podAllocators = null;
+    
     @Inject
     protected VMTemplateDao  _templateDao;
     @Inject
@@ -226,6 +231,11 @@ public class ResourceManagerImpl implements ResourceManager, ResourceService, Ma
     protected HashMap<Integer, List<ResourceListener>> _lifeCycleListeners = new HashMap<Integer, List<ResourceListener>>();
     private HypervisorType _defaultSystemVMHypervisor;
 
+    @PostConstruct
+    public void init() {
+    	// TODO initialize pod allocators here instead
+    }
+    
     private void insertListener(Integer event, ResourceListener listener) {
         List<ResourceListener> lst = _lifeCycleListeners.get(event);
         if (lst == null) {
@@ -497,13 +507,10 @@ public class ResourceManagerImpl implements ResourceManager, ResourceService, Ma
 
     @Override
     public Discoverer getMatchingDiscover(Hypervisor.HypervisorType hypervisorType) {
-        Enumeration<? extends Discoverer> en = _discoverers.enumeration();
-        while (en.hasMoreElements()) {
-            Discoverer discoverer = en.nextElement();
-            if (discoverer.getHypervisorType() == hypervisorType) {
+    	for(Discoverer discoverer : _discoverers) {
+            if (discoverer.getHypervisorType() == hypervisorType)
                 return discoverer;
-            }
-        }
+    	}
         return null;
     }
 
@@ -670,10 +677,8 @@ public class ResourceManagerImpl implements ResourceManager, ResourceService, Ma
 
         List<HostVO> hosts = new ArrayList<HostVO>();
         s_logger.info("Trying to add a new host at " + url + " in data center " + dcId);
-        Enumeration<? extends Discoverer> en = _discoverers.enumeration();
         boolean isHypervisorTypeSupported = false;
-        while (en.hasMoreElements()) {
-            Discoverer discoverer = en.nextElement();
+        for ( Discoverer discoverer : _discoverers) {
             if (params != null) {
                 discoverer.putParam(params);
             }
@@ -2161,9 +2166,7 @@ public class ResourceManagerImpl implements ResourceManager, ResourceService, Ma
 
     @Override
     public Pair<HostPodVO, Long> findPod(VirtualMachineTemplate template, ServiceOfferingVO offering, DataCenterVO dc, long accountId, Set<Long> avoids) {
-        final Enumeration en = _podAllocators.enumeration();
-        while (en.hasMoreElements()) {
-            final PodAllocator allocator = (PodAllocator) en.nextElement();
+    	for(PodAllocator allocator : _podAllocators) {
             final Pair<HostPodVO, Long> pod = allocator.allocateTo(template, offering, dc, accountId, avoids);
             if (pod != null) {
                 return pod;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/server/src/com/cloud/secstorage/PremiumSecondaryStorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/secstorage/PremiumSecondaryStorageManagerImpl.java b/server/src/com/cloud/secstorage/PremiumSecondaryStorageManagerImpl.java
index 45989f8..d4f4454 100755
--- a/server/src/com/cloud/secstorage/PremiumSecondaryStorageManagerImpl.java
+++ b/server/src/com/cloud/secstorage/PremiumSecondaryStorageManagerImpl.java
@@ -25,6 +25,7 @@ import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
 import org.apache.log4j.Logger;
+import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Component;
 
 import com.cloud.agent.api.Command;
@@ -49,6 +50,7 @@ import com.cloud.vm.VirtualMachine.State;
 import com.cloud.vm.dao.SecondaryStorageVmDao;
 
 @Component
+@Primary
 @Local(value = { SecondaryStorageVmManager.class })
 public class PremiumSecondaryStorageManagerImpl extends SecondaryStorageManagerImpl {
     private static final Logger s_logger = Logger.getLogger(PremiumSecondaryStorageManagerImpl.class);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/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 f7cfcf8..7cd6962 100755
--- a/server/src/com/cloud/storage/StorageManagerImpl.java
+++ b/server/src/com/cloud/storage/StorageManagerImpl.java
@@ -329,11 +329,11 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag
     protected DownloadMonitor _downloadMonitor;
     @Inject
     protected ResourceTagDao _resourceTagDao;
+    @Inject
+    protected List<StoragePoolAllocator> _storagePoolAllocators;
 
-    @com.cloud.utils.component.Inject(adapter = StoragePoolAllocator.class)
-    protected Adapters<StoragePoolAllocator> _storagePoolAllocators;
-    @com.cloud.utils.component.Inject(adapter = StoragePoolDiscoverer.class)
-    protected Adapters<StoragePoolDiscoverer> _discoverers;
+    @Inject
+    protected List<StoragePoolDiscoverer> _discoverers;
 
 
     protected SearchBuilder<VMTemplateHostVO> HostTemplateStatesSearch;
@@ -463,9 +463,7 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag
     protected StoragePoolVO findStoragePool(DiskProfile dskCh, final DataCenterVO dc, HostPodVO pod, Long clusterId, Long hostId, VMInstanceVO vm, final Set<StoragePool> avoid) {
 
         VirtualMachineProfile<VMInstanceVO> profile = new VirtualMachineProfileImpl<VMInstanceVO>(vm);
-        Enumeration<StoragePoolAllocator> en = _storagePoolAllocators.enumeration();
-        while (en.hasMoreElements()) {
-            final StoragePoolAllocator allocator = en.nextElement();
+        for (StoragePoolAllocator allocator : _storagePoolAllocators) {
             final List<StoragePool> poolList = allocator.allocateToPool(dskCh, profile, dc.getId(), pod.getId(), clusterId, hostId, avoid, 1);
             if (poolList != null && !poolList.isEmpty()) {
                 return (StoragePoolVO) poolList.get(0);
@@ -1354,11 +1352,10 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag
                 hostPath.replaceFirst("/", "");
                 pool = new StoragePoolVO(StoragePoolType.IscsiLUN, storageHost, port, hostPath);
             } else {
-                Enumeration<StoragePoolDiscoverer> en = _discoverers.enumeration();
-                while (en.hasMoreElements()) {
+                for (StoragePoolDiscoverer discoverer : _discoverers) {
                     Map<StoragePoolVO, Map<String, String>> pools;
                     try {
-                        pools = en.nextElement().find(cmd.getZoneId(), podId, uri, details);
+                        pools = discoverer.find(cmd.getZoneId(), podId, uri, details);
                     } catch (DiscoveryException e) {
                         throw new IllegalArgumentException("Not enough information for discovery " + uri, e);
                     }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/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 a630d23..31beeaf 100755
--- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
+++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
@@ -173,8 +173,8 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V
     private int _mgmt_port = 8250;
 
     private String _name;
-    @com.cloud.utils.component.Inject(adapter = SecondaryStorageVmAllocator.class)
-    private Adapters<SecondaryStorageVmAllocator> _ssVmAllocators;
+    @Inject
+    private List<SecondaryStorageVmAllocator> _ssVmAllocators;
 
     @Inject
     protected SecondaryStorageVmDao _secStorageVmDao;
@@ -589,11 +589,9 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V
     private SecondaryStorageVmAllocator getCurrentAllocator() {
 
         // for now, only one adapter is supported
-        Enumeration<SecondaryStorageVmAllocator> it = _ssVmAllocators.enumeration();
-        if (it.hasMoreElements()) {
-            return it.nextElement();
-        }
-
+    	if(_ssVmAllocators.size() > 0)
+    		return _ssVmAllocators.get(0);
+    	
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/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 8016fd7..289bcf9 100755
--- a/server/src/com/cloud/template/TemplateManagerImpl.java
+++ b/server/src/com/cloud/template/TemplateManagerImpl.java
@@ -210,16 +210,16 @@ public class TemplateManagerImpl implements TemplateManager, Manager, TemplateSe
     ScheduledExecutorService _swiftTemplateSyncExecutor;
     
 
-    @com.cloud.utils.component.Inject (adapter=TemplateAdapter.class)
-    protected Adapters<TemplateAdapter> _adapters;
+    @Inject
+    protected List<TemplateAdapter> _adapters;
     
     private TemplateAdapter getAdapter(HypervisorType type) {
     	TemplateAdapter adapter = null;
     	if (type == HypervisorType.BareMetal) {
-    		adapter = _adapters.get(TemplateAdapterType.BareMetal.getName());
+    		adapter = Adapters.getAdapterByName(_adapters, TemplateAdapterType.BareMetal.getName());
     	} else {
     		// see HyervisorTemplateAdapter
-    		adapter =  _adapters.get(TemplateAdapterType.Hypervisor.getName());
+    		adapter =  Adapters.getAdapterByName(_adapters, TemplateAdapterType.Hypervisor.getName());
     	}
     	
     	if (adapter == null) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/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 26465de..94b2116 100755
--- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -230,10 +230,10 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene
     @Inject
     protected NetworkDao _networkDao;
 
-    @com.cloud.utils.component.Inject(adapter = DeploymentPlanner.class)
-    protected Adapters<DeploymentPlanner> _planners;
+    @Inject
+    protected List<DeploymentPlanner> _planners;
 
-    @com.cloud.utils.component.Inject(adapter = HostAllocator.class)
+    @Inject
     protected Adapters<HostAllocator> _hostAllocators;
 
     @Inject

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
index 6ec2ca6..95c6ee9 100644
--- a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
+++ b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
@@ -95,9 +95,9 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager{
     NetworkServiceMapDao  _ntwkSrvcDao;
     @Inject
     NetworkOfferingServiceMapDao  _ntwkOfferingSrvcDao;
-    
-    @com.cloud.utils.component.Inject(adapter = NetworkElement.class)
-    Adapters<NetworkElement> _networkElements;
+ 
+    @Inject
+    List<NetworkElement> _networkElements;
     
     private static HashMap<String, String> s_providerToNetworkElementMap = new HashMap<String, String>();
     private static final Logger s_logger = Logger.getLogger(MockNetworkManagerImpl.class);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/25d14418/utils/src/com/cloud/utils/component/Adapters.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/component/Adapters.java b/utils/src/com/cloud/utils/component/Adapters.java
index 00787da..2a2203f 100755
--- a/utils/src/com/cloud/utils/component/Adapters.java
+++ b/utils/src/com/cloud/utils/component/Adapters.java
@@ -82,4 +82,12 @@ public class Adapters<T> implements Iterable<T> {
     public boolean isSet() {
         return _map.size() != 0;
     }
+    
+    public static <T extends Adapter> T getAdapterByName(List<T> adapters, String name) {
+    	for(T adapter : adapters) {
+    		if(adapter.getName().equals(name))
+    			return adapter;
+    	}
+    	return null;
+    }
 }