package multimonster.resourcemanager; import org.apache.log4j.Logger; import multimonster.common.plugin.PlugInFactory; import multimonster.common.plugin.PlugInIdentifier; import multimonster.exceptions.PlugInInstantiationException; import multimonster.resourcemanager.exceptions.ManagementException; class ResourceManagerPlugInFactory extends PlugInFactory { private static Logger log = Logger.getLogger(ResourceManagerPlugInFactory.class); // TODO use administrative setting for this. private static final String MANAGEMENT_PLUGIN_NAME = "multimonster.resourcemanager.plugin.NRequestsOnly"; protected ResourceManagerPlugInFactory() { } public static ResourceManagerPlugInFactory getInstance() { if (instance == null) { synchronized (ResourceManagerPlugInFactory.class) { if (instance == null) { instance = new ResourceManagerPlugInFactory(); } } } return instance; } /** * @link * @shapeType PatternLink * @pattern Singleton * @supplierRole Singleton factory */ /*# private ResourceManagerPlugInFactory _resourceManagerPlugInFactory; */ private static ResourceManagerPlugInFactory instance = null; /** @link dependency * @clientRole Factory * @supplierRole Product * @stereotype instantiate*/ /*# ResourceManagerPlugIn lnkResourceManagerPlugIn; */ /** * @return the current to use ManagemantPlugIn * @throws ManagementException */ public ManagementPlugIn getManagementPlugIn() throws ManagementException { ManagementPlugIn management = null; log.debug("getManagementStrategyPlugIn()"); try { management = (ManagementPlugIn) getPlugIn( new PlugInIdentifier(MANAGEMENT_PLUGIN_NAME)); } catch (PlugInInstantiationException e) { String errorMsg = "unable to get the management-plugin '"+MANAGEMENT_PLUGIN_NAME+"'."; throw new ManagementException(errorMsg, e); } return management; } }