[hibernate-commits] Hibernate SVN: r15374 - in search/trunk/src: java/org/hibernate/search/backend and 9 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Oct 22 17:36:38 EDT 2008


Author: epbernard
Date: 2008-10-22 17:36:38 -0400 (Wed, 22 Oct 2008)
New Revision: 15374

Modified:
   search/trunk/src/java/org/hibernate/search/FullTextSession.java
   search/trunk/src/java/org/hibernate/search/SearchFactory.java
   search/trunk/src/java/org/hibernate/search/backend/Workspace.java
   search/trunk/src/java/org/hibernate/search/backend/impl/BatchedQueueingProcessor.java
   search/trunk/src/java/org/hibernate/search/backend/impl/lucene/LuceneBackendQueueProcessor.java
   search/trunk/src/java/org/hibernate/search/backend/impl/lucene/works/DeleteWorkDelegate.java
   search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java
   search/trunk/src/java/org/hibernate/search/engine/MultiClassesQueryLoader.java
   search/trunk/src/java/org/hibernate/search/engine/ObjectLoaderHelper.java
   search/trunk/src/java/org/hibernate/search/engine/SearchFactoryImplementor.java
   search/trunk/src/java/org/hibernate/search/event/FullTextIndexEventListener.java
   search/trunk/src/java/org/hibernate/search/impl/FullTextSessionImpl.java
   search/trunk/src/java/org/hibernate/search/impl/SearchFactoryImpl.java
   search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java
   search/trunk/src/java/org/hibernate/search/reader/SharedReaderProvider.java
   search/trunk/src/java/org/hibernate/search/reader/SharingBufferReaderProvider.java
   search/trunk/src/test/org/hibernate/search/test/configuration/ShardsConfigurationTest.java
Log:
HSEARCH-282 more use of generics and less warnings

Modified: search/trunk/src/java/org/hibernate/search/FullTextSession.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/FullTextSession.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/FullTextSession.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -16,7 +16,7 @@
 	 * of type <code>entities</code> and their respective subclasses.
 	 * If no entity is provided, no type filtering is done.
 	 */
-	FullTextQuery createFullTextQuery(org.apache.lucene.search.Query luceneQuery, Class... entities);
+	FullTextQuery createFullTextQuery(org.apache.lucene.search.Query luceneQuery, Class<?>... entities);
 
 	/**
 	 * Force the (re)indexing of a given <b>managed</b> object.
@@ -41,7 +41,7 @@
 	 *
 	 * @throws IllegalArgumentException if entityType is null or not an @Indexed entity type
 	 */
-	public void purge(Class entityType, Serializable id);
+	public void purge(Class<?> entityType, Serializable id);
 
 	/**
 	 * Remove all entities from a particular class of an index.
@@ -49,7 +49,7 @@
 	 * @param entityType
 	 * @throws IllegalArgumentException if entityType is null or not an @Indexed entity type
 	 */
-	public void purgeAll(Class entityType);
+	public void purgeAll(Class<?> entityType);
 
 	/**
 	 * flush full text changes to the index

Modified: search/trunk/src/java/org/hibernate/search/SearchFactory.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/SearchFactory.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/SearchFactory.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -23,7 +23,7 @@
 	 * But if the given entity is configured to use sharded indexes, then multiple
 	 * elements will be returned. In this case all of them should be considered.
 	 */
-	DirectoryProvider[] getDirectoryProviders(Class entity);
+	DirectoryProvider[] getDirectoryProviders(Class<?> entity);
 
 	/**
 	 * Optimize all indexes
@@ -51,5 +51,5 @@
 	 * @throws IllegalArgumentException in case <code>clazz == null</code> or the specified
 	 * class is not an indexed entity.
 	 */
-	Analyzer getAnalyzer(Class clazz);
+	Analyzer getAnalyzer(Class<?> clazz);
 }

Modified: search/trunk/src/java/org/hibernate/search/backend/Workspace.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/backend/Workspace.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/backend/Workspace.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -49,7 +49,7 @@
 	private final DirectoryProvider directoryProvider;
 	private final OptimizerStrategy optimizerStrategy;
 	private final ReentrantLock lock;
-	private final Set<Class> entitiesInDirectory;
+	private final Set<Class<?>> entitiesInDirectory;
 	private final LuceneIndexingParameters indexingParams;
 
 	// variable state:
@@ -69,7 +69,7 @@
 	 */
 	private final AtomicLong operations = new AtomicLong( 0L );
 	
-	public Workspace(SearchFactoryImplementor searchFactoryImplementor, DirectoryProvider provider) {
+	public Workspace(SearchFactoryImplementor searchFactoryImplementor, DirectoryProvider<?> provider) {
 		this.searchFactoryImplementor = searchFactoryImplementor;
 		this.directoryProvider = provider;
 		this.optimizerStrategy = searchFactoryImplementor.getOptimizerStrategy( directoryProvider );
@@ -78,8 +78,8 @@
 		this.lock = searchFactoryImplementor.getDirectoryProviderLock( provider );
 	}
 
-	public DocumentBuilder getDocumentBuilder(Class entity) {
-		return searchFactoryImplementor.getDocumentBuilders().get( entity );
+	public <T> DocumentBuilder<T> getDocumentBuilder(Class<T> entity) {
+		return searchFactoryImplementor.getDocumentBuilder( entity );
 	}
 
 	/**
@@ -173,6 +173,7 @@
 			return writer;
 		try {
 			// don't care about the Analyzer as it will be selected during usage of IndexWriter.
+			//FIXME use the non deprecated constructor => requires to call #Commit()
 			writer = new IndexWriter( directoryProvider.getDirectory(), SIMPLE_ANALYZER, false ); // has been created at init time
 			indexingParams.applyToWriter( writer, batchmode );
 			log.trace( "IndexWriter opened" );
@@ -220,7 +221,7 @@
 	 * @return The unmodifiable set of entity types being indexed
 	 * in the underlying Lucene Directory backing this Workspace.
 	 */
-	public Set<Class> getEntitiesInDirectory() {
+	public Set<Class<?>> getEntitiesInDirectory() {
 		return entitiesInDirectory;
 	}
 	

Modified: search/trunk/src/java/org/hibernate/search/backend/impl/BatchedQueueingProcessor.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/backend/impl/BatchedQueueingProcessor.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/backend/impl/BatchedQueueingProcessor.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -134,17 +134,23 @@
 			if ( work != null) {
 				if ( layer.isRightLayer( work.getType() ) ) {
 					queue.set( i, null ); // help GC and avoid 2 loaded queues in memory
-					Class entityClass = work.getEntityClass() != null ?
-								work.getEntityClass() :
-								Hibernate.getClass( work.getEntity() );
-					DocumentBuilder<Object> builder = searchFactoryImplementor.getDocumentBuilders().get( entityClass );
-					if ( builder == null ) continue; //or exception?
-					builder.addWorkToQueue(entityClass, work.getEntity(), work.getId(), work.getType(), luceneQueue, searchFactoryImplementor );
+					addWorkToBuilderQueue( luceneQueue, work );
 				}
 			}
 		}
 	}
 
+	private <T> void addWorkToBuilderQueue(List<LuceneWork> luceneQueue, Work work) {
+		@SuppressWarnings( "unchecked" )
+		Class<T> entityClass = work.getEntityClass() != null ?
+					work.getEntityClass() :
+					Hibernate.getClass( work.getEntity() );
+		DocumentBuilder<T> builder = searchFactoryImplementor.getDocumentBuilder( entityClass );
+		if ( builder == null ) return;
+		//TODO remove casting when Work is Work<T>
+		builder.addWorkToQueue(entityClass, (T) work.getEntity(), work.getId(), work.getType(), luceneQueue, searchFactoryImplementor );
+	}
+
 	//TODO implements parallel batchWorkers (one per Directory)
 	public void performWorks(WorkQueue workQueue) {
 		Runnable processor = backendQueueProcessorFactory.getProcessor( workQueue.getSealedQueue() );

Modified: search/trunk/src/java/org/hibernate/search/backend/impl/lucene/LuceneBackendQueueProcessor.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/backend/impl/lucene/LuceneBackendQueueProcessor.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/backend/impl/lucene/LuceneBackendQueueProcessor.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -38,7 +38,8 @@
 		QueueProcessors processors = new QueueProcessors( visitorsMap );
 		// divide tasks in parts, adding to QueueProcessors by affected Directory.
 		for ( LuceneWork work : queue ) {
-			DocumentBuilder documentBuilder = searchFactoryImplementor.getDocumentBuilders().get( work.getEntityClass() );
+			final Class<?> entityType = work.getEntityClass();
+			DocumentBuilder<?> documentBuilder = searchFactoryImplementor.getDocumentBuilder( entityType );
 			IndexShardingStrategy shardingStrategy = documentBuilder.getDirectoryProviderSelectionStrategy();
 			work.getWorkDelegate( providerSelectionVisitor ).addAsPayLoadsToQueue( work, shardingStrategy, processors );
 		}

Modified: search/trunk/src/java/org/hibernate/search/backend/impl/lucene/works/DeleteWorkDelegate.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/backend/impl/lucene/works/DeleteWorkDelegate.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/backend/impl/lucene/works/DeleteWorkDelegate.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -42,15 +42,16 @@
 	}
 
 	public void performWork(LuceneWork work, IndexWriter writer) {
-		log.trace( "Removing {}#{} by query.", work.getEntityClass(), work.getId() );
-		DocumentBuilder builder = workspace.getDocumentBuilder( work.getEntityClass() );
+		final Class<?> entityType = work.getEntityClass();
+		log.trace( "Removing {}#{} by query.", entityType, work.getId() );
+		DocumentBuilder<?> builder = workspace.getDocumentBuilder( entityType );
 
 		BooleanQuery entityDeletionQuery = new BooleanQuery();
 
 		TermQuery idQueryTerm = new TermQuery( builder.getTerm( work.getId() ) );
 		entityDeletionQuery.add( idQueryTerm, BooleanClause.Occur.MUST );
 
-		Term classNameQueryTerm =  new Term( DocumentBuilder.CLASS_FIELDNAME, work.getEntityClass().getName() );
+		Term classNameQueryTerm =  new Term( DocumentBuilder.CLASS_FIELDNAME, entityType.getName() );
 		TermQuery classNameQuery = new TermQuery( classNameQueryTerm );
 		entityDeletionQuery.add( classNameQuery, BooleanClause.Occur.MUST );
 
@@ -58,7 +59,7 @@
 			writer.deleteDocuments( entityDeletionQuery );
 		}
 		catch ( Exception e ) {
-			String message = "Unable to remove " + work.getEntityClass() + "#" + work.getId() + " from index.";
+			String message = "Unable to remove " + entityType + "#" + work.getId() + " from index.";
 			throw new SearchException( message, e );
 		}
 	}
@@ -75,15 +76,16 @@
 		 * We can only delete by term, and the index doesn't have a term that
 		 * uniquely identify the entry. See logic below
 		 */
-		log.trace( "Removing {}#{} from Lucene index.", work.getEntityClass(), work.getId() );
-		DocumentBuilder builder = workspace.getDocumentBuilder( work.getEntityClass() );
+		final Class<?> entityType = work.getEntityClass();
+		log.trace( "Removing {}#{} from Lucene index.", entityType, work.getId() );
+		DocumentBuilder<?> builder = workspace.getDocumentBuilder( entityType );
 		Term term = builder.getTerm( work.getId() );
 		TermDocs termDocs = null;
 		try {
 			//TODO is there a faster way?
 			//TODO include TermDocs into the workspace?
 			termDocs = reader.termDocs( term );
-			String entityName = work.getEntityClass().getName();
+			String entityName = entityType.getName();
 			while ( termDocs.next() ) {
 				int docIndex = termDocs.doc();
 				if ( entityName.equals( reader.document( docIndex ).get( DocumentBuilder.CLASS_FIELDNAME ) ) ) {
@@ -97,7 +99,7 @@
 		catch ( Exception e ) {
 			throw new SearchException(
 					"Unable to remove from Lucene index: "
-							+ work.getEntityClass() + "#" + work.getId(), e
+							+ entityType + "#" + work.getId(), e
 			);
 		}
 		finally {

Modified: search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -80,7 +80,7 @@
 	private Float idBoost;
 	public static final String CLASS_FIELDNAME = "_hibernate_class";
 	private TwoWayFieldBridge idBridge;
-	private Set<Class> mappedSubclasses = new HashSet<Class>();
+	private Set<Class<?>> mappedSubclasses = new HashSet<Class<?>>();
 	private ReflectionManager reflectionManager;
 	private int level = 0;
 	private int maxLevel = Integer.MAX_VALUE;
@@ -592,8 +592,8 @@
 			if ( member.isArray() ) {
 				for (Object arrayValue : (Object[]) value) {
 					//highly inneficient but safe wrt the actual targeted class
-					Class valueClass = Hibernate.getClass( arrayValue );
-					DocumentBuilder builder = searchFactoryImplementor.getDocumentBuilders().get( valueClass );
+					Class<?> valueClass = Hibernate.getClass( arrayValue );
+					DocumentBuilder<?> builder = searchFactoryImplementor.getDocumentBuilder( valueClass );
 					if ( builder == null ) continue;
 					processContainedInValue( arrayValue, queue, valueClass, builder, searchFactoryImplementor );
 				}
@@ -609,15 +609,15 @@
 				}
 				for (Object collectionValue : collection) {
 					//highly inneficient but safe wrt the actual targeted class
-					Class valueClass = Hibernate.getClass( collectionValue );
-					DocumentBuilder builder = searchFactoryImplementor.getDocumentBuilders().get( valueClass );
+					Class<?> valueClass = Hibernate.getClass( collectionValue );
+					DocumentBuilder<?> builder = searchFactoryImplementor.getDocumentBuilder( valueClass );
 					if ( builder == null ) continue;
 					processContainedInValue( collectionValue, queue, valueClass, builder, searchFactoryImplementor );
 				}
 			}
 			else {
-				Class valueClass = Hibernate.getClass( value );
-				DocumentBuilder builder = searchFactoryImplementor.getDocumentBuilders().get( valueClass );
+				Class<?> valueClass = Hibernate.getClass( value );
+				DocumentBuilder<?> builder = searchFactoryImplementor.getDocumentBuilder( valueClass );
 				if ( builder == null ) continue;
 				processContainedInValue( value, queue, valueClass, builder, searchFactoryImplementor );
 			}
@@ -753,14 +753,14 @@
 		}
 	}
 
-	public static Serializable getDocumentId(SearchFactoryImplementor searchFactoryImplementor, Class clazz, Document document) {
-		DocumentBuilder builder = searchFactoryImplementor.getDocumentBuilders().get( clazz );
+	public static Serializable getDocumentId(SearchFactoryImplementor searchFactoryImplementor, Class<?> clazz, Document document) {
+		DocumentBuilder<?> builder = searchFactoryImplementor.getDocumentBuilder( clazz );
 		if ( builder == null ) throw new SearchException( "No Lucene configuration set up for: " + clazz.getName() );
 		return (Serializable) builder.getIdBridge().get( builder.getIdKeywordName(), document );
 	}
 
-	public static Object[] getDocumentFields(SearchFactoryImplementor searchFactoryImplementor, Class clazz, Document document, String[] fields) {
-		DocumentBuilder builder = searchFactoryImplementor.getDocumentBuilders().get( clazz );
+	public static Object[] getDocumentFields(SearchFactoryImplementor searchFactoryImplementor, Class<?> clazz, Document document, String[] fields) {
+		DocumentBuilder<?> builder = searchFactoryImplementor.getDocumentBuilder( clazz );
 		if ( builder == null ) throw new SearchException( "No Lucene configuration set up for: " + clazz.getName() );
 		final int fieldNbr = fields.length;
 		Object[] result = new Object[fieldNbr];
@@ -824,10 +824,10 @@
 		return -1;
 	}
 
-	public void postInitialize(Set<Class> indexedClasses) {
+	public void postInitialize(Set<Class<?>> indexedClasses) {
 		//this method does not requires synchronization
 		Class plainClass = reflectionManager.toClass( beanClass );
-		Set<Class> tempMappedSubclasses = new HashSet<Class>();
+		Set<Class<?>> tempMappedSubclasses = new HashSet<Class<?>>();
 		//together with the caller this creates a o(2), but I think it's still faster than create the up hierarchy for each class
 		for (Class currentClass : indexedClasses) {
 			if ( plainClass.isAssignableFrom( currentClass ) ) tempMappedSubclasses.add( currentClass );
@@ -845,7 +845,7 @@
 	}
 
 
-	public Set<Class> getMappedSubclasses() {
+	public Set<Class<?>> getMappedSubclasses() {
 		return mappedSubclasses;
 	}
 

Modified: search/trunk/src/java/org/hibernate/search/engine/MultiClassesQueryLoader.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/MultiClassesQueryLoader.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/engine/MultiClassesQueryLoader.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -37,7 +37,7 @@
 		if ( entityTypes.length == 0 ) {
 			//support all classes
 			safeEntityTypes = new ArrayList<Class>();
-			for( Map.Entry<Class, DocumentBuilder<Object>> entry : searchFactoryImplementor.getDocumentBuilders().entrySet() ) {
+			for( Map.Entry<Class<?>, DocumentBuilder<?>> entry : searchFactoryImplementor.getDocumentBuilders().entrySet() ) {
 				//get only root entities to limit queries
 				if ( entry.getValue().isRoot() ) {
 					safeEntityTypes.add( entry.getKey() );
@@ -108,14 +108,14 @@
 	}
 
 	private static class RootEntityMetadata {
-		public final Class rootEntity;
-		public final Set<Class> mappedSubclasses;
+		public final Class<?> rootEntity;
+		public final Set<Class<?>> mappedSubclasses;
 		private final Criteria criteria;
 		public final boolean useObjectLoader;
 
-		RootEntityMetadata(Class rootEntity, SearchFactoryImplementor searchFactoryImplementor, Session session) {
+		RootEntityMetadata(Class<?> rootEntity, SearchFactoryImplementor searchFactoryImplementor, Session session) {
 			this.rootEntity = rootEntity;
-			DocumentBuilder provider = searchFactoryImplementor.getDocumentBuilders().get( rootEntity );
+			DocumentBuilder<?> provider = searchFactoryImplementor.getDocumentBuilder( rootEntity );
 			if ( provider == null) throw new AssertionFailure("Provider not found for class: " + rootEntity);
 			this.mappedSubclasses = provider.getMappedSubclasses();
 			this.criteria = session.createCriteria( rootEntity );

Modified: search/trunk/src/java/org/hibernate/search/engine/ObjectLoaderHelper.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/ObjectLoaderHelper.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/engine/ObjectLoaderHelper.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -41,12 +41,12 @@
 		return maybeProxy;
 	}
 
-	public static void initializeObjects(EntityInfo[] entityInfos, Criteria criteria, Class entityType,
+	public static void initializeObjects(EntityInfo[] entityInfos, Criteria criteria, Class<?> entityType,
 										 SearchFactoryImplementor searchFactoryImplementor) {
 		final int maxResults = entityInfos.length;
 		if ( maxResults == 0 ) return;
 
-		DocumentBuilder builder = searchFactoryImplementor.getDocumentBuilders().get( entityType );
+		DocumentBuilder<?> builder = searchFactoryImplementor.getDocumentBuilder( entityType );
 		String idName = builder.getIdentifierName();
 		int loop = maxResults / MAX_IN_CLAUSE;
 		boolean exact = maxResults % MAX_IN_CLAUSE == 0;

Modified: search/trunk/src/java/org/hibernate/search/engine/SearchFactoryImplementor.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/SearchFactoryImplementor.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/engine/SearchFactoryImplementor.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -25,8 +25,10 @@
 
 	void setBackendQueueProcessorFactory(BackendQueueProcessorFactory backendQueueProcessorFactory);
 
-	Map<Class, DocumentBuilder<Object>> getDocumentBuilders();
+	Map<Class<?>, DocumentBuilder<?>> getDocumentBuilders();
 
+	<T> DocumentBuilder<T> getDocumentBuilder(Class<T> entityType);
+
 	Worker getWorker();
 
 	void addOptimizerStrategy(DirectoryProvider<?> provider, OptimizerStrategy optimizerStrategy);
@@ -45,13 +47,13 @@
 
 	void close();
 
-	void addClassToDirectoryProvider(Class clazz, DirectoryProvider<?> directoryProvider);
+	void addClassToDirectoryProvider(Class<?> clazz, DirectoryProvider<?> directoryProvider);
 
-	Set<Class> getClassesInDirectoryProvider(DirectoryProvider<?> directoryProvider);
+	Set<Class<?>> getClassesInDirectoryProvider(DirectoryProvider<?> directoryProvider);
 
-	Set<DirectoryProvider> getDirectoryProviders();
+	Set<DirectoryProvider<?>> getDirectoryProviders();
 
-	ReentrantLock getDirectoryProviderLock(DirectoryProvider dp);
+	ReentrantLock getDirectoryProviderLock(DirectoryProvider<?> dp);
 
 	void addDirectoryProvider(DirectoryProvider<?> provider);
 	

Modified: search/trunk/src/java/org/hibernate/search/event/FullTextIndexEventListener.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/event/FullTextIndexEventListener.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/event/FullTextIndexEventListener.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -80,7 +80,7 @@
 	public void onPostInsert(PostInsertEvent event) {
 		if ( used ) {
 			final Object entity = event.getEntity();
-			DocumentBuilder<Object> builder = searchFactoryImplementor.getDocumentBuilders().get( entity.getClass() );
+			DocumentBuilder<?> builder = searchFactoryImplementor.getDocumentBuilder( entity.getClass() );
 			//not strictly necessary but a small optimization
 			if ( builder != null ) {
 				Serializable id = event.getId();
@@ -93,7 +93,7 @@
 		if ( used ) {
 			final Object entity = event.getEntity();
 			//not strictly necessary but a small optimization
-			DocumentBuilder<Object> builder = searchFactoryImplementor.getDocumentBuilders().get( entity.getClass() );
+			DocumentBuilder<?> builder = searchFactoryImplementor.getDocumentBuilder( entity.getClass() );
 			if ( builder != null ) {
 				Serializable id = event.getId();
 				processWork( entity, id, WorkType.UPDATE, event );

Modified: search/trunk/src/java/org/hibernate/search/impl/FullTextSessionImpl.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/impl/FullTextSessionImpl.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/impl/FullTextSessionImpl.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -61,7 +61,6 @@
  * @author John Griffin
  * @author Hardy Ferentschik
  */
- at SuppressWarnings( { "serial", "unchecked" } )
 public class FullTextSessionImpl implements FullTextSession, SessionImplementor {
 	private final Session session;
 	private final SessionImplementor sessionImplementor;
@@ -107,14 +106,13 @@
 	 * @param id
 	 * @throws IllegalArgumentException if entityType is null or not an @Indexed entity type
 	 */
-	public void purge(Class entityType, Serializable id) {
+	public void purge(Class<?> entityType, Serializable id) {
 		if ( entityType == null ) return;
 		SearchFactoryImplementor searchFactoryImplementor = getSearchFactoryImplementor();
 		// not strictly necessary but a small optimization plus let's make sure the
 		// client didn't mess something up.
-		Map<Class, DocumentBuilder<Object>> builders = searchFactoryImplementor.getDocumentBuilders();
-		DocumentBuilder<Object> builder = builders.get( entityType );
 
+		DocumentBuilder<?> builder = searchFactoryImplementor.getDocumentBuilder( entityType );
 		if ( builder == null ) {
 			throw new IllegalArgumentException( entityType.getName() + " is not a mapped entity (don't forget to add @Indexed)" );
 		}
@@ -139,12 +137,12 @@
 	 */
 	public void index(Object entity) {
 		if ( entity == null ) throw new IllegalArgumentException( "Entity to index should not be null" );
-		;
-		Class clazz = Hibernate.getClass( entity );
+
+		Class<?> clazz = Hibernate.getClass( entity );
 		//TODO cache that at the FTSession level
 		SearchFactoryImplementor searchFactoryImplementor = getSearchFactoryImplementor();
 		//not strictly necessary but a small optimization
-		DocumentBuilder<Object> builder = searchFactoryImplementor.getDocumentBuilders().get( clazz );
+		DocumentBuilder<?> builder = searchFactoryImplementor.getDocumentBuilder( clazz );
 		if ( builder == null ) {
 			throw new IllegalArgumentException( "Entity to index not an @Indexed entity: " + entity.getClass().getName() );
 		}

Modified: search/trunk/src/java/org/hibernate/search/impl/SearchFactoryImpl.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/impl/SearchFactoryImpl.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/impl/SearchFactoryImpl.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -65,9 +65,9 @@
 
 	private static final Logger log = LoggerFactory.make();
 
-	private final Map<Class, DocumentBuilder<Object>> documentBuilders = new HashMap<Class, DocumentBuilder<Object>>();
+	private final Map<Class<?>, DocumentBuilder<?>> documentBuilders = new HashMap<Class<?>, DocumentBuilder<?>>();
 	//keep track of the index modifiers per DirectoryProvider since multiple entity can use the same directory provider
-	private final Map<DirectoryProvider, DirectoryProviderData> dirProviderData = new HashMap<DirectoryProvider, DirectoryProviderData>();
+	private final Map<DirectoryProvider<?>, DirectoryProviderData> dirProviderData = new HashMap<DirectoryProvider<?>, DirectoryProviderData>();
 	private final Worker worker;
 	private final ReaderProvider readerProvider;
 	private BackendQueueProcessorFactory backendQueueProcessorFactory;
@@ -113,7 +113,7 @@
 		this.indexingStrategy = defineIndexingStrategy( cfg ); //need to be done before the document builds
 		initDocumentBuilders( cfg, reflectionManager );
 
-		Set<Class> indexedClasses = documentBuilders.keySet();
+		Set<Class<?>> indexedClasses = documentBuilders.keySet();
 		for (DocumentBuilder builder : documentBuilders.values()) {
 			builder.postInitialize( indexedClasses );
 		}
@@ -166,7 +166,7 @@
 		}
 	}
 
-	public void addClassToDirectoryProvider(Class clazz, DirectoryProvider<?> directoryProvider) {
+	public void addClassToDirectoryProvider(Class<?> clazz, DirectoryProvider<?> directoryProvider) {
 		//no need to set a read barrier, we only use this class in the init thread
 		DirectoryProviderData data = dirProviderData.get(directoryProvider);
 		if (data == null) {
@@ -176,7 +176,7 @@
 		data.classes.add(clazz);
 	}
 
-	public Set<Class> getClassesInDirectoryProvider(DirectoryProvider<?> directoryProvider) {
+	public Set<Class<?>> getClassesInDirectoryProvider(DirectoryProvider<?> directoryProvider) {
 		if (barrier != 0) { } //read barrier
 		return Collections.unmodifiableSet( dirProviderData.get(directoryProvider).classes );
 	}
@@ -237,12 +237,17 @@
 	}
 
 
-	public Map<Class, DocumentBuilder<Object>> getDocumentBuilders() {
+	public Map<Class<?>, DocumentBuilder<?>> getDocumentBuilders() {
 		if (barrier != 0) { } //read barrier
 		return documentBuilders;
 	}
 
-	public Set<DirectoryProvider> getDirectoryProviders() {
+	@SuppressWarnings( "unckecked" )
+	public <T> DocumentBuilder<T> getDocumentBuilder(Class<T> entityType) {
+		return ( DocumentBuilder<T> ) documentBuilders.get( entityType );
+	}
+
+	public Set<DirectoryProvider<?>> getDirectoryProviders() {
 		if (barrier != 0) { } //read barrier
 		return this.dirProviderData.keySet();
 	}
@@ -282,15 +287,15 @@
 		return readerProvider;
 	}
 
-	public DirectoryProvider[] getDirectoryProviders(Class entity) {
+	public DirectoryProvider[] getDirectoryProviders(Class<?> entity) {
 		if (barrier != 0) {} //read barrier
-		DocumentBuilder<Object> documentBuilder = getDocumentBuilders().get( entity );
+		DocumentBuilder<?> documentBuilder = getDocumentBuilder( entity );
 		return documentBuilder == null ? null : documentBuilder.getDirectoryProviders();
 	}
 
 	public void optimize() {
 		if (barrier != 0) {} //read barrier
-		Set<Class> clazzs = getDocumentBuilders().keySet();
+		Set<Class<?>> clazzs = getDocumentBuilders().keySet();
 		for (Class clazz : clazzs) {
 			optimize( clazz );
 		}
@@ -318,7 +323,7 @@
 			throw new IllegalArgumentException( "A class has to be specified for retrieving a scoped analyzer" );
 		}
 		
-		DocumentBuilder<Object> builder = documentBuilders.get( clazz );
+		DocumentBuilder<?> builder = documentBuilders.get( clazz );
 		if ( builder == null ) {
 			throw new IllegalArgumentException( "Entity for which to retrieve the scoped analyzer is not an @Indexed entity: " + clazz.getName() );
 		}
@@ -393,10 +398,10 @@
 	private static class DirectoryProviderData {
 		public final ReentrantLock dirLock = new ReentrantLock();
 		public OptimizerStrategy optimizerStrategy;
-		public Set<Class> classes = new HashSet<Class>(2);
+		public Set<Class<?>> classes = new HashSet<Class<?>>(2);
 	}
 
-	public ReentrantLock getDirectoryProviderLock(DirectoryProvider dp) {
+	public ReentrantLock getDirectoryProviderLock(DirectoryProvider<?> dp) {
 		if (barrier != 0) {} //read barrier
 		return this.dirProviderData.get( dp ).dirLock;
 	}

Modified: search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -72,8 +72,8 @@
 public class FullTextQueryImpl extends AbstractQueryImpl implements FullTextQuery {
 	private static final Logger log = LoggerFactory.make();
 	private final org.apache.lucene.search.Query luceneQuery;
-	private Class[] classes;
-	private Set<Class> classesAndSubclasses;
+	private Class<?>[] classes;
+	private Set<Class<?>> classesAndSubclasses;
 	//optimization: if we can avoid the filter clause (we can most of the time) do it as it has a significant perf impact
 	private boolean needClassFilterClause;
 	private Integer firstResult;
@@ -528,7 +528,7 @@
 	 * TODO change classesAndSubclasses by side effect, which is a mismatch with the Searcher return, fix that.
 	 */
 	private IndexSearcher buildSearcher(SearchFactoryImplementor searchFactoryImplementor) {
-		Map<Class, DocumentBuilder<Object>> builders = searchFactoryImplementor.getDocumentBuilders();
+		Map<Class<?>, DocumentBuilder<?>> builders = searchFactoryImplementor.getDocumentBuilders();
 		List<DirectoryProvider> directories = new ArrayList<DirectoryProvider>();
 
 		Similarity searcherSimilarity = null;
@@ -543,10 +543,10 @@
 			classesAndSubclasses = null;
 		}
 		else {
-			Set<Class> involvedClasses = new HashSet<Class>( classes.length );
+			Set<Class<?>> involvedClasses = new HashSet<Class<?>>( classes.length );
 			Collections.addAll( involvedClasses, classes );
-			for (Class clazz : classes) {
-				DocumentBuilder builder = builders.get( clazz );
+			for (Class<?> clazz : classes) {
+				DocumentBuilder<?> builder = builders.get( clazz );
 				if ( builder != null ) involvedClasses.addAll( builder.getMappedSubclasses() );
 			}
 
@@ -567,7 +567,7 @@
 		//if at least one DP contains one class that is not part of the targeted classesAndSubclasses we can't optimize
 		if ( classesAndSubclasses != null) {
 			for (DirectoryProvider dp : directories) {
-				final Set<Class> classesInDirectoryProvider = searchFactoryImplementor.getClassesInDirectoryProvider( dp );
+				final Set<Class<?>> classesInDirectoryProvider = searchFactoryImplementor.getClassesInDirectoryProvider( dp );
 				// if a DP contains only one class, we know for sure it's part of classesAndSubclasses
 				if ( classesInDirectoryProvider.size() > 1 ) {
 					//risk of needClassFilterClause

Modified: search/trunk/src/java/org/hibernate/search/reader/SharedReaderProvider.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/reader/SharedReaderProvider.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/reader/SharedReaderProvider.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -54,7 +54,7 @@
 	 */
 	private Map<IndexReader, ReaderData> searchIndexReaderSemaphores = new HashMap<IndexReader, ReaderData>();
 
-	public IndexReader openReader(DirectoryProvider[] directoryProviders) {
+	public IndexReader openReader(DirectoryProvider... directoryProviders) {
 		boolean trace = log.isTraceEnabled();
 		int length = directoryProviders.length;
 		IndexReader[] readers = new IndexReader[length];
@@ -320,7 +320,7 @@
 	}
 
 	public void initialize(Properties props, SearchFactoryImplementor searchFactoryImplementor) {
-		Set<DirectoryProvider> providers = searchFactoryImplementor.getDirectoryProviders();
+		Set<DirectoryProvider<?>> providers = searchFactoryImplementor.getDirectoryProviders();
 		perDirectoryProviderManipulationLocks = new HashMap<DirectoryProvider, Lock>( providers.size() );
 		for ( DirectoryProvider dp : providers ) {
 			perDirectoryProviderManipulationLocks.put( dp, new ReentrantLock() );

Modified: search/trunk/src/java/org/hibernate/search/reader/SharingBufferReaderProvider.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/reader/SharingBufferReaderProvider.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/java/org/hibernate/search/reader/SharingBufferReaderProvider.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -65,7 +65,7 @@
 
 	public void initialize(Properties props, SearchFactoryImplementor searchFactoryImplementor) {
 		Map<DirectoryProvider,PerDirectoryLatestReader> map = new HashMap<DirectoryProvider,PerDirectoryLatestReader>();
-		Set<DirectoryProvider> providers = searchFactoryImplementor.getDirectoryProviders();
+		Set<DirectoryProvider<?>> providers = searchFactoryImplementor.getDirectoryProviders();
 		for ( DirectoryProvider provider : providers ) {
 			try {
 				map.put( provider, new PerDirectoryLatestReader( provider ) );

Modified: search/trunk/src/test/org/hibernate/search/test/configuration/ShardsConfigurationTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/configuration/ShardsConfigurationTest.java	2008-10-22 18:39:37 UTC (rev 15373)
+++ search/trunk/src/test/org/hibernate/search/test/configuration/ShardsConfigurationTest.java	2008-10-22 21:36:38 UTC (rev 15374)
@@ -56,8 +56,8 @@
 	}
 	
 	public void testSelectionOfShardingStrategy() throws Exception {
-		IndexShardingStrategy shardingStrategy = getSearchFactory().getDocumentBuilders()
-			.get( Document.class ).getDirectoryProviderSelectionStrategy();
+		IndexShardingStrategy shardingStrategy = getSearchFactory().getDocumentBuilder( Document.class )
+				.getDirectoryProviderSelectionStrategy();
 		assertNotNull( shardingStrategy );
 		assertEquals( shardingStrategy.getClass(), UselessShardingStrategy.class );
 	}




More information about the hibernate-commits mailing list