public static void enableHibernateSearch(EventListeners listeners,
Properties properties) {
// check whether search is explicitly disabled - if so there is nothing to do
String enableSearchListeners = properties.getProperty( Environment.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;
}
final FullTextIndexEventListener searchListener = new FullTextIndexEventListener();
// PostInsertEventListener
listeners.setPostInsertEventListeners(
addIfNeeded(
listeners.getPostInsertEventListeners(),
searchListener,
new PostInsertEventListener[] { searchListener }
)
);
// PostUpdateEventListener
listeners.setPostUpdateEventListeners(
addIfNeeded(
listeners.getPostUpdateEventListeners(),
searchListener,
new PostUpdateEventListener[] { searchListener }
)
);
// PostDeleteEventListener
listeners.setPostDeleteEventListeners(
addIfNeeded(
listeners.getPostDeleteEventListeners(),
searchListener,
new PostDeleteEventListener[] { searchListener }
)
);
// PostCollectionRecreateEventListener
listeners.setPostCollectionRecreateEventListeners(
addIfNeeded(
listeners.getPostCollectionRecreateEventListeners(),
searchListener,
new PostCollectionRecreateEventListener[] { searchListener }
)
);
// PostCollectionRemoveEventListener
listeners.setPostCollectionRemoveEventListeners(
addIfNeeded(
listeners.getPostCollectionRemoveEventListeners(),
searchListener,
new PostCollectionRemoveEventListener[] { searchListener }
)
);
// PostCollectionUpdateEventListener
listeners.setPostCollectionUpdateEventListeners(
addIfNeeded(
listeners.getPostCollectionUpdateEventListeners(),
searchListener,
new PostCollectionUpdateEventListener[] { searchListener }
)
);
}
Add the FullTextIndexEventListener to all listeners, if enabled in configuration
and if not already registered. |