/*
* This code is distributed under The GNU Lesser General Public License (LGPLv3)
* Please visit GNU site for LGPLv3 http://www.gnu.org/copyleft/lesser.html
*
* Copyright Denis Pavlov 2009
* Web: http://www.genericdtoassembler.org
* SVN: https://svn.code.sf.net/p/geda-genericdto/code/trunk/
* SVN (mirror): http://geda-genericdto.googlecode.com/svn/trunk/
*/
package com.inspiresoftware.lib.dto.geda.dsl;
import com.inspiresoftware.lib.dto.geda.adapter.Adapters;
import com.inspiresoftware.lib.dto.geda.adapter.BeanFactory;
import com.inspiresoftware.lib.dto.geda.adapter.BeanFactoryProvider;
import com.inspiresoftware.lib.dto.geda.adapter.ExtensibleBeanFactory;
import com.inspiresoftware.lib.dto.geda.assembler.dsl.impl.DefaultDSLRegistry;
/**
* Utility class for getting default implementation of the registry
*
* @since 3.0.0
*
* User: denispavlov
* Date: 13-02-20
* Time: 9:26 AM
*/
public final class Registries {
private Registries() {
// no instance
}
/**
* Create a new registry instance with new default bean factory.
*
* @return new registry instance
*/
public static Registry registry() {
return new DefaultDSLRegistry(Adapters.beanFactory());
}
/**
* Create a new registry instance with new default bean factory.
*
* @param classLoader class loader to use for bean factory
*
* @return new registry instance
*/
public static Registry registry(ClassLoader classLoader) {
return new DefaultDSLRegistry(Adapters.beanFactory(classLoader));
}
/**
* Create a new registry instance.
*
* @param beanFactory extensible bean factory
*
* @return new registry instance
*/
public static Registry registry(final ExtensibleBeanFactory beanFactory) {
return new DefaultDSLRegistry(beanFactory);
}
/**
* Get bean factory from DSL registry. If registry implements BeanFactory
* then cast and return.
*
* @param registry registry
*
* @return bean factory or null (if none available)
*/
public static BeanFactory beanFactory(final Registry registry) {
if (registry instanceof BeanFactory) {
return (BeanFactory) registry;
} else if (registry instanceof BeanFactoryProvider) {
return ((BeanFactoryProvider) registry).getBeanFactory();
}
return null;
}
}