package org.molgenis.framework.ui; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; public class MolgenisPluginRegistryImpl implements MolgenisPluginRegistry { private final List<MolgenisPluginFactory> pluginFactories; public MolgenisPluginRegistryImpl() { pluginFactories = new ArrayList<MolgenisPluginFactory>(); } @Override public void registerPlugin(final MolgenisPlugin molgenisPlugin) { if (molgenisPlugin == null) { throw new IllegalArgumentException(MolgenisPlugin.class.getSimpleName() + " cannot be null"); } pluginFactories.add(new MolgenisPluginFactory() { @Override public Iterator<MolgenisPlugin> iterator() { return Collections.singleton(molgenisPlugin).iterator(); } }); } @Override public void registerPluginFactory(MolgenisPluginFactory molgenisPluginFactory) { if (molgenisPluginFactory == null) { throw new IllegalArgumentException(MolgenisPluginFactory.class.getSimpleName() + " cannot be null"); } pluginFactories.add(molgenisPluginFactory); } @Override public Iterator<MolgenisPlugin> iterator() { return Iterables.concat(pluginFactories).iterator(); } @Override public MolgenisPlugin getPlugin(final String id) { return Iterables.find(this, new Predicate<MolgenisPlugin>() { @Override public boolean apply(MolgenisPlugin molgenisPlugin) { return molgenisPlugin.getId().equals(id); } }, null); } }