package in.partake.controller.action; import in.partake.controller.base.AbstractPartakeController; import in.partake.resource.Constants; import in.partake.resource.MessageCode; import in.partake.resource.ServerErrorCode; import in.partake.resource.UserErrorCode; import java.util.Map; import play.Logger; import play.mvc.Content; import play.mvc.Result; public abstract class AbstractPartakeAction extends AbstractPartakeController { // ---------------------------------------------------------------------- // Renderers protected Result render(Content content) { return ok(content); } protected Result render(byte[] body, String contentType, String contentDisposition) { response().setContentType(contentType); response().setHeader("Content-Disposition", contentDisposition); return ok(body); } @Override protected Result renderInvalid(UserErrorCode ec, Map<String, String> additionalInfo, Throwable e) { if (e != null) Logger.info("renderInvalid", e); if (ec != null) return renderRedirect("/invalid?errorCode=" + ec.getErrorCode()); return renderRedirect("/invalid"); } @Override protected Result renderError(ServerErrorCode ec, Map<String, String> additionalInfo, Throwable e) { if (e != null) Logger.info("redirectError", e); if (ec != null) return renderRedirect("/error?errorCode=" + ec.getErrorCode()); return renderRedirect("/error"); } protected Result renderLoginRequired() { context().setRedirectURL(request().uri()); return renderRedirect("/loginRequired"); } // TODO: renderRedirect はなにか引数を1つ取って、それを表示できるようにするべきだなあ…… // addActionMessage, addWarningMessage, addErrorMessage などは全部廃止。 // 表示用の文字列は Session に入れておくしかないのかな……。 /** * redirect to the specified URL. */ protected Result renderRedirect(String url, MessageCode messageCode) { if (messageCode != null) flash().put(Constants.Flash.MESSAGE_ID, messageCode.getErrorCode()); return redirect(url); } protected Result renderRedirect(String url) { return renderRedirect(url, null); } /** * show the 'forbidden' page when a user did something prohibited. * @return */ protected Result renderForbidden() { return renderForbidden(null); } protected Result renderForbidden(UserErrorCode ec) { if (ec != null) return renderRedirect("/forbidden?errorCode=" + ec.getErrorCode()); return renderRedirect("/forbidden"); } /** * show the 'not found' page. * @return */ protected Result renderNotFound() { return renderRedirect("/notfound"); } }