Package org.hibernate.search.store

Examples of org.hibernate.search.store.DirectoryProvider


      }
    } );
  }

  private long getWorkHashCode(LuceneWorker.WorkWithPayload luceneWork, SearchFactoryImplementor searchFactoryImplementor) {
    DirectoryProvider provider = luceneWork.getProvider();
    int h = provider.getClass().hashCode();
    h = 31 * h + provider.hashCode();
    long extendedHash = h; //to be sure extendedHash + 1 < extendedHash + 2 is always true
    if ( luceneWork.getWork() instanceof AddLuceneWork ) extendedHash+=1; //addwork after deleteWork
    if ( luceneWork.getWork() instanceof OptimizeLuceneWork ) extendedHash+=2; //optimize after everything
    return extendedHash;
  }
View Full Code Here


      PersistentClass clazz = (PersistentClass) iter.next();
      Class<?> mappedClass = clazz.getMappedClass();
      if ( mappedClass != null ) {
        XClass mappedXClass = reflectionManager.toXClass( mappedClass );
        if ( mappedXClass != null && mappedXClass.isAnnotationPresent( Indexed.class ) ) {
          DirectoryProvider provider = factory.createDirectoryProvider( mappedXClass, cfg );
          if ( !lockableDirectoryProviders.containsKey( provider ) ) {
            lockableDirectoryProviders.put( provider, new ReentrantLock() );
          }
          final DocumentBuilder<Object> documentBuilder = new DocumentBuilder<Object>(
              mappedXClass, analyzer, provider, reflectionManager
View Full Code Here

    return documentBuilders.get( entity );
  }

  public IndexReader getIndexReader(Class entity) {
    //TODO NPEs
    DirectoryProvider provider = documentBuilders.get( entity ).getDirectoryProvider();
    IndexReader reader = readers.get( provider );
    if ( reader != null ) return reader;
    lockProvider( provider );
    try {
      reader = IndexReader.open( provider.getDirectory() );
      readers.put( provider, reader );
    }
    catch (IOException e) {
      cleanUp( new HibernateException( "Unable to open IndexReader for " + entity, e ) );
    }
View Full Code Here

    }
    return reader;
  }

  public IndexWriter getIndexWriter(Class entity) {
    DirectoryProvider provider = documentBuilders.get( entity ).getDirectoryProvider();
    IndexWriter writer = writers.get( provider );
    if ( writer != null ) return writer;
    lockProvider( provider );
    try {
      writer = new IndexWriter(
          provider.getDirectory(), documentBuilders.get( entity ).getAnalyzer(), false
      ); //have been created at init time
      writers.put( provider, writer );
    }
    catch (IOException e) {
      cleanUp( new HibernateException( "Unable to open IndexWriter for " + entity, e ) );
View Full Code Here

    if ( trace ) {
      log.trace( "Opening IndexReader for directoryProviders: {}", length );
    }

    for ( int index = 0; index < length; index++ ) {
      DirectoryProvider directoryProvider = directoryProviders[index];
      IndexReader reader;
      Lock directoryProviderLock = perDirectoryProviderManipulationLocks.get( directoryProvider );
      if ( trace ) {
        log.trace( "Opening IndexReader from {}", directoryProvider.getDirectory() );
      }
      directoryProviderLock.lock(); //needed for same problem as the double-checked locking
      try {
        reader = activeSearchIndexReaders.get( directoryProvider );
      }
      finally {
        directoryProviderLock.unlock();
      }
      if ( reader == null ) {
        if ( trace ) {
          log.trace( "No shared IndexReader, opening a new one: {}", directoryProvider.getDirectory() );
        }
        reader = replaceActiveReader( null, directoryProviderLock, directoryProvider, readers );
      }
      else {
        boolean isCurrent;
        try {
          isCurrent = reader.isCurrent();
        }
        catch ( IOException e ) {
          throw new SearchException( "Unable to read current status of Lucene IndexReader", e );
        }
        if ( !isCurrent ) {
          if ( trace ) {
            log.trace(
                "Out of date shared IndexReader found, opening a new one: {}",
                directoryProvider.getDirectory()
            );
          }
          IndexReader outOfDateReader = reader;
          reader = replaceActiveReader( outOfDateReader, directoryProviderLock, directoryProvider, readers );
        }
        else {
          if ( trace ) {
            log.trace( "Valid shared IndexReader: {}" + directoryProvider.getDirectory() );
          }
          directoryProviderLock.lock();
          try {
            //read the latest active one, the current one could be out of date and closed already
            //the latest active is guaranteed to be active because it's protected by the dp lock
View Full Code Here

    int length = directoryProviders.length;
    IndexReader[] readers = new IndexReader[length];
    if ( trace ) log.trace( "Opening IndexReader for directoryProviders: {}", length );

    for (int index = 0; index < length; index++) {
      DirectoryProvider directoryProvider = directoryProviders[index];
      IndexReader reader;
      Lock directoryProviderLock = perDirectoryProviderManipulationLocks.get( directoryProvider );
      if ( trace ) log.trace( "Opening IndexReader from {}", directoryProvider.getDirectory() );
      directoryProviderLock.lock(); //needed for same problem as the double-checked locking
      try {
        reader = activeSearchIndexReaders.get( directoryProvider );
      }
      finally {
        directoryProviderLock.unlock();
      }
      if ( reader == null ) {
        if ( trace )
          log.trace( "No shared IndexReader, opening a new one: {}", directoryProvider.getDirectory() );
        reader = replaceActiveReader( null, directoryProviderLock, directoryProvider, readers );
      }
      else {
        boolean isCurrent;
        try {
          isCurrent = reader.isCurrent();
        }
        catch (IOException e) {
          throw new SearchException( "Unable to read current status of Lucene IndexReader", e );
        }
        if ( !isCurrent ) {
          if ( trace ) {
            log.trace( "Out of date shared IndexReader found, opening a new one: {}",
                directoryProvider.getDirectory() );
          }
          IndexReader outOfDateReader = reader;
          reader = replaceActiveReader( outOfDateReader, directoryProviderLock, directoryProvider, readers );
        }
        else {
          if ( trace )
            log.trace( "Valid shared IndexReader: {}" + directoryProvider.getDirectory() );
          directoryProviderLock.lock();
          try {
            //read the latest active one, the current one could be out of date and closed already
            //the latest active is guaranteed to be active because it's protected by the dp lock
            reader = activeSearchIndexReaders.get( directoryProvider );
View Full Code Here

  public IndexReader openReader(DirectoryProvider... directoryProviders) {
    int length = directoryProviders.length;
    IndexReader[] readers = new IndexReader[length];
    log.debug( "Opening IndexReader for directoryProviders: {}", length );
    for ( int index = 0; index < length; index++ ) {
      DirectoryProvider directoryProvider = directoryProviders[index];
      if ( log.isTraceEnabled() ) {
        log.trace( "Opening IndexReader from {}", directoryProvider.getDirectory() );
      }
      PerDirectoryLatestReader directoryLatestReader = currentReaders.get( directoryProvider );
      readers[index] = directoryLatestReader.refreshAndGet();
    }
    // don't use ReaderProviderHelper.buildMultiReader as we need our own cleanup.
View Full Code Here

 
  private static class AddSelectionDelegate implements DpSelectionDelegate {

    public void addAsPayLoadsToQueue(LuceneWork work,
        IndexShardingStrategy shardingStrategy, QueueProcessors queues) {
      DirectoryProvider provider = shardingStrategy.getDirectoryProviderForAddition(
          work.getEntityClass(),
          work.getId(),
          work.getIdInString(),
          work.getDocument()
      );
View Full Code Here

    if ( trace ) {
      log.trace( "Opening IndexReader for directoryProviders: {}", length );
    }

    for ( int index = 0; index < length; index++ ) {
      DirectoryProvider directoryProvider = directoryProviders[index];
      IndexReader reader;
      Lock directoryProviderLock = perDirectoryProviderManipulationLocks.get( directoryProvider );
      if ( trace ) {
        log.trace( "Opening IndexReader from {}", directoryProvider.getDirectory() );
      }
      directoryProviderLock.lock(); //needed for same problem as the double-checked locking
      try {
        reader = activeSearchIndexReaders.get( directoryProvider );
      }
      finally {
        directoryProviderLock.unlock();
      }
      if ( reader == null ) {
        if ( trace ) {
          log.trace( "No shared IndexReader, opening a new one: {}", directoryProvider.getDirectory() );
        }
        reader = replaceActiveReader( null, directoryProviderLock, directoryProvider, readers );
      }
      else {
        boolean isCurrent;
        try {
          isCurrent = reader.isCurrent();
        }
        catch ( IOException e ) {
          throw new SearchException( "Unable to read current status of Lucene IndexReader", e );
        }
        if ( !isCurrent ) {
          if ( trace ) {
            log.trace(
                "Out of date shared IndexReader found, opening a new one: {}",
                directoryProvider.getDirectory()
            );
          }
          IndexReader outOfDateReader = reader;
          reader = replaceActiveReader( outOfDateReader, directoryProviderLock, directoryProvider, readers );
        }
        else {
          if ( trace ) {
            log.trace( "Valid shared IndexReader: {}" + directoryProvider.getDirectory() );
          }
          directoryProviderLock.lock();
          try {
            //read the latest active one, the current one could be out of date and closed already
            //the latest active is guaranteed to be active because it's protected by the dp lock
View Full Code Here

TOP

Related Classes of org.hibernate.search.store.DirectoryProvider

Copyright © 2018 www.massapicom. 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.