Package org.hibernate.search.test.batchindexing

Source Code of org.hibernate.search.test.batchindexing.CustomMassIndexerFactoryTest$NoopMassIndexer

/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.test.batchindexing;

import java.util.Properties;
import java.util.concurrent.Future;

import org.hibernate.CacheMode;
import org.hibernate.Session;

import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.MassIndexer;
import org.hibernate.search.Search;
import org.hibernate.search.batchindexing.MassIndexerProgressMonitor;
import org.hibernate.search.batchindexing.spi.MassIndexerFactory;
import org.hibernate.search.engine.spi.SearchFactoryImplementor;
import org.hibernate.search.test.SearchTestBase;
import org.junit.Test;

import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hibernate.search.batchindexing.spi.MassIndexerFactory.MASS_INDEXER_FACTORY_CLASSNAME;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;

/**
* @author Davide D'Alto <davide@hibernate.org>
*/
public class CustomMassIndexerFactoryTest extends SearchTestBase {

  @Test
  public void testCreationOfTheSelectedMassIndexer() throws Exception {
    Session session = openSession();
    FullTextSession fullTextSession = Search.getFullTextSession( session );
    MassIndexer indexer = fullTextSession.createIndexer( Clock.class );

    assertThat( indexer, instanceOf( NoopMassIndexer.class ) );
  }

  @Test
  public void testFactoryCanReadConfiguration() throws Exception {
    Session session = openSession();
    FullTextSession fullTextSession = Search.getFullTextSession( session );
    NoopMassIndexer indexer = (NoopMassIndexer) fullTextSession.createIndexer( Clock.class );

    assertTrue( "The factory cannot read the configuration properties", indexer.isConfigurationReadable() );
  }

  @Override
  protected void configure(org.hibernate.cfg.Configuration cfg) {
    super.configure( cfg );
    cfg.setProperty( MASS_INDEXER_FACTORY_CLASSNAME, NoopMassIndexerFactory.class.getName() );
  }

  @Override
  protected Class<?>[] getAnnotatedClasses() {
    return new Class[] { Clock.class };
  }

  public static class NoopMassIndexerFactory implements MassIndexerFactory {

    private boolean configurationReadable = false;

    @Override
    public void initialize(Properties properties) {
      configurationReadable = properties.get( MASS_INDEXER_FACTORY_CLASSNAME ) == NoopMassIndexerFactory.class
          .getName();
    }

    @Override
    public MassIndexer createMassIndexer(SearchFactoryImplementor searchFactory, SessionFactoryImplementor sessionFactory,
        Class<?>... entities) {
      return new NoopMassIndexer( configurationReadable );
    }
  }

  private static class NoopMassIndexer implements MassIndexer {

    private final boolean configurationReadable;

    public NoopMassIndexer(boolean configurationAccessible) {
      this.configurationReadable = configurationAccessible;
    }

    public boolean isConfigurationReadable() {
      return configurationReadable;
    }

    @Override
    public MassIndexer typesToIndexInParallel(int threadsToIndexObjects) {
      return null;
    }

    @Override
    public MassIndexer threadsToLoadObjects(int numberOfThreads) {
      return null;
    }

    @Override
    public MassIndexer batchSizeToLoadObjects(int batchSize) {
      return null;
    }

    @Override
    public MassIndexer threadsForSubsequentFetching(int numberOfThreads) {
      return null;
    }

    @Override
    public MassIndexer progressMonitor(MassIndexerProgressMonitor monitor) {
      return null;
    }

    @Override
    public MassIndexer cacheMode(CacheMode cacheMode) {
      return null;
    }

    @Override
    public MassIndexer optimizeOnFinish(boolean optimize) {
      return null;
    }

    @Override
    public MassIndexer optimizeAfterPurge(boolean optimize) {
      return null;
    }

    @Override
    public MassIndexer purgeAllOnStart(boolean purgeAll) {
      return null;
    }

    @Override
    public MassIndexer limitIndexedObjectsTo(long maximum) {
      return null;
    }

    @Override
    public Future<?> start() {
      return null;
    }

    @Override
    public void startAndWait() throws InterruptedException {
    }

    @Override
    public MassIndexer idFetchSize(int idFetchSize) {
      return null;
    }
  }
}
TOP

Related Classes of org.hibernate.search.test.batchindexing.CustomMassIndexerFactoryTest$NoopMassIndexer

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.