convert existing singleton objects into Spring loadable bean components

This commit is contained in:
Kelven Yang 2013-01-08 11:07:22 -08:00
parent b96bb8feb9
commit 992fa473be
3 changed files with 8 additions and 15 deletions

View File

@ -30,6 +30,7 @@ import java.util.regex.Matcher;
import javax.inject.Inject; import javax.inject.Inject;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import com.cloud.api.BaseCmd.CommandType; import com.cloud.api.BaseCmd.CommandType;
import com.cloud.api.commands.ListEventsCmd; import com.cloud.api.commands.ListEventsCmd;
@ -46,7 +47,6 @@ import com.cloud.server.ManagementServer;
import com.cloud.user.Account; import com.cloud.user.Account;
import com.cloud.user.UserContext; import com.cloud.user.UserContext;
import com.cloud.utils.DateUtil; import com.cloud.utils.DateUtil;
import com.cloud.utils.component.ComponentContext;
import com.cloud.utils.component.ComponentLocator; import com.cloud.utils.component.ComponentLocator;
import com.cloud.utils.component.PluggableService; import com.cloud.utils.component.PluggableService;
import com.cloud.utils.exception.CSExceptionErrorCode; import com.cloud.utils.exception.CSExceptionErrorCode;
@ -56,6 +56,7 @@ import com.cloud.uuididentity.dao.IdentityDao;
/** /**
* A class that dispatches API commands to the appropriate manager for execution. * A class that dispatches API commands to the appropriate manager for execution.
*/ */
@Component
public class ApiDispatcher { public class ApiDispatcher {
private static final Logger s_logger = Logger.getLogger(ApiDispatcher.class.getName()); private static final Logger s_logger = Logger.getLogger(ApiDispatcher.class.getName());
@ -66,14 +67,11 @@ public class ApiDispatcher {
private static ApiDispatcher s_instance; private static ApiDispatcher s_instance;
public static ApiDispatcher getInstance() { public static ApiDispatcher getInstance() {
if(s_instance == null) {
s_instance = new ApiDispatcher();
s_instance = ComponentContext.inject(s_instance);
}
return s_instance; return s_instance;
} }
public ApiDispatcher() { public ApiDispatcher() {
s_instance = this;
} }
public void dispatchCreateCmd(BaseAsyncCreateCmd cmd, Map<String, String> params) { public void dispatchCreateCmd(BaseAsyncCreateCmd cmd, Map<String, String> params) {

View File

@ -32,6 +32,7 @@ import javax.inject.Inject;
import com.cloud.resource.ResourceManager; import com.cloud.resource.ResourceManager;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import com.cloud.agent.AgentManager; import com.cloud.agent.AgentManager;
import com.cloud.agent.AgentManager.OnError; import com.cloud.agent.AgentManager.OnError;
@ -60,8 +61,6 @@ import com.cloud.storage.dao.StoragePoolHostDao;
import com.cloud.storage.dao.VolumeDao; import com.cloud.storage.dao.VolumeDao;
import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.storage.secondary.SecondaryStorageVmManager;
import com.cloud.utils.NumbersUtil; import com.cloud.utils.NumbersUtil;
import com.cloud.utils.component.ComponentContext;
import com.cloud.utils.component.ComponentLocator;
import com.cloud.utils.concurrency.NamedThreadFactory; import com.cloud.utils.concurrency.NamedThreadFactory;
import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.SearchCriteria;
import com.cloud.vm.UserVmManager; import com.cloud.vm.UserVmManager;
@ -73,6 +72,7 @@ import com.cloud.vm.dao.UserVmDao;
* Provides real time stats for various agent resources up to x seconds * Provides real time stats for various agent resources up to x seconds
* *
*/ */
@Component
public class StatsCollector { public class StatsCollector {
public static final Logger s_logger = Logger.getLogger(StatsCollector.class.getName()); public static final Logger s_logger = Logger.getLogger(StatsCollector.class.getName());
@ -106,18 +106,13 @@ public class StatsCollector {
public static StatsCollector getInstance() { public static StatsCollector getInstance() {
return s_instance; return s_instance;
} }
public static StatsCollector getInstance(Map<String, String> configs) { public static StatsCollector getInstance(Map<String, String> configs) {
if (s_instance == null) {
s_instance = new StatsCollector();
s_instance = ComponentContext.inject(s_instance);
s_instance.init(configs);
}
return s_instance; return s_instance;
} }
public StatsCollector() { public StatsCollector() {
s_instance = this;
} }
private void init(Map<String, String> configs) { private void init(Map<String, String> configs) {

View File

@ -70,7 +70,7 @@ public class ComponentContext implements ApplicationContextAware {
return entry.getValue(); return entry.getValue();
} }
s_logger.warn("Unable to uniquely locate bean type " + beanType.getName(), e); s_logger.warn("Unable to uniquely locate bean type " + beanType.getName());
return (T)matchedTypes.values().toArray()[0]; return (T)matchedTypes.values().toArray()[0];
} }
} }