Package org.hibernate.search

Examples of org.hibernate.search.SearchException


    if (!StringHelper.isEmpty( s )) {
      try{
        indexingParams.setTransactionMergeFactor(Integer.valueOf(s));
        indexingParams.setBatchMergeFactor(Integer.valueOf(s));
      } catch (NumberFormatException ne) {
        throw new SearchException("Invalid value for " + TRANSACTION + MERGE_FACTOR + ": " + s);
      }
    }

    s = indexProps.getProperty(TRANSACTION + MAX_MERGE_DOCS);
    if (!StringHelper.isEmpty( s )) {
      try{
        indexingParams.setTransactionMaxMergeDocs(Integer.valueOf(s));
        indexingParams.setBatchMaxMergeDocs(Integer.valueOf(s));
      } catch (NumberFormatException ne) {
        throw new SearchException("Invalid value for " + TRANSACTION + MAX_MERGE_DOCS + ": " + s);
      }
    }
   
    s = indexProps.getProperty(TRANSACTION + MAX_BUFFERED_DOCS);
    if (!StringHelper.isEmpty( s )) {
      try{
        indexingParams.setTransactionMaxBufferedDocs(Integer.valueOf(s));
        indexingParams.setBatchMaxBufferedDocs(Integer.valueOf(s));
      } catch (NumberFormatException ne) {
        throw new SearchException("Invalid value for " + TRANSACTION + MAX_BUFFERED_DOCS + ": " + s);
      }
    }   
       
    s = indexProps.getProperty(BATCH + MERGE_FACTOR);
    if (!StringHelper.isEmpty( s )) {
      try{
        indexingParams.setBatchMergeFactor(Integer.valueOf(s));
      } catch (NumberFormatException ne) {
        throw new SearchException("Invalid value for " + BATCH + MERGE_FACTOR + ": " + s);
      }
    }
   
    s = indexProps.getProperty(BATCH + MAX_MERGE_DOCS);
    if (!StringHelper.isEmpty( s )) {
      try{
        indexingParams.setBatchMaxMergeDocs(Integer.valueOf(s));
      } catch (NumberFormatException ne) {
        throw new SearchException("Invalid value for " + BATCH + MAX_MERGE_DOCS + ": " + s);
      }
    }
   
    s = indexProps.getProperty(BATCH + MAX_BUFFERED_DOCS);
    if (!StringHelper.isEmpty( s )) {
      try{
        indexingParams.setBatchMaxBufferedDocs(Integer.valueOf(s));
      } catch (NumberFormatException ne) {
        throw new SearchException("Invalid value for " + BATCH + MAX_BUFFERED_DOCS + ": " + s);
      }
    } 
    searchFactoryImplementor.addIndexingParmeters(provider, indexingParams);
  }
View Full Code Here


      ProjectionLoader loader = new ProjectionLoader();
      loader.init( session, searchFactoryImplementor, resultTransformer, indexProjection );
      return loader;
    }
    if ( criteria != null ) {
      if ( classes.length > 1 ) throw new SearchException( "Cannot mix criteria and multiple entity types" );
      if ( criteria instanceof CriteriaImpl ) {
        String targetEntity = ( (CriteriaImpl) criteria ).getEntityOrClassName();
        if ( classes.length == 1 && !classes[0].getName().equals( targetEntity ) ) {
          throw new SearchException( "Criteria query entity should match query entity" );
        }
        else {
          try {
            Class entityType = ReflectHelper.classForName( targetEntity );
            classes = new Class[] { entityType };
          }
          catch (ClassNotFoundException e) {
            throw new SearchException( "Unable to load entity class from criteria: " + targetEntity, e );
          }
        }
      }
      QueryLoader loader = new QueryLoader();
      loader.init( session, searchFactoryImplementor );
View Full Code Here

        Object instance;
        try {
          instance = implClass.newInstance();
        }
        catch (InstantiationException e) {
          throw new SearchException( "Unable to create @FullTextFilterDef: " + def.getImpl(), e );
        }
        catch (IllegalAccessException e) {
          throw new SearchException( "Unable to create @FullTextFilterDef: " + def.getImpl(), e );
        }
        for ( Map.Entry<String, Object> entry : filterDefinition.getParameters().entrySet() ) {
          def.invoke( entry.getKey(), instance, entry.getValue() );
        }
        if ( def.isCache() && def.getKeyMethod() == null && filterDefinition.getParameters().size() > 0 ) {
          throw new SearchException("Filter with parameters and no @Key method: " + filterDefinition.getName() );
        }
        FilterKey key = null;
        if ( def.isCache() ) {
          if ( def.getKeyMethod() == null ) {
            key = new FilterKey( ) {
              public int hashCode() {
                return getImpl().hashCode();
              }

              public boolean equals(Object obj) {
                if ( ! ( obj instanceof FilterKey ) ) return false;
                FilterKey that = (FilterKey) obj;
                return this.getImpl().equals( that.getImpl() );
              }
            };
          }
          else {
            try {
              key = (FilterKey) def.getKeyMethod().invoke( instance );
            }
            catch (IllegalAccessException e) {
              throw new SearchException("Unable to access @Key method: "
                  + def.getImpl().getName() + "." + def.getKeyMethod().getName() );
            }
            catch (InvocationTargetException e) {
              throw new SearchException("Unable to access @Key method: "
                  + def.getImpl().getName() + "." + def.getKeyMethod().getName() );
            }
            catch (ClassCastException e) {
              throw new SearchException("@Key method does not return FilterKey: "
                  + def.getImpl().getName() + "." + def.getKeyMethod().getName() );
            }
          }
          key.setImpl( def.getImpl() );
        }

        Filter filter = def.isCache() ?
            searchFactoryImplementor.getFilterCachingStrategy().getCachedFilter( key ) :
            null;
        if (filter == null) {
          if ( def.getFactoryMethod() != null ) {
            try {
              filter = (Filter) def.getFactoryMethod().invoke( instance );
            }
            catch (IllegalAccessException e) {
              throw new SearchException("Unable to access @Factory method: "
                  + def.getImpl().getName() + "." + def.getFactoryMethod().getName() );
            }
            catch (InvocationTargetException e) {
              throw new SearchException("Unable to access @Factory method: "
                  + def.getImpl().getName() + "." + def.getFactoryMethod().getName() );
            }
            catch (ClassCastException e) {
              throw new SearchException("@Key method does not return a org.apache.lucene.search.Filter class: "
                  + def.getImpl().getName() + "." + def.getFactoryMethod().getName() );
            }
          }
          else {
            try {
              filter = (Filter) instance;
            }
            catch (ClassCastException e) {
              throw new SearchException("@Key method does not return a org.apache.lucene.search.Filter class: "
                  + def.getImpl().getName() + "." + def.getFactoryMethod().getName() );
            }
          }
          if ( def.isCache() ) searchFactoryImplementor.getFilterCachingStrategy().addCachedFilter( key, filter );
        }
View Full Code Here

    filterDefinition = new FullTextFilterImpl();
    filterDefinition.setName( name );
    FilterDef filterDef = getSearchFactoryImplementor().getFilterDefinition( name );
    if (filterDef == null) {
      throw new SearchException("Unkown @FullTextFilter: " + name);
    }
    filterDefinitions.put(name, filterDefinition);
    return filterDefinition;
  }
View Full Code Here

        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().toString() );
          IndexReader outOfDateReader = reader;
View Full Code Here

     */
    try {
      reader = IndexReader.open( directoryProvider.getDirectory() );
    }
    catch (IOException e) {
      throw new SearchException( "Unable to open Lucene IndexReader", e );
    }
    directoryProviderLock.lock();
    try {
      //since not protected by a lock, other ones can have been added
      oldReader = activeSearchIndexReaders.put( directoryProvider, reader );
      semaphoreIndexReaderLock.lock();
      try {
        searchIndexReaderSemaphores.put( reader, new ReaderData( 1, directoryProvider ) );
        if ( trace ) log.trace( "Semaphore: 1 for " + reader );
        if ( outOfDateReader != null ) {
          ReaderData readerData = searchIndexReaderSemaphores.get( outOfDateReader );
          if ( readerData == null ) {
            closeOutOfDateReader = false; //already removed by another prevous thread
          }
          else if ( readerData.semaphore == 0 ) {
            searchIndexReaderSemaphores.remove( outOfDateReader );
            closeOutOfDateReader = true;
          }
          else {
            closeOutOfDateReader = false;
          }
        }

        if ( oldReader != null && oldReader != outOfDateReader ) {
          ReaderData readerData = searchIndexReaderSemaphores.get( oldReader );
          if ( readerData == null ) {
            log.warn( "Semaphore should not be null" );
            closeOldReader = true; //TODO should be true or false?
          }
          else if ( readerData.semaphore == 0 ) {
            searchIndexReaderSemaphores.remove( oldReader );
            closeOldReader = true;
          }
          else {
            closeOldReader = false;
          }
        }
      }
      finally {
        semaphoreIndexReaderLock.unlock();
      }
    }
    finally {
      directoryProviderLock.unlock();
    }
    if ( closeOutOfDateReader ) {
      if ( trace ) log.trace( "Closing out of date IndexReader " + outOfDateReader );
      try {
        outOfDateReader.close();
      }
      catch (IOException e) {
        clean( new SearchException( "Unable to close Lucene IndexReader", e ), readers );
      }
    }
    if ( closeOldReader ) {
      if ( trace ) log.trace( "Closing old IndexReader " + oldReader );
      try {
        oldReader.close();
      }
      catch (IOException e) {
        clean( new SearchException( "Unable to close Lucene IndexReader", e ), readers );
      }
    }
    return reader;
  }
View Full Code Here

    if ( reader instanceof MultiReader ) {
      try {
        readers = (IndexReader[]) subReadersField.get( reader );
      }
      catch (IllegalAccessException e) {
        throw new SearchException( "Incompatible version of Lucene: MultiReader.subReaders not accessible", e );
      }
      if ( trace ) log.trace( "Closing MultiReader: " + reader );
    }
    else {
      throw new AssertionFailure( "Everything should be wrapped in a MultiReader" );
View Full Code Here

      try {
        subReadersField = MultiReader.class.getDeclaredField( "subReaders" );
        if ( !subReadersField.isAccessible() ) subReadersField.setAccessible( true );
      }
      catch (NoSuchFieldException e) {
        throw new SearchException( "Incompatible version of Lucene: MultiReader.subReaders not accessible", e );
      }
    }
    Set<DirectoryProvider> providers = searchFactoryImplementor.getLockableDirectoryProviders().keySet();
    perDirectoryProviderManipulationLocks = new HashMap<DirectoryProvider, Lock>( providers.size() );
    for (DirectoryProvider dp : providers) {
View Full Code Here

      try {
        Class shardigStrategyClass = ReflectHelper.classForName( shardingStrategyName, this.getClass() );
        shardingStrategy = (IndexShardingStrategy) shardigStrategyClass.newInstance();
      }
      catch (ClassNotFoundException e) {
        throw new SearchException("Unable to find ShardingStrategy class " + shardingStrategyName + " for " + directoryProviderName, e);
      }
      catch (IllegalAccessException e) {
        throw new SearchException("Unable to create instance of ShardingStrategy class " + shardingStrategyName
            + " Be sure to have a no-arg constructor", e);
      }
      catch (InstantiationException e) {
        throw new SearchException("Unable to create instance of ShardingStrategy class " + shardingStrategyName
            + " Be sure to have a no-arg constructor", e);
      }
      catch (ClassCastException e) {
        throw new SearchException("ShardingStrategy class does not implements DirecotryProviderShardingStrategy: "
            + shardingStrategyName, e);
      }
    }
    shardingStrategy.initialize( shardingProperties, providers );
View Full Code Here

    if (!StringHelper.isEmpty( s )) {
      try{
        indexingParams.setTransactionMergeFactor(Integer.valueOf(s));
        indexingParams.setBatchMergeFactor(Integer.valueOf(s));
      } catch (NumberFormatException ne) {
        throw new SearchException("Invalid value for " + TRANSACTION + MERGE_FACTOR + ": " + s);
      }
    }

    s = indexProps.getProperty(TRANSACTION + MAX_MERGE_DOCS);
    if (!StringHelper.isEmpty( s )) {
      try{
        indexingParams.setTransactionMaxMergeDocs(Integer.valueOf(s));
        indexingParams.setBatchMaxMergeDocs(Integer.valueOf(s));
      } catch (NumberFormatException ne) {
        throw new SearchException("Invalid value for " + TRANSACTION + MAX_MERGE_DOCS + ": " + s);
      }
    }
   
    s = indexProps.getProperty(TRANSACTION + MAX_BUFFERED_DOCS);
    if (!StringHelper.isEmpty( s )) {
      try{
        indexingParams.setTransactionMaxBufferedDocs(Integer.valueOf(s));
        indexingParams.setBatchMaxBufferedDocs(Integer.valueOf(s));
      } catch (NumberFormatException ne) {
        throw new SearchException("Invalid value for " + TRANSACTION + MAX_BUFFERED_DOCS + ": " + s);
      }
    }   
       
    s = indexProps.getProperty(BATCH + MERGE_FACTOR);
    if (!StringHelper.isEmpty( s )) {
      try{
        indexingParams.setBatchMergeFactor(Integer.valueOf(s));
      } catch (NumberFormatException ne) {
        throw new SearchException("Invalid value for " + BATCH + MERGE_FACTOR + ": " + s);
      }
    }
   
    s = indexProps.getProperty(BATCH + MAX_MERGE_DOCS);
    if (!StringHelper.isEmpty( s )) {
      try{
        indexingParams.setBatchMaxMergeDocs(Integer.valueOf(s));
      } catch (NumberFormatException ne) {
        throw new SearchException("Invalid value for " + BATCH + MAX_MERGE_DOCS + ": " + s);
      }
    }
   
    s = indexProps.getProperty(BATCH + MAX_BUFFERED_DOCS);
    if (!StringHelper.isEmpty( s )) {
      try{
        indexingParams.setBatchMaxBufferedDocs(Integer.valueOf(s));
      } catch (NumberFormatException ne) {
        throw new SearchException("Invalid value for " + BATCH + MAX_BUFFERED_DOCS + ": " + s);
      }
    } 
    searchFactoryImplementor.addIndexingParmeters(provider, indexingParams);
  }
View Full Code Here

TOP

Related Classes of org.hibernate.search.SearchException

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.