package org.jboss.seam.wiki.core.search.metamodel; import org.apache.lucene.search.Query; import org.jboss.seam.wiki.core.search.SearchHit; import java.lang.reflect.ParameterizedType; /** * Superclass of a search handler for a particular searchable entity. * <p> * Extend this class to complete the search functionality for a particular entity, in * addition to placing <tt>@Searchable</tt> annotations on it. This handler extracts * hits from a search result (does highlighting, fragmentation, etc.) and supports * other dynamically overridable metadata (not much in this first incarnation). * * @author Christian Bauer */ public abstract class SearchableEntityHandler<E> { private Class<E> searchableEntityClass; public SearchableEntityHandler() { //noinspection unchecked this.searchableEntityClass = (Class<E>) ((ParameterizedType) getClass() .getGenericSuperclass()).getActualTypeArguments()[0]; } public Class<E> getSearchableEntityClass() { return searchableEntityClass; } public boolean isReadAccessChecked() { return false; } public abstract SearchHit extractHit(Query query, E hit) throws Exception; }