package module;
import static play.mvc.Results.badRequest;
import static play.mvc.Results.internalServerError;
import static play.mvc.Results.notFound;
import play.Application;
import play.Logger;
import play.libs.F;
import play.mvc.Http.RequestHeader;
import play.mvc.SimpleResult;
import play.utils.crud.GlobalCRUDSettings;
import plugins.GuicePlugin;
import views.html.errors.onBadRequest;
import views.html.errors.onError;
import views.html.errors.onNotFound;
import com.feth.play.module.pa.PlayAuthenticate;
import play.libs.F.*;
public class Global extends GlobalCRUDSettings {
private Application app;
@Override
public <A> A getControllerInstance(Class<A> controllerClass)
throws Exception {
return GuicePlugin.getInstance().getInstance(controllerClass);
}
public void onStart(Application app) {
Logger.info("application starting:" + app);
super.onStart(app);
this.app = app;
PlayAuthenticate.setResolver(new AuthResolver());
}
@Override
public F.Promise<SimpleResult> onBadRequest(final RequestHeader req, final String error) {
if (app.isProd()) {
return F.Promise.promise(new Function0<SimpleResult>() {
@Override
public SimpleResult apply() throws Throwable {
return badRequest(onBadRequest.render(req, error));
}
});
}
return super.onBadRequest(req, error);
}
@Override
public F.Promise<SimpleResult> onError(RequestHeader req, final Throwable error) {
if (app.isProd()) {
return F.Promise.promise(new Function0<SimpleResult>() {
@Override
public SimpleResult apply() throws Throwable {
return internalServerError(onError.render(error));
}
});
}
return super.onError(req, error);
}
@Override
public F.Promise<SimpleResult> onHandlerNotFound(final RequestHeader req) {
if (app.isProd()) {
return F.Promise.promise(new Function0<SimpleResult>() {
@Override
public SimpleResult apply() throws Throwable {
return notFound(onNotFound.render(req));
}
});
}
return super.onHandlerNotFound(req);
}
}