package nl.nn.adapterframework.configuration;
import nl.nn.adapterframework.core.IAdapter;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* * Straight forward implemenation of {@link AdapterService}, which is only filled by calls to {@link #registerAdapter(nl.nn.adapterframework.core.IAdapter)}, typically by digester rules via {@link Configuration#registerAdapter(nl.nn.adapterframework.core.IAdapter)}
*
* @author Michiel Meeuwissen
* @since 5.4
*/
public class AdapterServiceImpl implements AdapterService {
private final Map<String, IAdapter> adapters = new LinkedHashMap<String, IAdapter>(); // insertion order map
//@Override
public IAdapter getAdapter(String name) {
return getAdapters().get(name);
}
//@Override
public Map<String, IAdapter> getAdapters() {
return Collections.unmodifiableMap(adapters);
}
//@Override
public void registerAdapter(IAdapter adapter) throws ConfigurationException {
if (adapter.getName() == null) {
throw new ConfigurationException("Adapter has no name");
}
if (adapters.containsKey(adapter.getName())) {
throw new ConfigurationException("Adapter [" + adapter.getName() + "] already registered.");
}
adapters.put(adapter.getName(), adapter);
}
public void unRegisterAdapter(IAdapter adapter) {
adapters.remove(adapter.getName());
}
}