You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/01/10 23:47:20 UTC

[3/25] removed componentlocator and inject

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f40e7b75/server/src/com/cloud/api/ApiDispatcher.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiDispatcher.java b/server/src/com/cloud/api/ApiDispatcher.java
index a0ef6e2..9b1afb2 100755
--- a/server/src/com/cloud/api/ApiDispatcher.java
+++ b/server/src/com/cloud/api/ApiDispatcher.java
@@ -24,76 +24,69 @@ import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.regex.Matcher;
 
-import com.cloud.dao.EntityManager;
-import com.cloud.utils.ReflectUtil;
+import javax.inject.Inject;
+
 import org.apache.cloudstack.acl.ControlledEntity;
 import org.apache.cloudstack.acl.InfrastructureEntity;
-import org.apache.cloudstack.acl.Role;
-import org.apache.cloudstack.api.*;
+import org.apache.cloudstack.api.ACL;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.BaseAsyncCreateCmd;
+import org.apache.cloudstack.api.BaseCmd;
+import org.apache.cloudstack.api.BaseCmd.CommandType;
+import org.apache.cloudstack.api.BaseListCmd;
+import org.apache.cloudstack.api.EntityReference;
+import org.apache.cloudstack.api.InternalIdentity;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.PlugService;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.Validate;
+import org.apache.cloudstack.api.command.user.event.ListEventsCmd;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
-import org.apache.cloudstack.api.BaseCmd.CommandType;
-import org.apache.cloudstack.api.command.user.event.ListEventsCmd;
 import com.cloud.async.AsyncCommandQueued;
 import com.cloud.async.AsyncJobManager;
 import com.cloud.configuration.Config;
 import com.cloud.configuration.dao.ConfigurationDao;
+import com.cloud.dao.EntityManager;
 import com.cloud.exception.AccountLimitException;
 import com.cloud.exception.InsufficientCapacityException;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.exception.PermissionDeniedException;
 import com.cloud.exception.ResourceAllocationException;
 import com.cloud.exception.ResourceUnavailableException;
-import com.cloud.network.dao.NetworkDao;
-import com.cloud.server.ManagementServer;
-import com.cloud.storage.dao.VMTemplateDao;
 import com.cloud.user.Account;
 import com.cloud.user.AccountManager;
 import com.cloud.user.UserContext;
 import com.cloud.utils.DateUtil;
 import com.cloud.utils.NumbersUtil;
-import com.cloud.utils.component.ComponentLocator;
-import com.cloud.utils.component.Inject;
-import com.cloud.utils.component.PluggableService;
-import com.cloud.utils.db.GenericDao;
+import com.cloud.utils.ReflectUtil;
 import com.cloud.utils.exception.CSExceptionErrorCode;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.uuididentity.dao.IdentityDao;
 
-// ApiDispatcher: A class that dispatches API commands to the appropriate manager for execution.
+@Component
 public class ApiDispatcher {
     private static final Logger s_logger = Logger.getLogger(ApiDispatcher.class.getName());
 
-    ComponentLocator _locator;
     Long _createSnapshotQueueSizeLimit;
-    @Inject private AsyncJobManager _asyncMgr = null;
-    @Inject private AccountManager _accountMgr = null;
+    @Inject AsyncJobManager _asyncMgr = null;
+    @Inject AccountManager _accountMgr = null;
     @Inject EntityManager _entityMgr = null;
     @Inject IdentityDao _identityDao = null;
+    @Inject ConfigurationDao _configDao = null;
 
-    Map<String, Class<? extends GenericDao>> _daoNameMap = new HashMap<String, Class<? extends GenericDao>>();
-    // singleton class
-    private static ApiDispatcher s_instance = ApiDispatcher.getInstance();
-
-    public static ApiDispatcher getInstance() {
-        if (s_instance == null) {
-            s_instance = ComponentLocator.inject(ApiDispatcher.class);
-        }
-        return s_instance;
-    }
+    private static ApiDispatcher s_instance;
 
     protected ApiDispatcher() {
         super();
-        _locator = ComponentLocator.getLocator(ManagementServer.Name);
-        ConfigurationDao configDao = _locator.getDao(ConfigurationDao.class);
-        Map<String, String> configs = configDao.getConfiguration();
+        Map<String, String> configs = _configDao.getConfiguration();
         String strSnapshotLimit = configs.get(Config.ConcurrentSnapshotsThresholdPerHost.key());
         if (strSnapshotLimit != null) {
             Long snapshotLimit = NumbersUtil.parseLong(strSnapshotLimit, 1L);
@@ -104,12 +97,11 @@ public class ApiDispatcher {
                 _createSnapshotQueueSizeLimit = snapshotLimit;
             }
         }
-        _daoNameMap.put("com.cloud.network.Network", NetworkDao.class);
-        _daoNameMap.put("com.cloud.template.VirtualMachineTemplate", VMTemplateDao.class);
+        s_instance = this;
     }
 
     public void dispatchCreateCmd(BaseAsyncCreateCmd cmd, Map<String, String> params) {
-    	processParameters(cmd, params);
+        processParameters(cmd, params);
 
         try {
             UserContext ctx = UserContext.current();
@@ -206,113 +198,113 @@ public class ApiDispatcher {
 
         } catch (Throwable t) {
             if (t instanceof InvalidParameterValueException) {
-            	// earlier, we'd log the db id as part of the log message, but now since we've pushed
-            	// the id into a IdentityProxy object, we would need to dump that object alongwith the
-            	// message.
-            	InvalidParameterValueException ref = (InvalidParameterValueException) t;
-            	ServerApiException ex = new ServerApiException(BaseCmd.PARAM_ERROR, t.getMessage());
+                // earlier, we'd log the db id as part of the log message, but now since we've pushed
+                // the id into a IdentityProxy object, we would need to dump that object alongwith the
+                // message.
+                InvalidParameterValueException ref = (InvalidParameterValueException) t;
+                ServerApiException ex = new ServerApiException(BaseCmd.PARAM_ERROR, t.getMessage());
                 // copy over the IdentityProxy information as well and throw the serverapiexception.
                 ArrayList<String> idList = ref.getIdProxyList();
                 if (idList != null) {
-                	// Iterate through entire arraylist and copy over each proxy id.
-                	for (int i = 0 ; i < idList.size(); i++) {
-                		ex.addProxyObject(idList.get(i));
-                		s_logger.info(t.getMessage() + " uuid: " + idList.get(i));
-                	}
+                    // Iterate through entire arraylist and copy over each proxy id.
+                    for (int i = 0 ; i < idList.size(); i++) {
+                        ex.addProxyObject(idList.get(i));
+                        s_logger.info(t.getMessage() + " uuid: " + idList.get(i));
+                    }
                 } else {
-                	s_logger.info(t.getMessage());
+                    s_logger.info(t.getMessage());
                 }
                 // Also copy over the cserror code.
-    			ex.setCSErrorCode(ref.getCSErrorCode());
+                ex.setCSErrorCode(ref.getCSErrorCode());
                 throw ex;
             } else if(t instanceof IllegalArgumentException) {            	
-            	throw new ServerApiException(BaseCmd.PARAM_ERROR, t.getMessage());
+                throw new ServerApiException(BaseCmd.PARAM_ERROR, t.getMessage());
             } else if (t instanceof PermissionDeniedException) {            	
-            	PermissionDeniedException ref = (PermissionDeniedException)t;
-            	ServerApiException ex = new ServerApiException(BaseCmd.ACCOUNT_ERROR, t.getMessage());
+                PermissionDeniedException ref = (PermissionDeniedException)t;
+                ServerApiException ex = new ServerApiException(BaseCmd.ACCOUNT_ERROR, t.getMessage());
                 // copy over the IdentityProxy information as well and throw the serverapiexception.
-            	ArrayList<String> idList = ref.getIdProxyList();
+                ArrayList<String> idList = ref.getIdProxyList();
                 if (idList != null) {
-                	// Iterate through entire arraylist and copy over each proxy id.
-                	for (int i = 0 ; i < idList.size(); i++) {
-                 		ex.addProxyObject(idList.get(i));
-                 		s_logger.info("PermissionDenied: " + t.getMessage() + "uuid: " + idList.get(i));
-                 	}
-                 } else {
-                	 s_logger.info("PermissionDenied: " + t.getMessage());
-                 }
+                    // Iterate through entire arraylist and copy over each proxy id.
+                    for (int i = 0 ; i < idList.size(); i++) {
+                        ex.addProxyObject(idList.get(i));
+                        s_logger.info("PermissionDenied: " + t.getMessage() + "uuid: " + idList.get(i));
+                    }
+                } else {
+                    s_logger.info("PermissionDenied: " + t.getMessage());
+                }
                 // Also copy over the cserror code.
-    			ex.setCSErrorCode(ref.getCSErrorCode());
-    			throw ex;
+                ex.setCSErrorCode(ref.getCSErrorCode());
+                throw ex;
             } else if (t instanceof AccountLimitException) {            	
-            	AccountLimitException ref = (AccountLimitException)t;
-            	ServerApiException ex = new ServerApiException(BaseCmd.ACCOUNT_RESOURCE_LIMIT_ERROR, t.getMessage());
+                AccountLimitException ref = (AccountLimitException)t;
+                ServerApiException ex = new ServerApiException(BaseCmd.ACCOUNT_RESOURCE_LIMIT_ERROR, t.getMessage());
                 // copy over the IdentityProxy information as well and throw the serverapiexception.
-            	ArrayList<String> idList = ref.getIdProxyList();
+                ArrayList<String> idList = ref.getIdProxyList();
                 if (idList != null) {
-                	// Iterate through entire arraylist and copy over each proxy id.
-                	for (int i = 0 ; i < idList.size(); i++) {
-                 		ex.addProxyObject(idList.get(i));
-                 		s_logger.info(t.getMessage() + "uuid: " + idList.get(i));
-                	}
+                    // Iterate through entire arraylist and copy over each proxy id.
+                    for (int i = 0 ; i < idList.size(); i++) {
+                        ex.addProxyObject(idList.get(i));
+                        s_logger.info(t.getMessage() + "uuid: " + idList.get(i));
+                    }
                 } else {
-                	s_logger.info(t.getMessage());
+                    s_logger.info(t.getMessage());
                 }
                 // Also copy over the cserror code.
-    			ex.setCSErrorCode(ref.getCSErrorCode());
+                ex.setCSErrorCode(ref.getCSErrorCode());
                 throw ex;
             } else if (t instanceof InsufficientCapacityException) {            	
-            	InsufficientCapacityException ref = (InsufficientCapacityException)t;
-            	ServerApiException ex = new ServerApiException(BaseCmd.INSUFFICIENT_CAPACITY_ERROR, t.getMessage());
+                InsufficientCapacityException ref = (InsufficientCapacityException)t;
+                ServerApiException ex = new ServerApiException(BaseCmd.INSUFFICIENT_CAPACITY_ERROR, t.getMessage());
                 // copy over the IdentityProxy information as well and throw the serverapiexception.
-            	ArrayList<String> idList = ref.getIdProxyList();
+                ArrayList<String> idList = ref.getIdProxyList();
                 if (idList != null) {
-                	// Iterate through entire arraylist and copy over each proxy id.
-                	for (int i = 0 ; i < idList.size(); i++) {
-                 		ex.addProxyObject(idList.get(i));
-                 		s_logger.info(t.getMessage() + "uuid: " + idList.get(i));
-                	}
+                    // Iterate through entire arraylist and copy over each proxy id.
+                    for (int i = 0 ; i < idList.size(); i++) {
+                        ex.addProxyObject(idList.get(i));
+                        s_logger.info(t.getMessage() + "uuid: " + idList.get(i));
+                    }
                 } else {
-                	s_logger.info(t.getMessage());
+                    s_logger.info(t.getMessage());
                 }
                 // Also copy over the cserror code
-    			ex.setCSErrorCode(ref.getCSErrorCode());
+                ex.setCSErrorCode(ref.getCSErrorCode());
                 throw ex;
             } else if (t instanceof ResourceAllocationException) {
-            	ResourceAllocationException ref = (ResourceAllocationException)t;
+                ResourceAllocationException ref = (ResourceAllocationException)t;
                 ServerApiException ex = new ServerApiException(BaseCmd.RESOURCE_ALLOCATION_ERROR, t.getMessage());
                 // copy over the IdentityProxy information as well and throw the serverapiexception.
                 ArrayList<String> idList = ref.getIdProxyList();
                 if (idList != null) {
-                	// Iterate through entire arraylist and copy over each proxy id.
-                	for (int i = 0 ; i < idList.size(); i++) {
-                 		String id = idList.get(i);
-                 		ex.addProxyObject(id);
-                 		s_logger.warn("Exception: " + t.getMessage() + "uuid: " + id);
-                	}
+                    // Iterate through entire arraylist and copy over each proxy id.
+                    for (int i = 0 ; i < idList.size(); i++) {
+                        String id = idList.get(i);
+                        ex.addProxyObject(id);
+                        s_logger.warn("Exception: " + t.getMessage() + "uuid: " + id);
+                    }
                 } else {
-                	s_logger.warn("Exception: ", t);
+                    s_logger.warn("Exception: ", t);
                 }
                 // Also copy over the cserror code.
-    			ex.setCSErrorCode(ref.getCSErrorCode());
+                ex.setCSErrorCode(ref.getCSErrorCode());
                 throw ex;
             } else if (t instanceof ResourceUnavailableException) {
-            	ResourceUnavailableException ref = (ResourceUnavailableException)t;
+                ResourceUnavailableException ref = (ResourceUnavailableException)t;
                 ServerApiException ex = new ServerApiException(BaseCmd.RESOURCE_UNAVAILABLE_ERROR, t.getMessage());
                 // copy over the IdentityProxy information as well and throw the serverapiexception.
                 ArrayList<String> idList = ref.getIdProxyList();
                 if (idList != null) {
-                	// Iterate through entire arraylist and copy over each proxy id.
-                	for (int i = 0 ; i < idList.size(); i++) {
-                 		String id = idList.get(i);
-                 		ex.addProxyObject(id);
-                 		s_logger.warn("Exception: " + t.getMessage() + "uuid: " + id);
-                	}
+                    // Iterate through entire arraylist and copy over each proxy id.
+                    for (int i = 0 ; i < idList.size(); i++) {
+                        String id = idList.get(i);
+                        ex.addProxyObject(id);
+                        s_logger.warn("Exception: " + t.getMessage() + "uuid: " + id);
+                    }
                 } else {
-                	s_logger.warn("Exception: ", t);
+                    s_logger.warn("Exception: ", t);
                 }
                 // Also copy over the cserror code.
-    			ex.setCSErrorCode(ref.getCSErrorCode());
+                ex.setCSErrorCode(ref.getCSErrorCode());
                 throw ex;
             } else if (t instanceof AsyncCommandQueued) {            	
                 throw (AsyncCommandQueued) t;
@@ -323,18 +315,18 @@ public class ApiDispatcher {
                 s_logger.error("Exception while executing " + cmd.getClass().getSimpleName() + ":", t);
                 ServerApiException ex;
                 if (UserContext.current().getCaller().getType() == Account.ACCOUNT_TYPE_ADMIN) {
-                	ex = new ServerApiException(BaseCmd.INTERNAL_ERROR, t.getMessage());
+                    ex = new ServerApiException(BaseCmd.INTERNAL_ERROR, t.getMessage());
                 } else {
                     ex = new ServerApiException(BaseCmd.INTERNAL_ERROR, BaseCmd.USER_ERROR_MESSAGE);
                 }                
                 ex.setCSErrorCode(CSExceptionErrorCode.getCSErrCode(ex.getClass().getName()));
-            	throw ex;
+                throw ex;
             }
         }
     }
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-	public static void processParameters(BaseCmd cmd, Map<String, String> params) {
+    public static void processParameters(BaseCmd cmd, Map<String, String> params) {
         List<Object> entitiesToAccess = new ArrayList<Object>();
         Map<String, Object> unpackedParams = cmd.unpackParams(params);
 
@@ -348,7 +340,7 @@ public class ApiDispatcher {
             if ((unpackedParams.get(ApiConstants.PAGE) == null) && (pageSize != null && pageSize != BaseListCmd.PAGESIZE_UNLIMITED)) {
                 ServerApiException ex = new ServerApiException(BaseCmd.PARAM_ERROR, "\"page\" parameter is required when \"pagesize\" is specified");                
                 ex.setCSErrorCode(CSExceptionErrorCode.getCSErrCode(ex.getClass().getName()));
-            	throw ex;
+                throw ex;
             } else if (pageSize == null && (unpackedParams.get(ApiConstants.PAGE) != null)) {
                 throw new ServerApiException(BaseCmd.PARAM_ERROR, "\"pagesize\" parameter is required when \"page\" is specified");
             }
@@ -399,14 +391,14 @@ public class ApiDispatcher {
                 throw new ServerApiException(BaseCmd.PARAM_ERROR, "Unable to execute API command " + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8) + " due to invalid value. " + invEx.getMessage());
             } catch (CloudRuntimeException cloudEx) {
                 // FIXME: Better error message? This only happens if the API command is not executable, which typically
-            	//means
+                //means
                 // there was
                 // and IllegalAccessException setting one of the parameters.
                 throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Internal error executing API command " + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8));
             }
 
             //check access on the resource this field points to
-	        try {
+            try {
                 ACL checkAccess = field.getAnnotation(ACL.class);
                 CommandType fieldType = parameterAnnotation.type();
 
@@ -426,17 +418,17 @@ public class ApiDispatcher {
                             // Check if the parameter type is a single
                             // Id or list of id's/name's
                             switch (fieldType) {
-                                case LIST:
-                                    CommandType listType = parameterAnnotation.collectionType();
-                                    switch (listType) {
-                                        case LONG:
-                                        case UUID:
-                                            List<Long> listParam = (List<Long>) field.get(cmd);
-                                            for (Long entityId : listParam) {
-                                                Object entityObj = s_instance._entityMgr.findById(entity, entityId);
-                                                entitiesToAccess.add(entityObj);
-                                            }
-                                            break;
+                            case LIST:
+                                CommandType listType = parameterAnnotation.collectionType();
+                                switch (listType) {
+                                case LONG:
+                                case UUID:
+                                    List<Long> listParam = (List<Long>) field.get(cmd);
+                                    for (Long entityId : listParam) {
+                                        Object entityObj = s_instance._entityMgr.findById(entity, entityId);
+                                        entitiesToAccess.add(entityObj);
+                                    }
+                                    break;
                                     /*
                                      * case STRING: List<String> listParam =
                                      * new ArrayList<String>(); listParam =
@@ -448,17 +440,17 @@ public class ApiDispatcher {
                                      * entitiesToAccess.add(entityObj); }
                                      * break;
                                      */
-                                        default:
-                                            break;
-        }
-                                    break;
-                                case LONG:
-                                case UUID:
-                                    Object entityObj = s_instance._entityMgr.findById(entity, (Long) field.get(cmd));
-                                    entitiesToAccess.add(entityObj);
-                                    break;
                                 default:
                                     break;
+                                }
+                                break;
+                            case LONG:
+                            case UUID:
+                                Object entityObj = s_instance._entityMgr.findById(entity, (Long) field.get(cmd));
+                                entitiesToAccess.add(entityObj);
+                                break;
+                            default:
+                                break;
                             }
 
                             if (ControlledEntity.class.isAssignableFrom(entity)) {
@@ -474,17 +466,17 @@ public class ApiDispatcher {
                             }
                         }
 
-	            	}
+                    }
 
-	            }
+                }
 
-			} catch (IllegalArgumentException e) {
-	            s_logger.error("Error initializing command " + cmd.getCommandName() + ", field " + field.getName() + " is not accessible.");
-	            throw new CloudRuntimeException("Internal error initializing parameters for command " + cmd.getCommandName() + " [field " + field.getName() + " is not accessible]");
-			} catch (IllegalAccessException e) {
-	            s_logger.error("Error initializing command " + cmd.getCommandName() + ", field " + field.getName() + " is not accessible.");
-	            throw new CloudRuntimeException("Internal error initializing parameters for command " + cmd.getCommandName() + " [field " + field.getName() + " is not accessible]");
-			}
+            } catch (IllegalArgumentException e) {
+                s_logger.error("Error initializing command " + cmd.getCommandName() + ", field " + field.getName() + " is not accessible.");
+                throw new CloudRuntimeException("Internal error initializing parameters for command " + cmd.getCommandName() + " [field " + field.getName() + " is not accessible]");
+            } catch (IllegalAccessException e) {
+                s_logger.error("Error initializing command " + cmd.getCommandName() + ", field " + field.getName() + " is not accessible.");
+                throw new CloudRuntimeException("Internal error initializing parameters for command " + cmd.getCommandName() + " [field " + field.getName() + " is not accessible]");
+            }
 
         }
 
@@ -533,7 +525,7 @@ public class ApiDispatcher {
             // Invoke the getId method, get the internal long ID
             // If that fails hide exceptions as the uuid may not exist
             try {
-                internalId = (Long) ((InternalIdentity)objVO).getId();
+                internalId = ((InternalIdentity)objVO).getId();
             } catch (IllegalArgumentException e) {
             } catch (NullPointerException e) {
             }
@@ -598,7 +590,7 @@ public class ApiDispatcher {
                 // we ignore blank or null values and defer to the command to set a default
                 // value for optional parameters ...
                 if (paramObj != null && isNotBlank(paramObj.toString())) {
-                field.set(cmdObj, Float.valueOf(paramObj.toString()));
+                    field.set(cmdObj, Float.valueOf(paramObj.toString()));
                 }
                 break;
             case INTEGER:
@@ -606,7 +598,7 @@ public class ApiDispatcher {
                 // we ignore blank or null values and defer to the command to set a default
                 // value for optional parameters ...
                 if (paramObj != null && isNotBlank(paramObj.toString())) {
-                field.set(cmdObj, Integer.valueOf(paramObj.toString()));
+                    field.set(cmdObj, Integer.valueOf(paramObj.toString()));
                 }
                 break;
             case LIST:
@@ -619,16 +611,16 @@ public class ApiDispatcher {
                     case INTEGER:
                         listParam.add(Integer.valueOf(token));
                         break;
-                            case UUID:
-                                if (token.isEmpty())
-                                    break;
-                                Long internalId = translateUuidToInternalId(token, annotation);
-                                listParam.add(internalId);
-                                break;
+                    case UUID:
+                        if (token.isEmpty())
+                            break;
+                        Long internalId = translateUuidToInternalId(token, annotation);
+                        listParam.add(internalId);
+                        break;
                     case LONG: {
-                                listParam.add(Long.valueOf(token));
+                        listParam.add(Long.valueOf(token));
                     }
-                        break;
+                    break;
                     case SHORT:
                         listParam.add(Short.valueOf(token));
                     case STRING:
@@ -645,7 +637,7 @@ public class ApiDispatcher {
                 field.set(cmdObj, internalId);
                 break;
             case LONG:
-                    field.set(cmdObj, Long.valueOf(paramObj.toString()));
+                field.set(cmdObj, Long.valueOf(paramObj.toString()));
                 break;
             case SHORT:
                 field.set(cmdObj, Short.valueOf(paramObj.toString()));
@@ -686,30 +678,26 @@ public class ApiDispatcher {
     }
 
     public static void plugService(Field field, BaseCmd cmd) {
-        ComponentLocator locator = ComponentLocator.getLocator(ManagementServer.Name);
 
-                Class<?> fc = field.getType();
-                Object instance = null;
-                if (PluggableService.class.isAssignableFrom(fc)) {
-                    instance = locator.getPluggableService(fc);
-                }
+        Class<?> fc = field.getType();
+        Object instance = null;
 
-                if (instance == null) {
+        if (instance == null) {
             throw new CloudRuntimeException("Unable to plug service " + fc.getSimpleName() + " in command " + cmd.getClass().getSimpleName());
-                }
+        }
+
+        try {
+            field.setAccessible(true);
+            field.set(cmd, instance);
+        } catch (IllegalArgumentException e) {
+            s_logger.error("IllegalArgumentException at plugService for command " + cmd.getCommandName() + ", field " + field.getName());
+            throw new CloudRuntimeException("Internal error at plugService for command " + cmd.getCommandName() + " [Illegal argumet at field " + field.getName() + "]");
+        } catch (IllegalAccessException e) {
+            s_logger.error("Error at plugService for command " + cmd.getCommandName() + ", field " + field.getName() + " is not accessible.");
+            throw new CloudRuntimeException("Internal error at plugService for command " + cmd.getCommandName() + " [field " + field.getName() + " is not accessible]");
+        }
+    }
 
-                try {
-                    field.setAccessible(true);
-                    field.set(cmd, instance);
-                } catch (IllegalArgumentException e) {
-                    s_logger.error("IllegalArgumentException at plugService for command " + cmd.getCommandName() + ", field " + field.getName());
-                    throw new CloudRuntimeException("Internal error at plugService for command " + cmd.getCommandName() + " [Illegal argumet at field " + field.getName() + "]");
-                } catch (IllegalAccessException e) {
-                    s_logger.error("Error at plugService for command " + cmd.getCommandName() + ", field " + field.getName() + " is not accessible.");
-                    throw new CloudRuntimeException("Internal error at plugService for command " + cmd.getCommandName() + " [field " + field.getName() + " is not accessible]");
-                }
-            }
-    
     public static Long getIdentiyId(String tableName, String token) {
         return s_instance._identityDao.getIdentityId(tableName, token);
     }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f40e7b75/server/src/com/cloud/api/query/QueryManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java
index b61f10a..4e2355e 100644
--- a/server/src/com/cloud/api/query/QueryManagerImpl.java
+++ b/server/src/com/cloud/api/query/QueryManagerImpl.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.Map;
 
 import javax.ejb.Local;
+import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
 import org.apache.cloudstack.api.command.admin.host.ListHostsCmd;
@@ -97,15 +98,13 @@ import com.cloud.ha.HighAvailabilityManager;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.network.security.SecurityGroupVMMapVO;
 import com.cloud.network.security.dao.SecurityGroupVMMapDao;
-import com.cloud.projects.ProjectInvitation;
-import com.cloud.projects.Project.ListProjectResourcesCriteria;
 import com.cloud.projects.Project;
+import com.cloud.projects.Project.ListProjectResourcesCriteria;
+import com.cloud.projects.ProjectInvitation;
 import com.cloud.projects.ProjectManager;
 import com.cloud.projects.dao.ProjectAccountDao;
 import com.cloud.projects.dao.ProjectDao;
 import com.cloud.server.Criteria;
-import com.cloud.storage.StoragePool;
-import com.cloud.storage.StoragePoolVO;
 import com.cloud.storage.Volume;
 import com.cloud.user.Account;
 import com.cloud.user.AccountManager;
@@ -115,7 +114,6 @@ import com.cloud.user.dao.AccountDao;
 import com.cloud.utils.DateUtil;
 import com.cloud.utils.Pair;
 import com.cloud.utils.Ternary;
-import com.cloud.utils.component.Inject;
 import com.cloud.utils.component.Manager;
 import com.cloud.utils.db.Filter;
 import com.cloud.utils.db.SearchBuilder;
@@ -137,7 +135,7 @@ public class QueryManagerImpl implements QueryService, Manager {
 
     private String _name;
 
-   // public static ViewResponseHelper _responseGenerator;
+    // public static ViewResponseHelper _responseGenerator;
 
     @Inject
     private AccountManager _accountMgr;
@@ -214,7 +212,7 @@ public class QueryManagerImpl implements QueryService, Manager {
     @Override
     public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
         _name = name;
-       // _responseGenerator = new ViewResponseHelper();
+        // _responseGenerator = new ViewResponseHelper();
         return false;
     }
 
@@ -717,7 +715,7 @@ public class QueryManagerImpl implements QueryService, Manager {
 
         if (tags != null && !tags.isEmpty()) {
             int count = 0;
-             for (String key : tags.keySet()) {
+            for (String key : tags.keySet()) {
                 sc.setParameters("key" + String.valueOf(count), key);
                 sc.setParameters("value" + String.valueOf(count), tags.get(key));
                 count++;
@@ -883,10 +881,10 @@ public class QueryManagerImpl implements QueryService, Manager {
         if (tags != null && !tags.isEmpty()) {
             int count = 0;
             for (String key : tags.keySet()) {
-               sc.setParameters("key" + String.valueOf(count), key);
-               sc.setParameters("value" + String.valueOf(count), tags.get(key));
-               count++;
-           }
+                sc.setParameters("key" + String.valueOf(count), key);
+                sc.setParameters("value" + String.valueOf(count), tags.get(key));
+                count++;
+            }
         }
 
         if (securityGroup != null) {
@@ -974,10 +972,10 @@ public class QueryManagerImpl implements QueryService, Manager {
         //Filter searchFilter = new Filter(DomainRouterJoinVO.class, null, true, cmd.getStartIndex(), cmd.getPageSizeVal());
         SearchBuilder<DomainRouterJoinVO> sb = _routerJoinDao.createSearchBuilder();
         sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct
-                                                             // ids to get
-                                                             // number of
-                                                             // records with
-                                                             // pagination
+        // ids to get
+        // number of
+        // records with
+        // pagination
         _accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
 
         sb.and("name", sb.entity().getHostName(), SearchCriteria.Op.LIKE);
@@ -1095,7 +1093,7 @@ public class QueryManagerImpl implements QueryService, Manager {
         Filter searchFilter = new Filter(ProjectJoinVO.class, "id", false, startIndex, pageSize);
         SearchBuilder<ProjectJoinVO> sb = _projectJoinDao.createSearchBuilder();
         sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct
-                                                             // ids
+        // ids
 
         if (_accountMgr.isAdmin(caller.getType())) {
             if (domainId != null) {
@@ -1302,7 +1300,7 @@ public class QueryManagerImpl implements QueryService, Manager {
         Long startIndex = cmd.getStartIndex();
         Long pageSizeVal = cmd.getPageSizeVal();
 
-            //long projectId, String accountName, String role, Long startIndex, Long pageSizeVal) {
+        //long projectId, String accountName, String role, Long startIndex, Long pageSizeVal) {
         Account caller = UserContext.current().getCaller();
 
         //check that the project exists
@@ -1546,7 +1544,7 @@ public class QueryManagerImpl implements QueryService, Manager {
 
         if (tags != null && !tags.isEmpty()) {
             int count = 0;
-             for (String key : tags.keySet()) {
+            for (String key : tags.keySet()) {
                 sc.setParameters("key" + String.valueOf(count), key);
                 sc.setParameters("value" + String.valueOf(count), tags.get(key));
                 count++;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f40e7b75/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 1ce9b33..54c276d 100755
--- a/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
+++ b/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
@@ -81,7 +81,7 @@ import com.cloud.user.UserContext;
 import com.cloud.uservm.UserVm;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
-import com.cloud.utils.component.Adapters;
+import com.cloud.utils.component.AdapterBase;
 import com.cloud.utils.component.Manager;
 import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.db.DB;
@@ -181,7 +181,7 @@ public class BareMetalVmManagerImpl extends UserVmManagerImpl implements BareMet
          * prepare() will check if current account has right for creating
          * template
          */
-        TemplateAdapter adapter = Adapters.getAdapterByName(_adapters, TemplateAdapterType.BareMetal.getName());
+        TemplateAdapter adapter = AdapterBase.getAdapterByName(_adapters, TemplateAdapterType.BareMetal.getName());
         Long userId = UserContext.current().getCallerUserId();
         userId = (userId == null ? User.UID_SYSTEM : userId);
         AccountVO account = _accountDao.findById(vm.getAccountId());

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f40e7b75/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 6e123af..7a9a783 100755
--- a/server/src/com/cloud/baremetal/PxeServerManagerImpl.java
+++ b/server/src/com/cloud/baremetal/PxeServerManagerImpl.java
@@ -41,7 +41,7 @@ import com.cloud.resource.ResourceStateAdapter;
 import com.cloud.resource.ServerResource;
 import com.cloud.resource.UnableDeleteHostException;
 import com.cloud.uservm.UserVm;
-import com.cloud.utils.component.Adapters;
+import com.cloud.utils.component.AdapterBase;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.vm.ReservationContext;
 import com.cloud.vm.UserVmVO;
@@ -87,7 +87,7 @@ public class PxeServerManagerImpl implements PxeServerManager, ResourceStateAdap
 
 	protected PxeServerService getServiceByType(String type) {
 		PxeServerService _service;
-		_service = Adapters.getAdapterByName(_services, type);
+		_service = AdapterBase.getAdapterByName(_services, type);
 		if (_service == null) {
 			throw new CloudRuntimeException("Cannot find PXE service for " + type);
 		}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f40e7b75/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 bb943c9..a8c1743 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -39,30 +39,32 @@ import javax.naming.NamingException;
 import javax.naming.directory.DirContext;
 import javax.naming.directory.InitialDirContext;
 
+import org.apache.cloudstack.acl.SecurityChecker;
+import org.apache.cloudstack.api.ApiConstants.LDAPParams;
 import org.apache.cloudstack.api.command.admin.config.UpdateCfgCmd;
 import org.apache.cloudstack.api.command.admin.ldap.LDAPConfigCmd;
 import org.apache.cloudstack.api.command.admin.ldap.LDAPRemoveCmd;
-import org.apache.cloudstack.api.command.admin.network.DeleteNetworkOfferingCmd;
 import org.apache.cloudstack.api.command.admin.network.CreateNetworkOfferingCmd;
+import org.apache.cloudstack.api.command.admin.network.DeleteNetworkOfferingCmd;
 import org.apache.cloudstack.api.command.admin.network.UpdateNetworkOfferingCmd;
 import org.apache.cloudstack.api.command.admin.offering.CreateDiskOfferingCmd;
-import org.apache.cloudstack.api.command.admin.offering.*;
+import org.apache.cloudstack.api.command.admin.offering.CreateServiceOfferingCmd;
+import org.apache.cloudstack.api.command.admin.offering.DeleteDiskOfferingCmd;
+import org.apache.cloudstack.api.command.admin.offering.DeleteServiceOfferingCmd;
+import org.apache.cloudstack.api.command.admin.offering.UpdateDiskOfferingCmd;
+import org.apache.cloudstack.api.command.admin.offering.UpdateServiceOfferingCmd;
 import org.apache.cloudstack.api.command.admin.pod.DeletePodCmd;
 import org.apache.cloudstack.api.command.admin.pod.UpdatePodCmd;
 import org.apache.cloudstack.api.command.admin.vlan.CreateVlanIpRangeCmd;
+import org.apache.cloudstack.api.command.admin.vlan.DeleteVlanIpRangeCmd;
 import org.apache.cloudstack.api.command.admin.zone.CreateZoneCmd;
 import org.apache.cloudstack.api.command.admin.zone.DeleteZoneCmd;
 import org.apache.cloudstack.api.command.admin.zone.UpdateZoneCmd;
-import org.apache.cloudstack.api.command.admin.offering.CreateServiceOfferingCmd;
-import org.apache.cloudstack.api.command.admin.offering.DeleteServiceOfferingCmd;
-import org.apache.cloudstack.api.command.admin.vlan.DeleteVlanIpRangeCmd;
 import org.apache.cloudstack.api.command.user.network.ListNetworkOfferingsCmd;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
-import org.apache.cloudstack.acl.SecurityChecker;
 import com.cloud.alert.AlertManager;
-import org.apache.cloudstack.api.ApiConstants.LDAPParams;
 import com.cloud.api.ApiDBUtils;
 import com.cloud.capacity.dao.CapacityDao;
 import com.cloud.configuration.Resource.ResourceType;
@@ -153,8 +155,6 @@ import com.cloud.user.UserContext;
 import com.cloud.user.dao.AccountDao;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.StringUtils;
-import com.cloud.utils.component.Adapters;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.crypt.DBEncryptionUtil;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.Filter;
@@ -216,7 +216,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
     // @com.cloud.utils.component.Inject(adapter = SecurityChecker.class)
     @Inject 
     List<SecurityChecker> _secChecker;
-    
+
     @Inject
     CapacityDao _capacityDao;
     @Inject
@@ -438,7 +438,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         String name = cmd.getCfgName();
         String value = cmd.getValue();
         UserContext.current().setEventDetails(" Name: " + name + " New Value: " + (((name.toLowerCase()).contains("password")) ? "*****" :
-                (((value == null) ? "" : value))));
+            (((value == null) ? "" : value))));
         // check if config value exists
         ConfigurationVO config = _configDao.findByName(name);
         if (config == null) {
@@ -1454,9 +1454,9 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         }
 
         if (internalDns2 == null) {
-        	internalDns2 = zone.getInternalDns2();
+            internalDns2 = zone.getInternalDns2();
         }
-        
+
         if (guestCidr == null) {
             guestCidr = zone.getGuestNetworkCidr();
         }
@@ -1915,8 +1915,8 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         String description = cmd.getDisplayText();
         Long numGibibytes = cmd.getDiskSize();
         boolean isCustomized = cmd.isCustomized() != null ? cmd.isCustomized() : false; // false
-                                                                                        // by
-                                                                                        // default
+        // by
+        // default
         String tags = cmd.getTags();
         // Long domainId = cmd.getDomainId() != null ? cmd.getDomainId() :
         // Long.valueOf(DomainVO.ROOT_DOMAIN); // disk offering
@@ -2106,7 +2106,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                 physicalNetworkId = network.getPhysicalNetworkId();
             }
         }
-        
+
         // Verify that zone exists
         DataCenterVO zone = _zoneDao.findById(zoneId);
         if (zone == null) {
@@ -2148,8 +2148,8 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                 }
             }
         }
-        
-        
+
+
         // Check if zone is enabled
         Account caller = UserContext.current().getCaller();
         if (Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(caller.getType())) {
@@ -2234,7 +2234,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
 
                 //check resource limits
                 _resourceLimitMgr.checkResourceLimit(vlanOwner, ResourceType.public_ip, accountIpRange);
-                
+
                 associateIpRangeToAccount = true;
             }
         }
@@ -2272,24 +2272,24 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
     public Vlan createVlanAndPublicIpRange(long zoneId, long networkId, long physicalNetworkId, boolean forVirtualNetwork, Long podId, 
             String startIP, String endIP, String vlanGateway, String vlanNetmask,
             String vlanId, Account vlanOwner) {
-        
-        
+
+
         Network network = _networkMgr.getNetwork(networkId);
-        
+
         //Validate the zone
         DataCenterVO zone = _zoneDao.findById(zoneId);
         if (zone == null) {
             throw new InvalidParameterValueException("Please specify a valid zone.");
         }
-        
+
         // ACL check
         checkZoneAccess(UserContext.current().getCaller(), zone);
-        
+
         //Validate the physical network
         if (_physicalNetworkDao.findById(physicalNetworkId) == null) {
             throw new InvalidParameterValueException("Please specify a valid physical network id");
         }
-        
+
         //Validate the pod
         if (podId != null) {
             Pod pod = _podDao.findById(podId);
@@ -2302,10 +2302,10 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
             //pod vlans can be created in basic zone only
             if (zone.getNetworkType() != NetworkType.Basic || network.getTrafficType() != TrafficType.Guest) {
                 throw new InvalidParameterValueException("Pod id can be specified only for the networks of type " 
-                                                        + TrafficType.Guest + " in zone of type " + NetworkType.Basic);                  
+                        + TrafficType.Guest + " in zone of type " + NetworkType.Basic);                  
             }
         }
-        
+
         //1) if vlan is specified for the guest network range, it should be the same as network's vlan
         //2) if vlan is missing, default it to the guest network's vlan
         if (network.getTrafficType() == TrafficType.Guest) {
@@ -2315,7 +2315,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                 String[] vlan = uri.toString().split("vlan:\\/\\/");
                 networkVlanId = vlan[1];
             }
-            
+
             if (vlanId != null) {
                 // if vlan is specified, throw an error if it's not equal to network's vlanId
                 if (networkVlanId != null && !networkVlanId.equalsIgnoreCase(vlanId)) {
@@ -2328,14 +2328,14 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
             //vlan id is required for public network
             throw new InvalidParameterValueException("Vlan id is required when add ip range to the public network");
         }
-        
+
         if (vlanId == null) {
             vlanId = Vlan.UNTAGGED;
         }
 
         VlanType vlanType = forVirtualNetwork ? VlanType.VirtualNetwork : VlanType.DirectAttached;
-        
-        
+
+
         if (vlanOwner != null && zone.getNetworkType() != NetworkType.Advanced) {
             throw new InvalidParameterValueException("Vlan owner can be defined only in the zone of type " + NetworkType.Advanced);
         }
@@ -2484,7 +2484,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         if (vlan == null) {
             throw new InvalidParameterValueException("Please specify a valid IP range id.");
         }
-        
+
         boolean isAccountSpecific = false;
         List<AccountVlanMapVO> acctVln = _accountVlanMapDao.listAccountVlanMapsByVlan(vlan.getId());
         // Check for account wide pool. It will have an entry for account_vlan_map.
@@ -2502,25 +2502,25 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                     if (vlan == null) {
                         throw new CloudRuntimeException("Unable to acquire vlan configuration: " + vlanDbId);
                     }
-                    
+
                     if (s_logger.isDebugEnabled()) {
                         s_logger.debug("lock vlan " + vlanDbId + " is acquired");
                     }
-                    
+
                     List<IPAddressVO> ips = _publicIpAddressDao.listByVlanId(vlanDbId);
-                    
+
                     for (IPAddressVO ip : ips) {
                         if (ip.isOneToOneNat()) {
                             throw new InvalidParameterValueException("Can't delete account specific vlan " + vlanDbId + 
                                     " as ip " + ip + " belonging to the range is used for static nat purposes. Cleanup the rules first");
                         }
-                        
+
                         if (ip.isSourceNat() && _networkMgr.getNetwork(ip.getAssociatedWithNetworkId()) != null) {
                             throw new InvalidParameterValueException("Can't delete account specific vlan " + vlanDbId + 
                                     " as ip " + ip + " belonging to the range is a source nat ip for the network id=" + ip.getSourceNetworkId() + 
                                     ". IP range with the source nat ip address can be removed either as a part of Network, or account removal");
                         }
-                        
+
                         if (_firewallDao.countRulesByIpId(ip.getId()) > 0) {
                             throw new InvalidParameterValueException("Can't delete account specific vlan " + vlanDbId + 
                                     " as ip " + ip + " belonging to the range has firewall rules applied. Cleanup the rules first");
@@ -2613,7 +2613,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
 
         return true;
     }
-    
+
 
     @DB
     protected boolean savePublicIPRange(String startIP, String endIP, long zoneId, long vlanDbId, long sourceNetworkid, long physicalNetworkId) {
@@ -2816,7 +2816,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         }
 
     }
-    
+
     private boolean validPod(long podId) {
         return (_podDao.findById(podId) != null);
     }
@@ -3021,7 +3021,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                     // in Acton, don't allow to specify more than 1 provider per service
                     if (svcPrv.get(serviceStr) != null && svcPrv.get(serviceStr).size() > 1) {
                         throw new InvalidParameterValueException("In the current release only one provider can be " +
-                        		"specified for the service");
+                                "specified for the service");
                     }
                     for (String prvNameStr : svcPrv.get(serviceStr)) {
                         // check if provider is supported
@@ -3033,7 +3033,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                         if (provider == Provider.JuniperSRX) {
                             firewallProvider = Provider.JuniperSRX;
                         }
-                        
+
                         if ((service == Service.PortForwarding || service == Service.StaticNat) && provider == Provider.VirtualRouter){
                             firewallProvider = Provider.VirtualRouter;
                         }
@@ -3053,7 +3053,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                     serviceProviderMap.put(service, providers);
                 } else {
                     throw new InvalidParameterValueException("Service " + serviceStr + " is not enabled for the network " +
-                    		"offering, can't add a provider to it");
+                            "offering, can't add a provider to it");
                 }
             }
         }
@@ -3202,7 +3202,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         String multicastRateStr = _configDao.getValue("multicast.throttling.rate");
         int multicastRate = ((multicastRateStr == null) ? 10 : Integer.parseInt(multicastRateStr));
         tags = cleanupTags(tags);
-        
+
         if (specifyVlan != specifyIpRanges) {
             throw new InvalidParameterValueException("SpecifyVlan should be equal to specifyIpRanges which is " + specifyIpRanges);
         }
@@ -3211,11 +3211,11 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         if (!specifyVlan && type == GuestType.Shared) {
             throw new InvalidParameterValueException("SpecifyVlan should be true if network offering's type is " + type);
         }
-        
+
         //specifyIpRanges should always be false for Isolated offering with Source nat service enabled
         if (specifyVlan && type == GuestType.Isolated && serviceProviderMap.containsKey(Service.SourceNat)) {
             throw new InvalidParameterValueException("SpecifyVlan should be false if the network offering type is " 
-                                                        + type + " and service " + Service.SourceNat.getName() + " is supported");
+                    + type + " and service " + Service.SourceNat.getName() + " is supported");
         }
 
         // validate availability value
@@ -3235,7 +3235,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
             }
         }
 
-        
+
         boolean dedicatedLb = false;
         boolean elasticLb = false;
         boolean sharedSourceNat = false;
@@ -3245,7 +3245,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         boolean inline = false;
         if (serviceCapabilityMap != null && !serviceCapabilityMap.isEmpty()) {
             Map<Capability, String> lbServiceCapabilityMap = serviceCapabilityMap.get(Service.Lb);
-            
+
             if ((lbServiceCapabilityMap != null) && (!lbServiceCapabilityMap.isEmpty())) {
                 String isolationCapability = lbServiceCapabilityMap.get(Capability.SupportedLBIsolation);
                 if (isolationCapability != null) {
@@ -3259,7 +3259,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                 if (param != null) {
                     elasticLb = param.contains("true");
                 }
-                
+
                 String inlineMode = lbServiceCapabilityMap.get(Capability.InlineMode);
                 if (inlineMode != null) {
                     _networkMgr.checkCapabilityForProvider(serviceProviderMap.get(Service.Lb), Service.Lb, Capability.InlineMode, inlineMode);
@@ -3326,7 +3326,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                         _ntwkOffServiceMapDao.persist(offService);
                         s_logger.trace("Added service for the network offering: " + offService + " with provider " + provider.getName());
                     }
-                    
+
                     if (vpcOff) {
                         List<Service> supportedSvcs = new ArrayList<Service>();
                         supportedSvcs.addAll(serviceProviderMap.keySet());
@@ -3547,7 +3547,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                 if (sourceNatSupported != null) {
                     addOffering = addOffering && (_networkMgr.areServicesSupportedByNetworkOffering(offering.getId(), Network.Service.SourceNat) == sourceNatSupported);
                 }
-                
+
                 if (forVpc != null) {
                     addOffering = addOffering && (isOfferingForVpc(offering) == forVpc.booleanValue());
                 } else if (network != null){
@@ -3666,14 +3666,14 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
             }
             if (availability == null) {
                 throw new InvalidParameterValueException("Invalid value for Availability. Supported types: " 
-            + Availability.Required + ", " + Availability.Optional);
+                        + Availability.Required + ", " + Availability.Optional);
             } else {
                 if (availability == NetworkOffering.Availability.Required) {
                     boolean canOffBeRequired = (offeringToUpdate.getGuestType() == GuestType.Isolated 
                             && _networkMgr.areServicesSupportedByNetworkOffering(offeringToUpdate.getId(), Service.SourceNat));
                     if (!canOffBeRequired) {
                         throw new InvalidParameterValueException("Availability can be " + 
-                    NetworkOffering.Availability.Required + " only for networkOfferings of type " + GuestType.Isolated + " and with "
+                                NetworkOffering.Availability.Required + " only for networkOfferings of type " + GuestType.Isolated + " and with "
                                 + Service.SourceNat.getName() + " enabled");
                     }
 
@@ -3681,7 +3681,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                     List<NetworkOfferingVO> offerings = _networkOfferingDao.listByAvailability(Availability.Required, false);
                     if (!offerings.isEmpty() && offerings.get(0).getId() != offeringToUpdate.getId()) {
                         throw new InvalidParameterValueException("System already has network offering id=" + 
-                    offerings.get(0).getId() + " with availability " + Availability.Required);
+                                offerings.get(0).getId() + " with availability " + Availability.Required);
                     }
                 }
                 offering.setAvailability(availability);
@@ -3697,12 +3697,12 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
 
     @Override
     @ActionEvent(eventType = EventTypes.EVENT_ACCOUNT_MARK_DEFAULT_ZONE, eventDescription = "Marking account with the " +
-    		"default zone", async=true)
+            "default zone", async=true)
     public AccountVO markDefaultZone(String accountName, long domainId, long defaultZoneId) {
-    	
-    	// Check if the account exists
-    	Account account = _accountDao.findEnabledAccount(accountName, domainId);
-    	if (account == null) {
+
+        // Check if the account exists
+        Account account = _accountDao.findEnabledAccount(accountName, domainId);
+        if (account == null) {
             s_logger.error("Unable to find account by name: " + accountName + " in domain " + domainId);
             throw new InvalidParameterValueException("Account by name: " + accountName + " doesn't exist in domain " + domainId);
         }
@@ -3710,20 +3710,20 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         // Don't allow modification of system account
         if (account.getId() == Account.ACCOUNT_ID_SYSTEM) {
             throw new InvalidParameterValueException("Can not modify system account");
-    	}
-
-    	AccountVO acctForUpdate = _accountDao.findById(account.getId());
-    	
-    	acctForUpdate.setDefaultZoneId(defaultZoneId);
-    	
-    	if (_accountDao.update(account.getId(), acctForUpdate)) {
-    		UserContext.current().setEventDetails("Default zone id= " + defaultZoneId);
-    		return _accountDao.findById(account.getId());
-    	} else {
-    		return null;
-    	}
-    }
-    
+        }
+
+        AccountVO acctForUpdate = _accountDao.findById(account.getId());
+
+        acctForUpdate.setDefaultZoneId(defaultZoneId);
+
+        if (_accountDao.update(account.getId(), acctForUpdate)) {
+            UserContext.current().setEventDetails("Default zone id= " + defaultZoneId);
+            return _accountDao.findById(account.getId());
+        } else {
+            return null;
+        }
+    }
+
     // Note: This method will be used for entity name validations in the coming
     // releases (place holder for now)
     private void validateEntityName(String str) {
@@ -3851,31 +3851,31 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
     public ClusterVO getCluster(long id) {
         return _clusterDao.findById(id);
     }
-    
+
     @Override
     public AllocationState findClusterAllocationState(ClusterVO cluster){
-    	
-    	if(cluster.getAllocationState() == AllocationState.Disabled){
-    		return AllocationState.Disabled;
-    	}else if(ApiDBUtils.findPodById(cluster.getPodId()).getAllocationState() == AllocationState.Disabled){
-    		return AllocationState.Disabled;
-    	}else {
-    		DataCenterVO zone = ApiDBUtils.findZoneById(cluster.getDataCenterId());
-    		return zone.getAllocationState();
-    	}    	
+
+        if(cluster.getAllocationState() == AllocationState.Disabled){
+            return AllocationState.Disabled;
+        }else if(ApiDBUtils.findPodById(cluster.getPodId()).getAllocationState() == AllocationState.Disabled){
+            return AllocationState.Disabled;
+        }else {
+            DataCenterVO zone = ApiDBUtils.findZoneById(cluster.getDataCenterId());
+            return zone.getAllocationState();
+        }    	
     }    
 
     @Override
     public AllocationState findPodAllocationState(HostPodVO pod){
-    	
-    	if(pod.getAllocationState() == AllocationState.Disabled){
-    		return AllocationState.Disabled;
-    	}else {
-    		DataCenterVO zone = ApiDBUtils.findZoneById(pod.getDataCenterId());
-    		return zone.getAllocationState();
-    	}    	
-    }
-    
+
+        if(pod.getAllocationState() == AllocationState.Disabled){
+            return AllocationState.Disabled;
+        }else {
+            DataCenterVO zone = ApiDBUtils.findZoneById(pod.getDataCenterId());
+            return zone.getAllocationState();
+        }    	
+    }
+
     private boolean allowIpRangeOverlap(VlanVO vlan, boolean forVirtualNetwork, long networkId) {
         // FIXME - delete restriction for virtual network in the future
         if (vlan.getVlanType() == VlanType.DirectAttached && !forVirtualNetwork) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f40e7b75/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 5b8109f..b6f69d1 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -64,12 +64,7 @@ import com.cloud.configuration.Resource.ResourceType;
 import com.cloud.configuration.dao.ConfigurationDao;
 import com.cloud.dc.*;
 import com.cloud.dc.DataCenter.NetworkType;
-import com.cloud.dc.DataCenterVO;
-import com.cloud.dc.Pod;
-import com.cloud.dc.PodVlanMapVO;
-import com.cloud.dc.Vlan;
 import com.cloud.dc.Vlan.VlanType;
-import com.cloud.dc.VlanVO;
 import com.cloud.dc.dao.AccountVlanMapDao;
 import com.cloud.dc.dao.DataCenterDao;
 import com.cloud.dc.dao.PodVlanMapDao;
@@ -112,13 +107,6 @@ import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy;
 import com.cloud.network.lb.LoadBalancingRulesManager;
 import com.cloud.network.rules.*;
 import com.cloud.network.rules.FirewallRule.Purpose;
-import com.cloud.network.rules.FirewallRuleVO;
-import com.cloud.network.rules.PortForwardingRule;
-import com.cloud.network.rules.PortForwardingRuleVO;
-import com.cloud.network.rules.RulesManager;
-import com.cloud.network.rules.StaticNat;
-import com.cloud.network.rules.StaticNatRule;
-import com.cloud.network.rules.StaticNatRuleImpl;
 import com.cloud.network.rules.dao.PortForwardingRulesDao;
 import com.cloud.network.vpc.NetworkACLManager;
 import com.cloud.network.vpc.PrivateIpVO;
@@ -143,7 +131,7 @@ import com.cloud.user.dao.UserStatisticsDao;
 import com.cloud.utils.AnnotationHelper;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
-import com.cloud.utils.component.Adapters;
+import com.cloud.utils.component.AdapterBase;
 import com.cloud.utils.component.Manager;
 import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.db.JoinBuilder.JoinType;
@@ -306,7 +294,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
     @Override
     public NetworkElement getElementImplementingProvider(String providerName) {
         String elementName = s_providerToNetworkElementMap.get(providerName);
-        NetworkElement element = Adapters.getAdapterByName(_networkElements, elementName);
+        NetworkElement element = AdapterBase.getAdapterByName(_networkElements, elementName);
         return element;
     }
 
@@ -1813,7 +1801,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 = Adapters.getAdapterByName(_networkGurus, ntwkVO.getGuruName());
+        NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, ntwkVO.getGuruName());
 
         if (requested != null && requested.getMode() == null) {
             requested.setMode(network.getMode());
@@ -1958,7 +1946,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
         }
 
         try {
-            NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+            NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
             Network.State state = network.getState();
             if (state == Network.State.Implemented || state == Network.State.Implementing) {
                 s_logger.debug("Network id=" + networkId + " is already implemented");
@@ -2165,7 +2153,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
             ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException {
         
         Integer networkRate = getNetworkRate(network.getId(), vmProfile.getId());
-        NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+        NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
         NicVO nic = _nicDao.findById(nicId);
         
         NicProfile profile = null;
@@ -2227,7 +2215,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
             NetworkVO network = _networksDao.findById(nic.getNetworkId());
             Integer networkRate = getNetworkRate(network.getId(), vm.getId());
 
-            NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+            NetworkGuru guru = AdapterBase.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);
@@ -2271,7 +2259,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
 
         if (originalState == Nic.State.Reserved || originalState == Nic.State.Reserving) {
             if (nic.getReservationStrategy() == Nic.ReservationStrategy.Start) {
-                NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+                NetworkGuru guru = AdapterBase.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,
@@ -2321,7 +2309,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
                 NetworkVO network = _networksDao.findById(nic.getNetworkId());
                 Integer networkRate = getNetworkRate(network.getId(), vm.getId());
 
-                NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+                NetworkGuru guru = AdapterBase.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);
@@ -2342,7 +2330,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
         NetworkVO network = _networksDao.findById(networkId);
         Integer networkRate = getNetworkRate(network.getId(), vm.getId());
     
-        NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+        NetworkGuru guru = AdapterBase.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);            
@@ -2497,7 +2485,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 = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+        NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
         guru.deallocate(network, profile, vm);
         _nicDao.remove(nic.getId());
         s_logger.debug("Removed nic id=" + nic.getId());
@@ -3560,7 +3548,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 = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+            NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
             NetworkProfile profile = convertNetworkToNetworkProfile(network.getId());
             guru.shutdown(profile, _networkOfferingDao.findById(network.getNetworkOfferingId()));
 
@@ -3726,7 +3714,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 = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+            NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
             Account owner = _accountMgr.getAccount(network.getAccountId());
 
             Transaction txn = Transaction.currentTxn();
@@ -4429,7 +4417,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
     @Override
     public NetworkProfile convertNetworkToNetworkProfile(long networkId) {
         NetworkVO network = _networksDao.findById(networkId);
-        NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+        NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
         NetworkProfile profile = new NetworkProfile(network);
         guru.updateNetworkProfile(profile);
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f40e7b75/server/src/com/cloud/servlet/CloudStartupServlet.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/servlet/CloudStartupServlet.java b/server/src/com/cloud/servlet/CloudStartupServlet.java
index de133ab..4b66291 100755
--- a/server/src/com/cloud/servlet/CloudStartupServlet.java
+++ b/server/src/com/cloud/servlet/CloudStartupServlet.java
@@ -45,11 +45,11 @@ public class CloudStartupServlet extends HttpServlet implements ServletContextLi
         initLog4j();
 
         // Save Configuration Values
-        ConfigurationServer c = ComponentContext.getCompanent(ConfigurationServer.class);
+        ConfigurationServer c = ComponentContext.getComponent(ConfigurationServer.class);
         try {
             c.persistDefaultValues();
 
-            ManagementServer ms = ComponentContext.getCompanent(ManagementServer.class);
+            ManagementServer ms = ComponentContext.getComponent(ManagementServer.class);
             ms.startup();
             ms.enableAdminUser("password");
             ApiServer.initApiServer(ms.getPropertiesFiles());

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f40e7b75/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 0e91472..0c20853 100755
--- a/server/src/com/cloud/template/TemplateManagerImpl.java
+++ b/server/src/com/cloud/template/TemplateManagerImpl.java
@@ -130,7 +130,7 @@ import com.cloud.user.dao.UserAccountDao;
 import com.cloud.user.dao.UserDao;
 import com.cloud.uservm.UserVm;
 import com.cloud.utils.NumbersUtil;
-import com.cloud.utils.component.Adapters;
+import com.cloud.utils.component.AdapterBase;
 import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.component.Manager;
 import com.cloud.utils.concurrency.NamedThreadFactory;
@@ -216,10 +216,10 @@ public class TemplateManagerImpl implements TemplateManager, Manager, TemplateSe
     private TemplateAdapter getAdapter(HypervisorType type) {
     	TemplateAdapter adapter = null;
     	if (type == HypervisorType.BareMetal) {
-    		adapter = Adapters.getAdapterByName(_adapters, TemplateAdapterType.BareMetal.getName());
+    		adapter = AdapterBase.getAdapterByName(_adapters, TemplateAdapterType.BareMetal.getName());
     	} else {
     		// see HyervisorTemplateAdapter
-    		adapter =  Adapters.getAdapterByName(_adapters, TemplateAdapterType.Hypervisor.getName());
+    		adapter =  AdapterBase.getAdapterByName(_adapters, TemplateAdapterType.Hypervisor.getName());
     	}
     	
     	if (adapter == null) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f40e7b75/server/test/com/cloud/async/TestAsyncJobManager.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/async/TestAsyncJobManager.java b/server/test/com/cloud/async/TestAsyncJobManager.java
index 8ce51fa..d45ca4d 100644
--- a/server/test/com/cloud/async/TestAsyncJobManager.java
+++ b/server/test/com/cloud/async/TestAsyncJobManager.java
@@ -20,7 +20,10 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.inject.Inject;
+
 import junit.framework.Assert;
+import junit.framework.TestCase;
 
 import org.apache.log4j.Logger;
 
@@ -31,102 +34,99 @@ import com.cloud.exception.PermissionDeniedException;
 import com.cloud.host.HostVO;
 import com.cloud.host.dao.HostDao;
 import com.cloud.host.dao.HostDaoImpl;
-import com.cloud.server.ManagementServer;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.db.Transaction;
-import com.cloud.utils.testcase.ComponentSetup;
-import com.cloud.utils.testcase.ComponentTestCase;
 
-@ComponentSetup(managerName="management-server", setupXml="async-job-component.xml")
-public class TestAsyncJobManager extends ComponentTestCase {
+public class TestAsyncJobManager extends TestCase {
     public static final Logger s_logger = Logger.getLogger(TestAsyncJobManager.class.getName());
-    
+
     volatile long s_count = 0;
 
-	public void asyncCall() {
-	    AsyncJobManager asyncMgr = ComponentLocator.getLocator(ManagementServer.Name).getManager(AsyncJobManager.class);
+    @Inject AsyncJobManager asyncMgr;
 
+    public void asyncCall() {
 //		long jobId = mgr.rebootVirtualMachineAsync(1, 1);
         long jobId = 0L;
-		s_logger.info("Async-call job id: " + jobId);
-		
-		while(true) {
-			AsyncJobResult result;
-			try {
-				result = asyncMgr.queryAsyncJobResult(jobId);
-			
-				if(result.getJobStatus() != AsyncJobResult.STATUS_IN_PROGRESS) {
-					s_logger.info("Async-call completed, result: " + result.toString());
-					break;
-				}
-				s_logger.info("Async-call is in progress, progress: " + result.toString());
-				
-			} catch (PermissionDeniedException e1) {
-			}
-			
-			try {
-				Thread.sleep(1000);
-			} catch (InterruptedException e) {
-			}
-		}
-	}
-	
-	public void sequence() {
-		final HostDao hostDao = new HostDaoImpl();
-		long seq = hostDao.getNextSequence(1);
-		s_logger.info("******* seq : " + seq + " ********");
-		
-		HashMap<Long, Long> hashMap = new HashMap<Long, Long>();
-		final Map<Long, Long> map = Collections.synchronizedMap(hashMap);
-		
-		s_count = 0;
-		final long maxCount = 1000000;	// test one million times
-		
-		Thread t1 = new Thread(new Runnable() {
-			public void run() {
-				while(s_count < maxCount) {
-					s_count++;
-					long seq = hostDao.getNextSequence(1);
-					Assert.assertTrue(map.put(seq, seq) == null);
-				}
-			}
-		});
-		
-		Thread t2 = new Thread(new Runnable() {
-			public void run() {
-				while(s_count < maxCount) {
-					s_count++;
-					long seq = hostDao.getNextSequence(1);
-					Assert.assertTrue(map.put(seq, seq) == null);
-				}
-			}
-		});
-		
-		t1.start();
-		t2.start();
-		
-		try {
-			t1.join();
-			t2.join();
-		} catch (InterruptedException e) {
-		}
-	}
+        s_logger.info("Async-call job id: " + jobId);
+
+        while(true) {
+            AsyncJobResult result;
+            try {
+                result = asyncMgr.queryAsyncJobResult(jobId);
+
+                if(result.getJobStatus() != AsyncJobResult.STATUS_IN_PROGRESS) {
+                    s_logger.info("Async-call completed, result: " + result.toString());
+                    break;
+                }
+                s_logger.info("Async-call is in progress, progress: " + result.toString());
+
+            } catch (PermissionDeniedException e1) {
+            }
+
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException e) {
+            }
+        }
+    }
+
+    public void sequence() {
+        final HostDao hostDao = new HostDaoImpl();
+        long seq = hostDao.getNextSequence(1);
+        s_logger.info("******* seq : " + seq + " ********");
+
+        HashMap<Long, Long> hashMap = new HashMap<Long, Long>();
+        final Map<Long, Long> map = Collections.synchronizedMap(hashMap);
+
+        s_count = 0;
+        final long maxCount = 1000000;	// test one million times
+
+        Thread t1 = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                while(s_count < maxCount) {
+                    s_count++;
+                    long seq = hostDao.getNextSequence(1);
+                    Assert.assertTrue(map.put(seq, seq) == null);
+                }
+            }
+        });
 
-	/*
+        Thread t2 = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                while(s_count < maxCount) {
+                    s_count++;
+                    long seq = hostDao.getNextSequence(1);
+                    Assert.assertTrue(map.put(seq, seq) == null);
+                }
+            }
+        });
+
+        t1.start();
+        t2.start();
+
+        try {
+            t1.join();
+            t2.join();
+        } catch (InterruptedException e) {
+        }
+    }
+
+    /*
 	public void ipAssignment() {
 		final IPAddressDao ipAddressDao = new IPAddressDaoImpl();
-		
+
 		final ConcurrentHashMap<String, IPAddressVO> map = new ConcurrentHashMap<String, IPAddressVO>();
 		//final Map<String, String> map = Collections.synchronizedMap(hashMap);
-		
+
 		s_count = 0;
 		final long maxCount = 1000000;	// test one million times
-		
+
 		Thread t1 = new Thread(new Runnable() {
 			public void run() {
 				while(s_count < maxCount) {
 					s_count++;
-					
+
 					Transaction txn = Transaction.open("Alex1");
 					try {
 						IPAddressVO addr = ipAddressDao.assignIpAddress(1, 0, 1, false);
@@ -141,12 +141,12 @@ public class TestAsyncJobManager extends ComponentTestCase {
 				}
 			}
 		});
-		
+
 		Thread t2 = new Thread(new Runnable() {
 			public void run() {
 				while(s_count < maxCount) {
 					s_count++;
-					
+
 					Transaction txn = Transaction.open("Alex2");
 					try {
 						IPAddressVO addr = ipAddressDao.assignIpAddress(1, 0, 1, false);
@@ -157,96 +157,97 @@ public class TestAsyncJobManager extends ComponentTestCase {
 				}
 			}
 		});
-		
+
 		t1.start();
 		t2.start();
-		
+
 		try {
 			t1.join();
 			t2.join();
 		} catch (InterruptedException e) {
 		}
 	}
-	*/
-	
-	private long getRandomLockId() {
-		return 1L;
-		
-		/*
-		 *  will use in the future test cases
+     */
+
+    private long getRandomLockId() {
+        return 1L;
+
+        /*
+         *  will use in the future test cases
 		int i = new Random().nextInt();
 		if(i % 2 == 0)
 			return 1L;
 		return 2L;
-		*/
-	}
-	
-	public void tstLocking() {
-		
-		int testThreads = 20;
-		Thread[] threads = new Thread[testThreads];
-		
-		for(int i = 0; i < testThreads; i++) {
-			final int current = i;
-			threads[i] = new Thread(new Runnable() {
-				public void run() {
-					
-					final HostDao hostDao = new HostDaoImpl();
-					while(true) {
-						Transaction txn = Transaction.currentTxn();
-						try {
-							HostVO host = hostDao.acquireInLockTable(getRandomLockId(), 10);
-							if(host != null) {
-								s_logger.info("Thread " + (current + 1) + " acquired lock");
-								
-								try { Thread.sleep(getRandomMilliseconds(1000, 5000)); } catch (InterruptedException e) {}
-								
-								s_logger.info("Thread " + (current + 1) + " released lock");
-								hostDao.releaseFromLockTable(host.getId());
-								
-								try { Thread.sleep(getRandomMilliseconds(1000, 5000)); } catch (InterruptedException e) {}
-							} else {
-								s_logger.info("Thread " + (current + 1) + " is not able to acquire lock");
-							}
-						} finally {
-							txn.close();
-						}
-					}
-				}
-			});
-			threads[i].start();
-		}
-		
-		try {
-			for(int i = 0; i < testThreads; i++)
-				threads[i].join();
-		} catch(InterruptedException e) {
-		}
-	}
-	
-	public void testDomain() {
-		getRandomMilliseconds(1, 100);		
-		DomainDao domainDao = new DomainDaoImpl();
-		
-		DomainVO domain1 = new DomainVO("d1", 2L, 1L, null);
-		domainDao.create(domain1);
-		
-		DomainVO domain2 = new DomainVO("d2", 2L, 1L, null);
-		domainDao.create(domain2);
-		
-		DomainVO domain3 = new DomainVO("d3", 2L, 1L, null);
-		domainDao.create(domain3);
-
-		DomainVO domain11 = new DomainVO("d11", 2L, domain1.getId(), null);
-		domainDao.create(domain11);
-		
-		domainDao.remove(domain11.getId());
-		
-		DomainVO domain12 = new DomainVO("d12", 2L, domain1.getId(), null);
-		domainDao.create(domain12);
-		
-		domainDao.remove(domain3.getId());
-		DomainVO domain4 = new DomainVO("d4", 2L, 1L, null);
-		domainDao.create(domain4);
-	}
+         */
+    }
+
+    public void tstLocking() {
+
+        int testThreads = 20;
+        Thread[] threads = new Thread[testThreads];
+
+        for(int i = 0; i < testThreads; i++) {
+            final int current = i;
+            threads[i] = new Thread(new Runnable() {
+                @Override
+                public void run() {
+
+                    final HostDao hostDao = new HostDaoImpl();
+                    while(true) {
+                        Transaction txn = Transaction.currentTxn();
+                        try {
+                            HostVO host = hostDao.acquireInLockTable(getRandomLockId(), 10);
+                            if(host != null) {
+                                s_logger.info("Thread " + (current + 1) + " acquired lock");
+
+                                try { Thread.sleep(getRandomMilliseconds(1000, 5000)); } catch (InterruptedException e) {}
+
+                                s_logger.info("Thread " + (current + 1) + " released lock");
+                                hostDao.releaseFromLockTable(host.getId());
+
+                                try { Thread.sleep(getRandomMilliseconds(1000, 5000)); } catch (InterruptedException e) {}
+                            } else {
+                                s_logger.info("Thread " + (current + 1) + " is not able to acquire lock");
+                            }
+                        } finally {
+                            txn.close();
+                        }
+                    }
+                }
+            });
+            threads[i].start();
+        }
+
+        try {
+            for(int i = 0; i < testThreads; i++)
+                threads[i].join();
+        } catch(InterruptedException e) {
+        }
+    }
+
+    public void testDomain() {
+        getRandomMilliseconds(1, 100);		
+        DomainDao domainDao = new DomainDaoImpl();
+
+        DomainVO domain1 = new DomainVO("d1", 2L, 1L, null);
+        domainDao.create(domain1);
+
+        DomainVO domain2 = new DomainVO("d2", 2L, 1L, null);
+        domainDao.create(domain2);
+
+        DomainVO domain3 = new DomainVO("d3", 2L, 1L, null);
+        domainDao.create(domain3);
+
+        DomainVO domain11 = new DomainVO("d11", 2L, domain1.getId(), null);
+        domainDao.create(domain11);
+
+        domainDao.remove(domain11.getId());
+
+        DomainVO domain12 = new DomainVO("d12", 2L, domain1.getId(), null);
+        domainDao.create(domain12);
+
+        domainDao.remove(domain3.getId());
+        DomainVO domain4 = new DomainVO("d4", 2L, 1L, null);
+        domainDao.create(domain4);
+    }
 }