Package org.springmodules.jcr.support

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

/**
* Created on Nov 10, 2005
*
* $Id: AbstractSessionHolderProviderManagerTests.java,v 1.2 2006/03/07 13:09:31 costin Exp $
* $Revision: 1.2 $
*/
package org.springmodules.jcr.support;

import java.util.ArrayList;
import java.util.List;

import javax.jcr.Repository;
import javax.jcr.Session;

import junit.framework.TestCase;

import org.easymock.MockControl;
import org.springmodules.jcr.SessionFactory;
import org.springmodules.jcr.SessionHolder;
import org.springmodules.jcr.SessionHolderProvider;

/**
*
* @author Costin Leau
*
*/
public class AbstractSessionHolderProviderManagerTests extends TestCase {

  AbstractSessionHolderProviderManager providerManager;
  List providers;
  String repositoryName;
  MockControl sfCtrl, sessCtrl, repoCtrl;
  Repository repo;
  Session sess;
  SessionFactory sf;
  SessionHolderProvider customProvider;
 

  protected void setUp() throws Exception {
    super.setUp();

    providers = new ArrayList();
    repositoryName = "dummyRepository";

    providerManager = new AbstractSessionHolderProviderManager() {
      /**
       * @see org.springmodules.jcr.support.AbstractSessionHolderProviderManager#getProviders()
       */
      public List getProviders() {
        return providers;
      }
    };
    // build crazy mock hierarchy
    sfCtrl = MockControl.createControl(SessionFactory.class);
    sf = (SessionFactory) sfCtrl.getMock();
    sessCtrl = MockControl.createControl(Session.class);
    sess = (Session) sessCtrl.getMock();
    repoCtrl = MockControl.createControl(Repository.class);
    repo = (Repository) repoCtrl.getMock();

    //sfCtrl.expectAndReturn(sf.getSession(), sess);
    //sessCtrl.expectAndReturn(sess.getRepository(), repo);
    repoCtrl.expectAndReturn(repo.getDescriptor(Repository.REP_NAME_DESC), repositoryName);
   
    customProvider = new SessionHolderProvider() {

      /**
       * @see org.springmodules.jcr.SessionHolderProvider#acceptsRepository(java.lang.String)
       */
      public boolean acceptsRepository(String repo) {
        return repositoryName.equals(repo);
      }

      /**
       * @see org.springmodules.jcr.SessionHolderProvider#createSessionHolder(javax.jcr.Session)
       */
      public SessionHolder createSessionHolder(Session session) {
        return null;
      }

    };
  }

  protected void tearDown() throws Exception {
    sfCtrl.verify();
    sessCtrl.verify();
    repoCtrl.verify();
   
    super.tearDown();
  }

  /*
   * Default provider is used even on empty list.
   *
   * Test method for 'org.springmodules.jcr.support.AbstractSessionHolderProviderManager.getSessionProvider(SessionFactory)'
   */
  public void testDefaultSessionProvider() {
    // sanity check
    assertSame(providers, providerManager.getProviders());

    sfCtrl.replay();
    sessCtrl.replay();
    repoCtrl.replay();

    SessionHolderProvider provider = providerManager.getSessionProvider(repo);
    assertSame(GenericSessionHolderProvider.class, provider.getClass());
  }

  /*
   * Make sure that the approapriate provider is selected
   * Test method for 'org.springmodules.jcr.support.AbstractSessionHolderProviderManager.getSessionProvider(SessionFactory)'
   */
  public void testCustomSessionProvider() {
    // sanity check

    providers = new ArrayList();
    providers.add(customProvider);

    sfCtrl.replay();
    sessCtrl.replay();
    repoCtrl.replay();

    assertSame(customProvider, providerManager.getSessionProvider(repo));
  }
 
  /*
   * Make sure that we fallback to default provider
   *
   * Test method for 'org.springmodules.jcr.support.AbstractSessionHolderProviderManager.getSessionProvider(SessionFactory)'
   */
  public void testDifferentSessionProvider() {
    // sanity check

    customProvider = new SessionHolderProvider() {

      /**
       * @see org.springmodules.jcr.SessionHolderProvider#acceptsRepository(java.lang.String)
       */
      public boolean acceptsRepository(String repo) {
        return false;
      }

      /**
       * @see org.springmodules.jcr.SessionHolderProvider#createSessionHolder(javax.jcr.Session)
       */
      public SessionHolder createSessionHolder(Session session) {
        return null;
      }

    };
    providers = new ArrayList();
    providers.add(customProvider);

    sfCtrl.replay();
    sessCtrl.replay();
    repoCtrl.replay();

    assertSame(GenericSessionHolderProvider.class, providerManager.getSessionProvider(repo).getClass());
 
}
TOP

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

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.