package org.skyscreamer.yoga.configuration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Default implementation of the EntityConfigurationRegistry.
*
* @see EntityConfigurationRegistry
* @see YogaEntityConfiguration
*/
public class DefaultEntityConfigurationRegistry implements EntityConfigurationRegistry
{
protected Map<Class<?>, YogaEntityConfiguration<?>> _registry = new HashMap<Class<?>, YogaEntityConfiguration<?>>();
/**
* A default constructor.
*/
public DefaultEntityConfigurationRegistry()
{
}
/**
* Constructs a registry and initializes it with an array of initial configurations.
* @param entityConfigurations Initial configurations to register
*/
public DefaultEntityConfigurationRegistry( YogaEntityConfiguration<?>... entityConfigurations )
{
register( entityConfigurations );
}
/**
* Constructs a registry and initializes it with an list of initial configurations.
* @param entityConfigurations Initial configurations to register
*/
public DefaultEntityConfigurationRegistry( List<YogaEntityConfiguration<?>> entityConfigurations )
{
register( entityConfigurations.toArray(new YogaEntityConfiguration[0]) );
}
/**
* {@inheritDoc}
*/
@Override
public void register( YogaEntityConfiguration<?>... entityConfigurations )
{
for ( YogaEntityConfiguration<?> entityConfiguration : entityConfigurations )
{
Class<?> type = entityConfiguration.getEntityClass();
if ( type == null )
{
throw new IllegalArgumentException("Entity configuration must define an entity class to configure: "
+ entityConfiguration.getClass().getName());
}
_registry.put( type, entityConfiguration );
}
}
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
@Override
public <T> YogaEntityConfiguration<T> getEntityConfiguration( Class<T> clazz )
{
return (YogaEntityConfiguration<T>) _registry.get( clazz );
}
}