/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.utils;
import org.dspace.kernel.DSpaceKernel;
import org.dspace.kernel.DSpaceKernelManager;
import org.dspace.kernel.ServiceManager;
import org.dspace.services.ConfigurationService;
import org.dspace.services.EventService;
import org.dspace.services.RequestService;
import org.dspace.services.SessionService;
/**
* This is the DSpace helper services access object.
* It allows access to all core DSpace services for those who cannot or
* will not use the injection service to get services.
* <p>
* Note that this may not include every core service but should include
* all the services that are useful to UI developers at least.
* <p>
* This should be initialized using the constructor and then can be used
* as long as the kernel is not shutdown. Making multiple copies of
* this is cheap and can be done without worry about the cost.
*
* @author Aaron Zeckoski (azeckoski @ gmail.com)
*/
public final class DSpace {
private DSpaceKernel kernel;
public DSpaceKernel getKernel() {
return kernel;
}
/**
* Construct a DSpace helper object which uses the default kernel.
*
* @throws IllegalStateException if the kernel is not already running
*/
public DSpace() {
this(null);
}
/**
* Construct a DSpace helper object which uses the a specific named
* instance of the kernel.
*
* @param kernelName the name of the kernel to use (null to use the default kernel)
* @throws IllegalStateException if the kernel is not already running or no kernel exists with this name
*/
public DSpace(String kernelName) {
DSpaceKernel kernel = new DSpaceKernelManager().getKernel(kernelName);
this.kernel = kernel;
}
public ServiceManager getServiceManager() {
if (kernel == null) {
throw new IllegalStateException("DSpace kernel cannot be null");
}
return kernel.getServiceManager();
}
// place methods to retrieve key services below here -AZ
public ConfigurationService getConfigurationService() {
return getServiceManager().getServiceByName(ConfigurationService.class.getName(), ConfigurationService.class);
}
public EventService getEventService() {
return getServiceManager().getServiceByName(EventService.class.getName(), EventService.class);
}
public SessionService getSessionService() {
return getServiceManager().getServiceByName(SessionService.class.getName(), SessionService.class);
}
public RequestService getRequestService() {
return getServiceManager().getServiceByName(RequestService.class.getName(), RequestService.class);
}
public <T> T getSingletonService(Class<T> type) {
return getServiceManager().getServiceByName(type.getName(), type);
}
}