package org.aperteworkflow.ui.view.impl; import org.aperteworkflow.ui.view.GenericPortletViewRenderer; import org.aperteworkflow.ui.view.ViewRegistry; import org.aperteworkflow.ui.view.ViewRenderer; import pl.net.bluesoft.rnd.util.func.Func; import java.util.*; /** * @author tlipski@bluesoft.net.pl */ public class DefaultViewRegistryImpl implements ViewRegistry { private Set<Func<ViewRenderer>> viewFunctions = new HashSet<Func<ViewRenderer>>(); private Map<String, Set<GenericPortletViewRenderer>> genericPortletViewRenderers = new HashMap<String, Set<GenericPortletViewRenderer>>(); @Override public synchronized Collection<ViewRenderer> getViews() { Set<ViewRenderer> res = new HashSet<ViewRenderer>(); for (Func<ViewRenderer> f : viewFunctions) { res.add(f.invoke()); } return res; } @Override public synchronized void registerView(Func<ViewRenderer> v) { viewFunctions.add(v); } @Override public synchronized void unregisterView(Func<ViewRenderer> v) { viewFunctions.remove(v); } @Override public synchronized Collection<GenericPortletViewRenderer> getGenericPortletViews(String portletKey) { return genericPortletViewRenderers.containsKey(portletKey) ? genericPortletViewRenderers.get(portletKey) : Collections.<GenericPortletViewRenderer>emptyList(); } @Override public synchronized void registerGenericPortletViewRenderer(String portletKey, GenericPortletViewRenderer renderer) { if (!genericPortletViewRenderers.containsKey(portletKey)) { genericPortletViewRenderers.put(portletKey, new HashSet<GenericPortletViewRenderer>()); } genericPortletViewRenderers.get(portletKey).add(renderer); } @Override public synchronized void unregisterGenericPortletViewRenderer(String portletKey, GenericPortletViewRenderer renderer) { if (genericPortletViewRenderers.containsKey(portletKey)) { genericPortletViewRenderers.get(portletKey).remove(renderer); } } }