package org.pentaho.platform.repository2.unified.jcr.sejcr; import java.util.Collections; import java.util.List; import javax.jcr.Repository; import org.springframework.binding.collection.AbstractCachingMapDecorator; import org.springframework.extensions.jcr.SessionHolderProvider; import org.springframework.extensions.jcr.support.AbstractSessionHolderProviderManager; public class JackrabbitListSessionHolderProviderManager extends AbstractSessionHolderProviderManager { private List<SessionHolderProvider> providers = Collections.emptyList(); protected class ProvidersCache extends AbstractCachingMapDecorator { private ProvidersCache() { super(true); } @Override protected Object create(Object key) { return parentLookup((Repository) key); } } /** * Providers cache. */ private final ProvidersCache providersCache = new ProvidersCache(); /** * Method for retrieving the parent functionality. * @param sf * @return */ private SessionHolderProvider parentLookup(Repository repository) { return super.getSessionProvider(repository); } public SessionHolderProvider getSessionProvider(Repository repository) { return (SessionHolderProvider) providersCache.get(repository); } @Override public List<SessionHolderProvider> getProviders() { return providers; } /** * @param providers The providers to set. */ public void setProviders(List<SessionHolderProvider> providers) { this.providers = providers; } }