package org.atricore.idbus.capabilities.sso.main.select.internal;
import org.atricore.idbus.capabilities.sso.main.SSOException;
import org.atricore.idbus.capabilities.sso.main.select.spi.SelectionStrategiesRegistry;
import org.atricore.idbus.capabilities.sso.main.select.spi.SelectionStrategy;
import java.util.*;
/**
*/
public class SelectionStrategiesRegistryImpl implements SelectionStrategiesRegistry {
private List<SelectionStrategy> builtInStrategies = new ArrayList<SelectionStrategy>();
private Map<String, SelectionStrategy> registry = new HashMap<String, SelectionStrategy>();
private boolean init = false;
public void init() throws SSOException {
if (init) return;
synchronized (this) {
if (init) return;
init = true;
for (SelectionStrategy builtInStregegy : builtInStrategies) {
this.registerStrategy(builtInStregegy);
}
}
}
public void registerStrategy(SelectionStrategy strategy) throws SSOException {
registry.put(strategy.getName(), strategy);
}
public void unregisterStrategy(SelectionStrategy strategy) throws SSOException {
registry.remove(strategy.getName());
}
public Collection<SelectionStrategy> listStrategies() throws SSOException {
return registry.values();
}
public SelectionStrategy lookup(String strategyName) {
return registry.get(strategyName);
}
public List<SelectionStrategy> getBuiltInStrategies() {
return builtInStrategies;
}
public void setBuiltInStrategies(List<SelectionStrategy> builtInStrategies) {
this.builtInStrategies = builtInStrategies;
}
}