[hibernate-commits] Hibernate SVN: r17831 - in search/trunk/src/main/java/org/hibernate/search: engine and 1 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Sun Oct 25 13:53:52 EDT 2009


Author: epbernard
Date: 2009-10-25 13:53:52 -0400 (Sun, 25 Oct 2009)
New Revision: 17831

Modified:
   search/trunk/src/main/java/org/hibernate/search/cfg/SearchConfiguration.java
   search/trunk/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java
   search/trunk/src/main/java/org/hibernate/search/impl/FullTextSessionImpl.java
Log:
Various cleanup and enhancements on core Hibernate Search

Modified: search/trunk/src/main/java/org/hibernate/search/cfg/SearchConfiguration.java
===================================================================
--- search/trunk/src/main/java/org/hibernate/search/cfg/SearchConfiguration.java	2009-10-24 21:37:27 UTC (rev 17830)
+++ search/trunk/src/main/java/org/hibernate/search/cfg/SearchConfiguration.java	2009-10-25 17:53:52 UTC (rev 17831)
@@ -45,7 +45,7 @@
 	/**
 	 * Returns a {@link java.lang.Class} from a String parameter.
 	 * @param name
-	 * @return An iterator of Classes.
+	 * @return corresponding class instance.
 	 */
 
 	Class<?> getClassMapping(String name);

Modified: search/trunk/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java
===================================================================
--- search/trunk/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java	2009-10-24 21:37:27 UTC (rev 17830)
+++ search/trunk/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java	2009-10-25 17:53:52 UTC (rev 17831)
@@ -600,6 +600,19 @@
 		return idKeywordName;
 	}
 
+	/**
+	 * Return the entity id if possible
+	 * An IllegalStateException otherwise
+	 *
+	 * If the id is provided, we can't extract it from the entity
+	 *
+	 * @return entity id
+	 */
+	public Serializable getId(Object entity) {
+		if( entity == null || idGetter == null) throw new IllegalStateException( "Cannot guess id form entity");
+		return ( Serializable ) ReflectionHelper.getMemberValue( entity, idGetter );
+	}
+
 	public static Serializable getDocumentId(SearchFactoryImplementor searchFactoryImplementor, Class<?> clazz, Document document) {
 		DocumentBuilderIndexedEntity<?> builderIndexedEntity = searchFactoryImplementor.getDocumentBuilderIndexedEntity(
 				clazz

Modified: search/trunk/src/main/java/org/hibernate/search/impl/FullTextSessionImpl.java
===================================================================
--- search/trunk/src/main/java/org/hibernate/search/impl/FullTextSessionImpl.java	2009-10-24 21:37:27 UTC (rev 17830)
+++ search/trunk/src/main/java/org/hibernate/search/impl/FullTextSessionImpl.java	2009-10-25 17:53:52 UTC (rev 17831)
@@ -127,32 +127,33 @@
 	/**
 	 * {@inheritDoc}
 	 */
-	@SuppressWarnings( "unchecked" )
 	public <T> void purge(Class<T> entityType, Serializable id) {
 		if ( entityType == null ) {
 			return;
 		}
 
-		SearchFactoryImplementor searchFactoryImplementor = getSearchFactoryImplementor();
-		Set<Class<?>> targetedClasses = searchFactoryImplementor.getIndexedTypesPolymorphic( new Class[] {entityType} );
+		Set<Class<?>> targetedClasses = getSearchFactoryImplementor().getIndexedTypesPolymorphic( new Class[] {entityType} );
 		if ( targetedClasses.isEmpty() ) {
 			String msg = entityType.getName() + " is not an indexed entity or a subclass of an indexed entity";
 			throw new IllegalArgumentException( msg );
 		}
 
-		Work<T> work;
-		for ( Class clazz : targetedClasses ) {
+		for ( Class<?> clazz : targetedClasses ) {
 			if ( id == null ) {
-				work = new Work<T>( clazz, null, WorkType.PURGE_ALL );
-				searchFactoryImplementor.getWorker().performWork( work, transactionContext );
+				createAndPerformWork( clazz, null, WorkType.PURGE_ALL );
 			}
 			else {
-				work = new Work<T>( clazz, id, WorkType.PURGE );
-				searchFactoryImplementor.getWorker().performWork( work, transactionContext );
+				createAndPerformWork( clazz, id, WorkType.PURGE );
 			}
 		}
 	}
 
+	private <T> void createAndPerformWork(Class<T> clazz, Serializable id, WorkType workType) {
+		Work<T> work;
+		work = new Work<T>( clazz, id, workType );
+		getSearchFactoryImplementor().getWorker().performWork( work, transactionContext );
+	}
+
 	/**
 	 * (Re-)index an entity.
 	 * The entity must be associated with the session and non indexable entities are ignored.
@@ -197,10 +198,7 @@
 	}
 
 	public SearchFactory getSearchFactory() {
-		if ( searchFactory == null ) {
-			searchFactory = ContextHelper.getSearchFactory( session );
-		}
-		return searchFactory;
+		return getSearchFactoryImplementor();
 	}
 
 	private SearchFactoryImplementor getSearchFactoryImplementor() {



More information about the hibernate-commits mailing list