package play.modules.search;
import play.Play;
import play.PlayPlugin;
import play.exceptions.UnexpectedException;
import play.modules.search.store.FileExtractor;
import play.mvc.Router;
/**
* Integrated to Play's lifecycle, SearchPlugin
* will trap JPA events and drive the Search
* service.
* @author jfp
*
*/
public class SearchPlugin extends PlayPlugin {
@Override
public void onApplicationStart() {
Search.init();
FileExtractor.init();
}
@Override
public void onApplicationStop() {
try {
Search.shutdown();
} catch (Exception e) {
throw new UnexpectedException (e);
}
}
@Override
public void onEvent(String message, Object context) {
if (!message.startsWith("JPASupport"))
return;
if (message.equals("JPASupport.objectPersisted") || message.equals("JPASupport.objectUpdated")) {
Search.index (context);
} else if (message.equals("JPASupport.objectDeleted")) {
Search.unIndex(context);
}
}
@Override
public void onRoutesLoaded() {
if (Play.configuration.contains("play.search.password" ) || Play.mode == Play.Mode.DEV) {
Router.addRoute("GET", "/@search/?", "modules.search.Administration.index");
Router.addRoute("GET", "/@search/optimize/{name}", "modules.search.Administration.optimize");
Router.addRoute("GET", "/@search/reindex/{name}", "modules.search.Administration.reindex");
Router.addRoute("GET", "/@search/reopen/{name}", "modules.search.Administration.reopen");
}
}
}