package net.sf.cglib.core.internal;
import net.sf.cglib.core.Customizer;
import net.sf.cglib.core.FieldTypeCustomizer;
import net.sf.cglib.core.KeyFactoryCustomizer;
import java.util.*;
public class CustomizerRegistry {
private final Class[] customizerTypes;
private Map<Class, List<KeyFactoryCustomizer>> customizers = new HashMap<Class, List<KeyFactoryCustomizer>>();
public CustomizerRegistry(Class[] customizerTypes) {
this.customizerTypes = customizerTypes;
}
public void add(KeyFactoryCustomizer customizer) {
Class<? extends KeyFactoryCustomizer> klass = customizer.getClass();
for (Class type : customizerTypes) {
if (type.isAssignableFrom(klass)) {
List<KeyFactoryCustomizer> list = customizers.get(type);
if (list == null) {
customizers.put(type, list = new ArrayList<KeyFactoryCustomizer>());
}
list.add(customizer);
}
}
}
public <T> List<T> get(Class<T> klass) {
List<KeyFactoryCustomizer> list = customizers.get(klass);
if (list == null) {
return Collections.emptyList();
}
return (List<T>) list;
}
Deprecated: Only to keep backward compatibility.
/**
* @deprecated Only to keep backward compatibility.
*/
@Deprecated
public static CustomizerRegistry singleton(Customizer customizer)
{
CustomizerRegistry registry = new CustomizerRegistry(new Class[]{Customizer.class});
registry.add(customizer);
return registry;
}
}