Package org.dspace.servicemanager

Source Code of org.dspace.servicemanager.DSpaceKernelInit

/**
* 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.servicemanager;

import org.dspace.kernel.DSpaceKernel;
import org.dspace.kernel.DSpaceKernelManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* This class simplifies the handling of lookup, registration, and
* access of a DSpace Kernel MBean.  This class has all static
* methods.
*
* @author Aaron Zeckoski (azeckoski @ gmail.com)
*/
public class DSpaceKernelInit {

    private static Logger log = LoggerFactory.getLogger(DSpaceKernelInit.class);
   
    private static final Object staticLock = new Object();

    /**
     * Creates or retrieves a DSpace Kernel with the given name.
     *
     * @return a DSpace Kernel
     * @throws IllegalStateException if the Kernel cannot be created
     */
    public static DSpaceKernelImpl getKernel(String name) {
        if (name != null) {
            try {
                DSpaceKernel kernel = new DSpaceKernelManager().getKernel(name);
                if (kernel != null) {
                    if (kernel instanceof DSpaceKernelImpl) {
                        return (DSpaceKernelImpl)kernel;
                    }

                    throw new IllegalStateException("Wrong DSpaceKernel implementation");
                }
            } catch (Exception e) {
                // Ignore exceptions here
            }
        }

        synchronized (staticLock) {
            DSpaceKernelImpl kernelImpl = new DSpaceKernelImpl(name);
            log.info("Created new kernel: " + kernelImpl);

            if (name != null) {
                DSpaceKernelManager.registerMBean(kernelImpl.getMBeanName(), kernelImpl);
            } else {
                DSpaceKernelManager.setDefaultKernel(kernelImpl);
            }

            return kernelImpl;
        }
    }
}
TOP

Related Classes of org.dspace.servicemanager.DSpaceKernelInit

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.