/* * Hibernate Search, full-text search for your domain model * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.search.event.impl; import java.io.Serializable; import org.hibernate.search.engine.integration.impl.ExtendedSearchIntegrator; import org.hibernate.search.exception.SearchException; import org.hibernate.search.util.logging.impl.LoggerFactory; /** * The implementation of EventsIntegratorState which the * FullTextIndexEventListener will be pointing to before * we start initialization of the SearchIntegrator. * This should never be needed, but the parallel initialization * of multiple frameworks is tricky to predict: * if it happens at least we provide a meaningful error * message rather than a null pointer. * * @author Sanne Grinovero */ // Implementation note: do not change this into a singleton. // The hope is that after boot time there will no longer be any // instances of this type around, allowing the JVM to avoid // megamorphic invocations, as these methods are on the hot path. final class NonInitializedIntegratorState implements EventsIntegratorState, Serializable { @Override public boolean eventsDisabled() { throw notInitialized(); } @Override public ExtendedSearchIntegrator getExtendedSearchIntegrator() { throw notInitialized(); } @Override public boolean skipDirtyChecks() { throw notInitialized(); } private SearchException notInitialized() { // do not make a static field as we want this class to be disposable. // we're unlikely to ever need this logger anyway! return LoggerFactory.make().searchIntegratorNotInitialized(); } }