Package org.springmodules.jcr.support

Source Code of org.springmodules.jcr.support.AbstractSessionHolderProviderManager

/**
* Created on Nov 10, 2005
*
* $Id: AbstractSessionHolderProviderManager.java,v 1.3 2006/03/07 13:41:07 costin Exp $
* $Revision: 1.3 $
*/
package org.springmodules.jcr.support;

import java.util.List;

import javax.jcr.Repository;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springmodules.jcr.SessionHolderProvider;
import org.springmodules.jcr.SessionHolderProviderManager;

/**
* Base implementation for SessionHolderProviderManager that adds most of the functionality
* needed by the interface. Usually interface implementations will extends this class.
*
* @author Costin Leau
*
*/
public abstract class AbstractSessionHolderProviderManager implements SessionHolderProviderManager {
 
  protected final Log log = LogFactory.getLog(getClass());
 
  protected SessionHolderProvider defaultProvider = new GenericSessionHolderProvider();
 
  /**
   * Returns all the providers for this class. Subclasses have to implement this method.
   *
   * @return sessionHolderProviders
   */
  public abstract List getProviders();

  /**
   * @see org.springmodules.jcr.SessionHolderProviderManager#getSessionProvider(Repository)
   */
  public SessionHolderProvider getSessionProvider(Repository repository) {
    // graceful fallback
    if (repository == null)
      return defaultProvider;
   
    String key = repository.getDescriptor(Repository.REP_NAME_DESC);
    List providers = getProviders();

    // search the provider
    for (int i = 0; i < providers.size(); i++) {
      SessionHolderProvider provider = (SessionHolderProvider) providers.get(i);
      if (provider.acceptsRepository(key)) {
        if (log.isDebugEnabled())
          log.debug("specific SessionHolderProvider found for repository " + key);
        return provider;
      }
    }

    // no provider found - return the default one
    if (log.isDebugEnabled())
      log.debug("no specific SessionHolderProvider found for repository "
          + key
          + "; using the default one");
    return defaultProvider;
  }
}
TOP

Related Classes of org.springmodules.jcr.support.AbstractSessionHolderProviderManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.