[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