/** * Called when target not found. By default sends 404 to the response. */ protected void targetNotFound(final ActionRequest actionRequest, final String actionAndResultPath) throws IOException { final HttpServletResponse response = actionRequest.getHttpServletResponse(); if (!response.isCommitted()) { response.sendError(SC_NOT_FOUND, "Result not found: " + actionAndResultPath); } }
@Override public void outject(final ActionRequest actionRequest, final Targets targets) { final HttpServletResponse servletResponse = actionRequest.getHttpServletResponse(); targets.forEachTargetAndOut(this, (target, out) -> { final Cookie cookie = (Cookie) target.readValue(out); if (cookie != null) { servletResponse.addCookie(cookie); } }); } }
/** * Renders the view by dispatching to the target JSP. */ @Override protected void renderView(final ActionRequest actionRequest, final String target) throws Exception { HttpServletRequest request = actionRequest.getHttpServletRequest(); HttpServletResponse response = actionRequest.getHttpServletResponse(); RequestDispatcher dispatcher = request.getRequestDispatcher(target); if (dispatcher == null) { response.sendError(SC_NOT_FOUND, "Result not found: " + target); // should never happened return; } // If we're included, then include the view, otherwise do forward. // This allow the page to, for example, set content type. if (DispatcherUtil.isPageIncluded(request, response)) { dispatcher.include(request, response); } else { dispatcher.forward(request, response); } }
@Override public void outject(final ActionRequest actionRequest, final Targets targets) { final HttpServletResponse servletResponse = actionRequest.getHttpServletResponse(); targets.forEachTargetAndOut(this, (target, out) -> { final String value = (String) target.readValue(out); if (value != null) { servletResponse.setHeader(out.name(), value); } }); } }
@Override public void render(final ActionRequest actionRequest, final String resultValue) throws Exception { HttpServletRequest request = actionRequest.getHttpServletRequest(); HttpServletResponse response = actionRequest.getHttpServletResponse(); Object action = actionRequest.getAction(); AppAction appAction = (AppAction) action; List<Violation> list = appAction.violations(); String result = VtorUtil.createViolationsJsonString(request, list); if (jsonResponseContentType != null) { response.setContentType(jsonResponseContentType); } char[] chars = result.toCharArray(); byte[] data = CharUtil.toByteArray(chars, madvocEncoding.getEncoding()); OutputStream os = response.getOutputStream(); os.write(data); os.flush(); }
final HttpServletResponse response = actionRequest.getHttpServletResponse();
@Override public void render(final ActionRequest actionRequest, final Object resultValue) throws Exception { final HttpServletResponse response = actionRequest.getHttpServletResponse();
public void inject(final ActionRequest actionRequest, final Targets targets) { final HttpServletRequest servletRequest = actionRequest.getHttpServletRequest(); final HttpServletResponse servletResponse = actionRequest.getHttpServletResponse(); targets.forEachTargetAndIn(madvocScope, (target, in) -> { final Class inType = in.type(); Object value = null; if (inType == HttpServletRequest.class) { value = servletRequest; } else if (inType == ServletRequest.class) { value = servletRequest; } else if (inType == HttpServletResponse.class) { value = servletResponse; } else if (inType == ServletResponse.class) { value = servletResponse; } else if (inType == HttpSession.class) { value = servletRequest.getSession(); } else if (inType == ServletContext.class) { value = servletRequest.getServletContext(); } else if (inType == AsyncContext.class) { value = servletRequest.getAsyncContext(); } else if (inType == ActionRequest.class) { value = actionRequest; } if (value != null) { target.writeValue(in, value, true); } }); }
@Override public void render(final ActionRequest actionRequest, final RawData resultValue) throws IOException { if (resultValue == null) { return; } HttpServletResponse response = actionRequest.getHttpServletResponse(); // reset content type and prepare response // since we are using MadvocResponseWrapper, the charset will be reset as well. ServletUtil.prepareResponse(response, resultValue.downloadFileName(), resultValue.mimeType(), resultValue.contentLength()); // write out InputStream contentInputStream = resultValue.contentInputStream(); OutputStream out = response.getOutputStream(); StreamUtil.copy(contentInputStream, out); out.flush(); StreamUtil.close(contentInputStream); } }
/** * Invokes a result after the action invocation. * <p> * Results may be objects that specify which action result will be used * to render the result. * <p> * Result value may consist of two parts: type and value. Result type is optional and, if exists, it is separated * by semi-colon from the value. If type is not specified * then the default result type if still not defined. Result type defines which * {@link ActionResult} should be used for rendering the value. * <p> * Result value is first checked against aliased values. Then, it is resolved and then passed * to the founded {@link ActionResult}. * * @see ActionResult#render(jodd.madvoc.ActionRequest, Object) */ @SuppressWarnings("unchecked") public void render(final ActionRequest actionRequest, final Object resultObject) throws Exception { final ActionResult actionResult = resultsManager.lookup(actionRequest, resultObject); if (actionResult == null) { throw new MadvocException("Action result not found"); } if (preventCaching) { ServletUtil.preventCaching(actionRequest.getHttpServletResponse()); } log.debug(() -> "Result type: " + actionResult.getClass().getSimpleName()); actionResult.render(actionRequest, actionRequest.getActionResult()); }
/** * Tries to authenticate user via token. Returns the token if user is authenticated. * Returned token may be rotated. */ protected T authenticateUserViaToken(final ActionRequest actionRequest) { final HttpServletRequest servletRequest = actionRequest.getHttpServletRequest(); // then try the auth token final String token = ServletUtil.resolveAuthBearerToken(servletRequest); if (token == null) { return null; } final T authToken = userAuth().validateToken(token); if (authToken == null) { return null; } // granted final T newAuthToken = userAuth().rotateToken(authToken); actionRequest.getHttpServletResponse().setHeader("Authentication", "Bearer: " + userAuth().tokenValue(newAuthToken)); return newAuthToken; }
/** * Redirects to the given location. Provided path is parsed, action is used as a value context. */ @Override public void render(final ActionRequest actionRequest, final Object resultValue) { final PermRedirect redirectResult; if (resultValue == null) { redirectResult = PermRedirect.to(StringPool.SLASH); } else { if (resultValue instanceof String) { redirectResult = PermRedirect.to((String)resultValue); } else { redirectResult = (PermRedirect) resultValue; } } final String resultBasePath = actionRequest.getActionRuntime().getResultBasePath(); final String redirectValue = redirectResult.path(); final String resultPath; if (redirectValue.startsWith("http://") || redirectValue.startsWith("https://")) { resultPath = redirectValue; } else { resultPath = resultMapper.resolveResultPathString(resultBasePath, redirectValue); } final HttpServletRequest request = actionRequest.getHttpServletRequest(); final HttpServletResponse response = actionRequest.getHttpServletResponse(); String path = beanTemplateParser.parseWithBean(resultPath, actionRequest.getAction()); DispatcherUtil.redirectPermanent(request, response, path); }
HttpServletResponse response = actionRequest.getHttpServletResponse();
/** * Tries to authenticate user via HTTP session. Returns the token if user is authenticated. * Returned token may be rotated. */ protected T authenticateUserViaHttpSession(final ActionRequest actionRequest) { final HttpServletRequest servletRequest = actionRequest.getHttpServletRequest(); final UserSession<T> userSession = UserSession.get(servletRequest); if (userSession == null) { return null; } final T authToken = userSession.getAuthToken(); if (authToken == null) { return null; } // granted final T newAuthToken = userAuth().rotateToken(authToken); if (newAuthToken != authToken) { final UserSession<T> newUserSesion = new UserSession<>(newAuthToken, userAuth().tokenValue(newAuthToken)); newUserSesion.start(servletRequest, actionRequest.getHttpServletResponse()); } return newAuthToken; }
@Override public void render(ActionRequest actionRequest, Object resultValue) throws Exception { // TODO Auto-generated method stub WebRender render = new WebRender(groupTemplate); render.render((String) resultValue, actionRequest.getHttpServletRequest(), actionRequest.getHttpServletResponse()); }
@Override public void render(ActionRequest actionRequest, Object resultValue) throws Exception { // TODO Auto-generated method stub WebRender render = new WebRender(groupTemplate); render.render((String) resultValue, actionRequest.getHttpServletRequest(), actionRequest.getHttpServletResponse()); }
/** * Initializes action result. */ protected void initializeResult(ActionResult result, ActionRequest actionRequest) { HttpServletRequest httpServletRequest = actionRequest.getHttpServletRequest(); HttpServletResponse httpServletResponse = actionRequest.getHttpServletResponse(); contextInjector.injectContext(result, httpServletRequest, httpServletResponse, true); result.initialized(); result.init(); }
/** * Redirects to the given location. Provided path is parsed, action is used as a value context. */ @Override public void render(ActionRequest actionRequest, Object resultObject, String resultValue, String resultPath) throws Exception { HttpServletRequest request = actionRequest.getHttpServletRequest(); HttpServletResponse response = actionRequest.getHttpServletResponse(); resultPath = beanTemplateParser.parse(resultPath, actionRequest.getAction()); DispatcherUtil.redirect(request, response, resultPath); }
/** * Saves action in the session under some id that is added as request parameter. */ @Override public void render(ActionRequest actionRequest, Object resultObject, String resultValue, String resultPath) throws Exception { HttpServletRequest httpServletRequest = actionRequest.getHttpServletRequest(); HttpSession session = httpServletRequest.getSession(); String id = generateUniqueId(); session.setAttribute(id, actionRequest); resultPath = URLCoder.build(resultPath).param(madvocConfig.getAttributeMoveId(), id).toString(); DispatcherUtil.redirect(httpServletRequest, actionRequest.getHttpServletResponse(), resultPath); }
/** * Performs outjection. */ protected void outject(ActionRequest actionRequest) { Object target = actionRequest.getAction(); HttpServletRequest servletRequest = actionRequest.getHttpServletRequest(); HttpServletResponse servletResponse = actionRequest.getHttpServletResponse(); contextInjector.outjectContext(target, servletRequest, servletResponse); sessionScopeInjector.outject(target, servletRequest); requestScopeInjector.outject(target, servletRequest); }