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 }
);
}
}
} Deprecated! as - of release 3.4.0.CR2, replaced by Hibernate Search's org.hibernate.search.cfg.EventListenerRegister#enableHibernateSearch(EventListeners, Properties)
Deprecated! |