[hibernate-commits] Hibernate SVN: r14913 - in annotations/trunk/src/java/org/hibernate/cfg: search and 1 other directory.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Thu Jul 10 10:13:04 EDT 2008
Author: epbernard
Date: 2008-07-10 10:13:04 -0400 (Thu, 10 Jul 2008)
New Revision: 14913
Added:
annotations/trunk/src/java/org/hibernate/cfg/search/HibernateSearchEventListenerRegister.java
Removed:
annotations/trunk/src/java/org/hibernate/cfg/search/SearchConfiguration.java
Modified:
annotations/trunk/src/java/org/hibernate/cfg/AnnotationConfiguration.java
Log:
Rename the event listener register class for HSearch to avoid confusion with a public API from HSearch
Modified: annotations/trunk/src/java/org/hibernate/cfg/AnnotationConfiguration.java
===================================================================
--- annotations/trunk/src/java/org/hibernate/cfg/AnnotationConfiguration.java 2008-07-10 10:37:16 UTC (rev 14912)
+++ annotations/trunk/src/java/org/hibernate/cfg/AnnotationConfiguration.java 2008-07-10 14:13:04 UTC (rev 14913)
@@ -36,7 +36,7 @@
import org.hibernate.annotations.common.reflection.XClass;
import org.hibernate.cfg.annotations.Version;
import org.hibernate.cfg.annotations.reflection.EJB3ReflectionManager;
-import org.hibernate.cfg.search.SearchConfiguration;
+import org.hibernate.cfg.search.HibernateSearchEventListenerRegister;
import org.hibernate.event.PreInsertEventListener;
import org.hibernate.event.PreUpdateEventListener;
import org.hibernate.mapping.Column;
@@ -855,7 +855,7 @@
}
}
}
- SearchConfiguration.enableHibernateSearch( getEventListeners(), getProperties() );
+ HibernateSearchEventListenerRegister.enableHibernateSearch( getEventListeners(), getProperties() );
return super.buildSessionFactory();
Copied: annotations/trunk/src/java/org/hibernate/cfg/search/HibernateSearchEventListenerRegister.java (from rev 14757, annotations/trunk/src/java/org/hibernate/cfg/search/SearchConfiguration.java)
===================================================================
--- annotations/trunk/src/java/org/hibernate/cfg/search/HibernateSearchEventListenerRegister.java (rev 0)
+++ annotations/trunk/src/java/org/hibernate/cfg/search/HibernateSearchEventListenerRegister.java 2008-07-10 14:13:04 UTC (rev 14913)
@@ -0,0 +1,154 @@
+//$
+package org.hibernate.cfg.search;
+
+import java.util.Properties;
+import java.lang.reflect.Method;
+
+import org.hibernate.util.ReflectHelper;
+import org.hibernate.AnnotationException;
+import org.hibernate.event.PostInsertEventListener;
+import org.hibernate.event.PostUpdateEventListener;
+import org.hibernate.event.PostDeleteEventListener;
+import org.hibernate.event.EventListeners;
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * Helper methods initializing Hibernate Search event listeners
+ *
+ * @author Emmanuel Bernard
+ */
+public class HibernateSearchEventListenerRegister {
+ private static final Logger log = LoggerFactory.getLogger( HibernateSearchEventListenerRegister.class );
+
+ public static void enableHibernateSearch(EventListeners eventListeners, Properties properties) {
+ //add search events if the jar is available
+ boolean enableSearchListeners = !"false".equalsIgnoreCase( properties.getProperty( "hibernate.search.autoregister_listeners" ) );
+ boolean enableCollectionSearchListeners = false;
+ Class searchEventListenerClass = null;
+ Class nonCollectionSearchEventListener = null;
+ try {
+ searchEventListenerClass = ReflectHelper.classForName(
+ "org.hibernate.search.event.FullTextIndexEventListener",
+ HibernateSearchEventListenerRegister.class );
+ nonCollectionSearchEventListener = searchEventListenerClass;
+ //after Hibernate Core 3.2.6 and Hibernate Search 3.0.1
+ try {
+ ReflectHelper.classForName(
+ "org.hibernate.event.AbstractCollectionEvent",
+ HibernateSearchEventListenerRegister.class );
+ // Core 3.2.6 is here
+ searchEventListenerClass = ReflectHelper.classForName(
+ "org.hibernate.search.event.FullTextIndexCollectionEventListener",
+ HibernateSearchEventListenerRegister.class );
+ // Search 3.0.1 is here
+ enableCollectionSearchListeners = true;
+
+ }
+ catch (ClassNotFoundException e) {
+ //collection listeners not present
+ log.debug( "Hibernate Search collection listeners not present " +
+ "(upgrate to Hibernate Core 3.2.6 and above and Hibernate Search 3.0.1 and above)" );
+ }
+ }
+ catch (ClassNotFoundException e) {
+ //search is not present
+ log.debug( "Search not present in classpath, ignoring event listener registration" );
+ }
+ if ( enableSearchListeners && searchEventListenerClass != null ) {
+ //TODO so much duplication
+ Object searchEventListener;
+ try {
+ searchEventListener = searchEventListenerClass.newInstance();
+ }
+ catch (Exception e) {
+ throw new AnnotationException( "Unable to load Search event listener", e );
+ }
+ {
+ boolean present = false;
+ PostInsertEventListener[] listeners = eventListeners.getPostInsertEventListeners();
+ if ( listeners != null ) {
+ for (Object eventListener : listeners) {
+ //not isAssignableFrom since the user could subclass
+ present = present ||
+ searchEventListenerClass == eventListener.getClass() ||
+ ( enableCollectionSearchListeners && nonCollectionSearchEventListener == eventListener.getClass() );
+ }
+ if ( !present ) {
+ int length = listeners.length + 1;
+ PostInsertEventListener[] newListeners = new PostInsertEventListener[length];
+ System.arraycopy( listeners, 0, newListeners, 0, length - 1 );
+ newListeners[length - 1] = (PostInsertEventListener) searchEventListener;
+ eventListeners.setPostInsertEventListeners( newListeners );
+ }
+ }
+ else {
+ eventListeners.setPostInsertEventListeners(
+ new PostInsertEventListener[] { (PostInsertEventListener) searchEventListener }
+ );
+ }
+ }
+ {
+ boolean present = false;
+ PostUpdateEventListener[] listeners = eventListeners.getPostUpdateEventListeners();
+ if ( listeners != null ) {
+ for (Object eventListener : listeners) {
+ //not isAssignableFrom since the user could subclass
+ present = present ||
+ searchEventListenerClass == eventListener.getClass() ||
+ ( enableCollectionSearchListeners && nonCollectionSearchEventListener == eventListener.getClass() );
+ }
+ if ( !present ) {
+ int length = listeners.length + 1;
+ PostUpdateEventListener[] newListeners = new PostUpdateEventListener[length];
+ System.arraycopy( listeners, 0, newListeners, 0, length - 1 );
+ newListeners[length - 1] = (PostUpdateEventListener) searchEventListener;
+ eventListeners.setPostUpdateEventListeners( newListeners );
+ }
+ }
+ else {
+ eventListeners.setPostUpdateEventListeners(
+ new PostUpdateEventListener[] { (PostUpdateEventListener) searchEventListener }
+ );
+ }
+ }
+ {
+ boolean present = false;
+ PostDeleteEventListener[] listeners = eventListeners.getPostDeleteEventListeners();
+ if ( listeners != null ) {
+ for (Object eventListener : listeners) {
+ //not isAssignableFrom since the user could subclass
+ present = present ||
+ searchEventListenerClass == eventListener.getClass() ||
+ ( enableCollectionSearchListeners && nonCollectionSearchEventListener == eventListener.getClass() );
+ }
+ if ( !present ) {
+ int length = listeners.length + 1;
+ PostDeleteEventListener[] newListeners = new PostDeleteEventListener[length];
+ System.arraycopy( listeners, 0, newListeners, 0, length - 1 );
+ newListeners[length - 1] = (PostDeleteEventListener) searchEventListener;
+ eventListeners.setPostDeleteEventListeners( newListeners );
+ }
+ }
+ else {
+ eventListeners.setPostDeleteEventListeners(
+ new PostDeleteEventListener[] { (PostDeleteEventListener) searchEventListener }
+ );
+ }
+ }
+ if (enableCollectionSearchListeners) {
+ try {
+ Class collectionSearchConfigurationClass = ReflectHelper.classForName(
+ "org.hibernate.cfg.search.CollectionSearchConfiguration",
+ HibernateSearchEventListenerRegister.class );
+ Method method = collectionSearchConfigurationClass.getDeclaredMethod( "enableHibernateSearch",
+ EventListeners.class, Object.class, Class.class );
+ method.invoke( null, eventListeners, searchEventListener, searchEventListenerClass );
+ }
+ catch (Exception e) {
+ throw new AnnotationException( "Unable to load Search event listener", e );
+ }
+ }
+ }
+ }
+}
Property changes on: annotations/trunk/src/java/org/hibernate/cfg/search/HibernateSearchEventListenerRegister.java
___________________________________________________________________
Name: svn:keywords
+ Id
Deleted: annotations/trunk/src/java/org/hibernate/cfg/search/SearchConfiguration.java
===================================================================
--- annotations/trunk/src/java/org/hibernate/cfg/search/SearchConfiguration.java 2008-07-10 10:37:16 UTC (rev 14912)
+++ annotations/trunk/src/java/org/hibernate/cfg/search/SearchConfiguration.java 2008-07-10 14:13:04 UTC (rev 14913)
@@ -1,221 +0,0 @@
-// $Id:$
-package org.hibernate.cfg.search;
-
-import java.util.Properties;
-
-import org.hibernate.AnnotationException;
-import org.hibernate.event.EventListeners;
-import org.hibernate.event.PostCollectionRecreateEventListener;
-import org.hibernate.event.PostCollectionRemoveEventListener;
-import org.hibernate.event.PostCollectionUpdateEventListener;
-import org.hibernate.event.PostDeleteEventListener;
-import org.hibernate.event.PostInsertEventListener;
-import org.hibernate.event.PostUpdateEventListener;
-import org.hibernate.util.ReflectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Helper methods initializing Hibernate Search event listeners.
- *
- * @author Emmanuel Bernard
- * @author Hardy Ferentschik
- */
-public class SearchConfiguration {
-
- private static final Logger log = LoggerFactory.getLogger(SearchConfiguration.class);
-
- /**
- * Class name of the class needed to enable Search.
- */
- private static final String FULL_TEXT_INDEX_EVENT_LISTENER_CLASS = "org.hibernate.search.event.FullTextIndexEventListener";
-
- @SuppressWarnings("unchecked")
- public static void enableHibernateSearch(EventListeners eventListeners, Properties properties) {
- // check whether search is explicitly enabled - if so there is nothing
- // to do
- String enableSearchListeners = properties.getProperty( "hibernate.search.autoregister_listeners" );
- if("false".equalsIgnoreCase(enableSearchListeners )) {
- log.info("Property hibernate.search.autoregister_listeners is set to false." +
- " No attempt will be made to register Hibernate Search event listeners.");
- return;
- }
-
- // add search events if the jar is available and class can be loaded
- Class searchEventListenerClass = attemptToLoadSearchEventListener();
- if ( searchEventListenerClass == null ) {
- log.info("Unable to find {} on the classpath. Hibernate Search is not enabled.", FULL_TEXT_INDEX_EVENT_LISTENER_CLASS);
- return;
- }
-
- Object searchEventListener = instantiateEventListener(searchEventListenerClass);
-
- //TODO Generalize this. Pretty much the same code all the time. Reflecetion?
- {
- boolean present = false;
- PostInsertEventListener[] listeners = eventListeners
- .getPostInsertEventListeners();
- if (listeners != null) {
- for (Object eventListener : listeners) {
- // not isAssignableFrom since the user could subclass
- present = present
- || searchEventListenerClass == eventListener
- .getClass();
- }
- if (!present) {
- int length = listeners.length + 1;
- PostInsertEventListener[] newListeners = new PostInsertEventListener[length];
- System.arraycopy(listeners, 0, newListeners, 0, length - 1);
- newListeners[length - 1] = (PostInsertEventListener) searchEventListener;
- eventListeners.setPostInsertEventListeners(newListeners);
- }
- } else {
- eventListeners
- .setPostInsertEventListeners(new PostInsertEventListener[] { (PostInsertEventListener) searchEventListener });
- }
- }
- {
- boolean present = false;
- PostUpdateEventListener[] listeners = eventListeners
- .getPostUpdateEventListeners();
- if (listeners != null) {
- for (Object eventListener : listeners) {
- // not isAssignableFrom since the user could subclass
- present = present
- || searchEventListenerClass == eventListener
- .getClass();
- }
- if (!present) {
- int length = listeners.length + 1;
- PostUpdateEventListener[] newListeners = new PostUpdateEventListener[length];
- System.arraycopy(listeners, 0, newListeners, 0, length - 1);
- newListeners[length - 1] = (PostUpdateEventListener) searchEventListener;
- eventListeners.setPostUpdateEventListeners(newListeners);
- }
- } else {
- eventListeners
- .setPostUpdateEventListeners(new PostUpdateEventListener[] { (PostUpdateEventListener) searchEventListener });
- }
- }
- {
- boolean present = false;
- PostDeleteEventListener[] listeners = eventListeners
- .getPostDeleteEventListeners();
- if (listeners != null) {
- for (Object eventListener : listeners) {
- // not isAssignableFrom since the user could subclass
- present = present
- || searchEventListenerClass == eventListener
- .getClass();
- }
- if (!present) {
- int length = listeners.length + 1;
- PostDeleteEventListener[] newListeners = new PostDeleteEventListener[length];
- System.arraycopy(listeners, 0, newListeners, 0, length - 1);
- newListeners[length - 1] = (PostDeleteEventListener) searchEventListener;
- eventListeners.setPostDeleteEventListeners(newListeners);
- }
- } else {
- eventListeners
- .setPostDeleteEventListeners(new PostDeleteEventListener[] { (PostDeleteEventListener) searchEventListener });
- }
- }
- {
- boolean present = false;
- PostCollectionRecreateEventListener[] listeners = eventListeners.getPostCollectionRecreateEventListeners();
- if ( listeners != null ) {
- for (Object eventListener : listeners) {
- //not isAssignableFrom since the user could subclass
- present = present || searchEventListenerClass == eventListener.getClass();
- }
- if ( !present ) {
- int length = listeners.length + 1;
- PostCollectionRecreateEventListener[] newListeners = new PostCollectionRecreateEventListener[length];
- System.arraycopy( listeners, 0, newListeners, 0, length - 1 );
- newListeners[length - 1] = (PostCollectionRecreateEventListener) searchEventListener;
- eventListeners.setPostCollectionRecreateEventListeners( newListeners );
- }
- }
- else {
- eventListeners.setPostCollectionRecreateEventListeners(
- new PostCollectionRecreateEventListener[] { (PostCollectionRecreateEventListener) searchEventListener }
- );
- }
- }
- {
- boolean present = false;
- PostCollectionRemoveEventListener[] listeners = eventListeners.getPostCollectionRemoveEventListeners();
- if ( listeners != null ) {
- for (Object eventListener : listeners) {
- //not isAssignableFrom since the user could subclass
- present = present || searchEventListenerClass == eventListener.getClass();
- }
- if ( !present ) {
- int length = listeners.length + 1;
- PostCollectionRemoveEventListener[] newListeners = new PostCollectionRemoveEventListener[length];
- System.arraycopy( listeners, 0, newListeners, 0, length - 1 );
- newListeners[length - 1] = (PostCollectionRemoveEventListener) searchEventListener;
- eventListeners.setPostCollectionRemoveEventListeners( newListeners );
- }
- }
- else {
- eventListeners.setPostCollectionRemoveEventListeners(
- new PostCollectionRemoveEventListener[] { (PostCollectionRemoveEventListener) searchEventListener }
- );
- }
- }
- {
- boolean present = false;
- PostCollectionUpdateEventListener[] listeners = eventListeners.getPostCollectionUpdateEventListeners();
- if ( listeners != null ) {
- for (Object eventListener : listeners) {
- //not isAssignableFrom since the user could subclass
- present = present || searchEventListenerClass == eventListener.getClass();
- }
- if ( !present ) {
- int length = listeners.length + 1;
- PostCollectionUpdateEventListener[] newListeners = new PostCollectionUpdateEventListener[length];
- System.arraycopy( listeners, 0, newListeners, 0, length - 1 );
- newListeners[length - 1] = (PostCollectionUpdateEventListener) searchEventListener;
- eventListeners.setPostCollectionUpdateEventListeners( newListeners );
- }
- }
- else {
- eventListeners.setPostCollectionUpdateEventListeners(
- new PostCollectionUpdateEventListener[] { (PostCollectionUpdateEventListener) searchEventListener }
- );
- }
- }
- }
-
- /**
- * Tries to load Hibernate Search event listener.
- *
- * @return An event listener instance in case the jar was available.
- */
- @SuppressWarnings("unchecked")
- private static Class attemptToLoadSearchEventListener() {
- Class searchEventListenerClass = null;
- try {
- searchEventListenerClass = ReflectHelper.classForName(
- FULL_TEXT_INDEX_EVENT_LISTENER_CLASS,
- SearchConfiguration.class);
- } catch (ClassNotFoundException e) {
- log
- .debug("Search not present in classpath, ignoring event listener registration.");
- }
- return searchEventListenerClass;
- }
-
- @SuppressWarnings("unchecked")
- private static Object instantiateEventListener(Class clazz) {
- Object searchEventListener = null;
- try {
- searchEventListener = clazz.newInstance();
- } catch (Exception e) {
- throw new AnnotationException(
- "Unable to load Search event listener", e);
- }
- return searchEventListener;
- }
-}
More information about the hibernate-commits
mailing list