Java Mailing List Archive

http://www.gg3721.com/

Home » Hibernate Commits List »

[hibernate-commits] Hibernate SVN: r14985 -
 search/trunk/src/java/org/hibernate/search/cfg.

hibernate-commits

2008-07-29


Author LoginPost Reply
Author: epbernard
Date: 2008-07-29 12:58:00 -0400 (Tue, 29 Jul 2008)
New Revision: 14985

Modified:
 search/trunk/src/java/org/hibernate/search/cfg/EventListenerRegister.java
Log:
add subclass in event listener register checking

Modified: search/trunk/src/java/org/hibernate/search/cfg/EventListenerRegister.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/cfg/EventListenerRegister.java  2008-07-29 14:51:33 UTC (rev 14984)
+++ search/trunk/src/java/org/hibernate/search/cfg/EventListenerRegister.java  2008-07-29 16:58:00 UTC (rev 14985)
@@(protected) @@
   FullTextIndexEventListener searchEventListener = new FullTextIndexEventListener();
   
   //TODO Generalize this. Pretty much the same code all the time. Reflection?
+    final Class<? extends FullTextIndexEventListener> searchEventListenerClass = searchEventListener.getClass();
   {
     boolean present = false;
     PostInsertEventListener[] listeners = eventListeners
@@(protected) @@
       for (Object eventListener : listeners) {
         // not isAssignableFrom since the user could subclass
         present = present
-              || searchEventListener.getClass() == eventListener.getClass();
+              || searchEventListenerClass == eventListener.getClass()
+              || searchEventListenerClass == eventListener.getClass().getSuperclass(); //for FullTextIndexCollectionEventListener
       }
       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;
+          newListeners[length - 1] = searchEventListener;
         eventListeners.setPostInsertEventListeners(newListeners);
       }
     } else {
       eventListeners
-            .setPostInsertEventListeners(new PostInsertEventListener[] { (PostInsertEventListener) searchEventListener });
+            .setPostInsertEventListeners(new PostInsertEventListener[] { searchEventListener });
     }
   }
   {
@@(protected) @@
       for (Object eventListener : listeners) {
         // not isAssignableFrom since the user could subclass
         present = present
-              || searchEventListener.getClass() == eventListener
-                  .getClass();
+              || searchEventListenerClass == eventListener.getClass()
+              || searchEventListenerClass == eventListener.getClass().getSuperclass(); //for FullTextIndexCollectionEventListener
       }
       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;
+          newListeners[length - 1] = searchEventListener;
         eventListeners.setPostUpdateEventListeners(newListeners);
       }
     } else {
       eventListeners
-            .setPostUpdateEventListeners(new PostUpdateEventListener[] { (PostUpdateEventListener) searchEventListener });
+            .setPostUpdateEventListeners(new PostUpdateEventListener[] { searchEventListener });
     }
   }
   {
@@(protected) @@
       for (Object eventListener : listeners) {
         // not isAssignableFrom since the user could subclass
         present = present
-              || searchEventListener.getClass() == eventListener
-                  .getClass();
+              || searchEventListenerClass == eventListener.getClass()
+              || searchEventListenerClass == eventListener.getClass().getSuperclass(); //for FullTextIndexCollectionEventListener
       }
       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;
+          newListeners[length - 1] = searchEventListener;
         eventListeners.setPostDeleteEventListeners(newListeners);
       }
     } else {
       eventListeners
-            .setPostDeleteEventListeners(new PostDeleteEventListener[] { (PostDeleteEventListener) searchEventListener });
+            .setPostDeleteEventListeners(new PostDeleteEventListener[] { searchEventListener });
     }
   }    
   {
@@(protected) @@
     if ( listeners != null ) {
       for (Object eventListener : listeners) {
         //not isAssignableFrom since the user could subclass
-          present = present || searchEventListener.getClass() == eventListener.getClass();
+          present = present
+              || searchEventListenerClass == eventListener.getClass()
+              || searchEventListenerClass == eventListener.getClass().getSuperclass(); //for FullTextIndexCollectionEventListener
       }
       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;
+          newListeners[length - 1] = searchEventListener;
         eventListeners.setPostCollectionRecreateEventListeners( newListeners );
       }
     }
     else {
       eventListeners.setPostCollectionRecreateEventListeners(
-            new PostCollectionRecreateEventListener[] { (PostCollectionRecreateEventListener) searchEventListener }
+            new PostCollectionRecreateEventListener[] { searchEventListener }
       );
     }
   }
@@(protected) @@
     if ( listeners != null ) {
       for (Object eventListener : listeners) {
         //not isAssignableFrom since the user could subclass
-          present = present || searchEventListener.getClass() == eventListener.getClass();
+          present = present
+              || searchEventListenerClass == eventListener.getClass()
+              || searchEventListenerClass == eventListener.getClass().getSuperclass(); //for FullTextIndexCollectionEventListener
       }
       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;
+          newListeners[length - 1] = searchEventListener;
         eventListeners.setPostCollectionRemoveEventListeners( newListeners );
       }
     }
     else {
       eventListeners.setPostCollectionRemoveEventListeners(
-            new PostCollectionRemoveEventListener[] { (PostCollectionRemoveEventListener) searchEventListener }
+            new PostCollectionRemoveEventListener[] { searchEventListener }
       );
     }
   }
@@(protected) @@
     if ( listeners != null ) {
       for (Object eventListener : listeners) {
         //not isAssignableFrom since the user could subclass
-          present = present || searchEventListener.getClass() == eventListener.getClass();
+          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;
+          newListeners[length - 1] = searchEventListener;
         eventListeners.setPostCollectionUpdateEventListeners( newListeners );
       }
     }
     else {
       eventListeners.setPostCollectionUpdateEventListeners(
-            new PostCollectionUpdateEventListener[] { (PostCollectionUpdateEventListener) searchEventListener }
+            new PostCollectionUpdateEventListener[] { searchEventListener }
       );
     }
   }    

_______________________________________________
hibernate-commits mailing list
hibernate-commits@(protected)
https://lists.jboss.org/mailman/listinfo/hibernate-commits
©2008 gg3721.com - Jax Systems, LLC, U.S.A.