/*
* 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.bridge.util.impl;
import org.hibernate.search.bridge.TwoWayStringBridge;
import org.hibernate.search.bridge.spi.IgnoreAnalyzerBridge;
/**
* An interface for bridge adaptors, i.e. types exposing one bridge interface and using
* another bridge instance under the hood.
*
* <p>Implementing this interface allows {@link BridgeAdaptorUtils} to detect
* specific bridge interfaces ({@link TwoWayStringBridge}, {@link IgnoreAnalyzerBridge},
* ...) even when the adaptor does no re-implement the interface.
*
* @author Yoann Rodiere
*/
public interface BridgeAdaptor {
/**
* Return an object of the specified type to allow access to specific
* bridge interfaces.
*
* <p>If no adapted bridge matches this type, {@code null} is returned.
* @return An instance of the specified class, or {@code null} if there is none.
*/
<T> T unwrap(Class<T> bridgeClass);
}