@Override public void inject(final ActionRequest actionRequest, final Targets targets) { final HttpServletRequest servletRequest = actionRequest.getHttpServletRequest(); inject(servletRequest.getServletContext(), targets); }
/** * Reads request body only once and returns it to user. */ public String readRequestBody() { if (requestBody == null) { try { requestBody = ServletUtil.readRequestBodyFromStream(getHttpServletRequest()); } catch (IOException ioex) { requestBody = StringPool.EMPTY; } } return requestBody; }
/** * Returns <code>true</code> if target exists. */ protected boolean targetExists(final ActionRequest actionRequest, final String target) { if (log.isDebugEnabled()) { log.debug("target check: " + target); } final ServletContext servletContext = actionRequest.getHttpServletRequest().getServletContext(); try { return servletContext.getResource(target) != null; } catch (MalformedURLException ignore) { return false; } }
@Override public void inject(final ActionRequest actionRequest, final Targets targets) { final HttpServletRequest servletRequest = actionRequest.getHttpServletRequest(); final HttpSession session = servletRequest.getSession(); final Enumeration<String> attributeNames = session.getAttributeNames(); while (attributeNames.hasMoreElements()) { final String attrName = attributeNames.nextElement(); targets.forEachTargetAndIn(this, (target, in) -> { final String name = in.matchedName(attrName); if (name != null) { final Object attrValue = session.getAttribute(attrName); target.writeValue(name, attrValue, true); } }); } }
@Override public void outject(final ActionRequest actionRequest, final Targets targets) { final HttpServletRequest servletRequest = actionRequest.getHttpServletRequest(); final HttpSession session = servletRequest.getSession(); targets.forEachTargetAndOut(this, (target, out) -> { final Object value = target.readValue(out); session.setAttribute(out.name(), value); }); } }
@Override public void outject(final ActionRequest actionRequest, final Targets targets) { final ServletContext context = actionRequest.getHttpServletRequest().getServletContext(); targets.forEachTargetAndOut(this, (target, out) -> { final Object value = target.readValue(out); context.setAttribute(out.name(), value); }); }
/** * 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 inject(final ActionRequest actionRequest, final Targets targets) { final HttpServletRequest servletRequest = actionRequest.getHttpServletRequest(); targets.forEachTargetAndIn(this, (target, in) -> { final Enumeration<String> headerNames = servletRequest.getHeaders(in.name()); if (headerNames != null) { final List<String> allValues = new ArrayList<>(); while (headerNames.hasMoreElements()) { allValues.add(headerNames.nextElement()); } final Object value; if (allValues.size() == 1) { value = allValues.get(0); } else { value = allValues; } target.writeValue(in, value, true); } }); }
@Override public void outject(final ActionRequest actionRequest, final Targets targets) { final HttpServletRequest servletRequest = actionRequest.getHttpServletRequest(); targets.forEachTargetAndOut(this, (target, out) -> { final Object value = target.readValue(out); servletRequest.setAttribute(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(); }
/** * Performs injection. */ protected void inject(final ActionRequest actionRequest) { final Targets targets = actionRequest.getTargets(); final ServletContext servletContext = actionRequest.getHttpServletRequest().getServletContext(); scopeResolver.forEachScope(madvocScope -> madvocScope.inject(servletContext, targets)); scopeResolver.forEachScope(madvocScope -> madvocScope.inject(actionRequest, targets)); }
@Override public Object intercept(final ActionRequest actionRequest) throws Exception { HttpServletRequest request = actionRequest.getHttpServletRequest(); // defines request bundle of this http request LocalizationUtil.setRequestBundleName(request, getActionClassName(actionRequest.getAction())); return actionRequest.invoke(); }
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); } }); }
/** * Tires to authenticate user via the basic authentication. Returns the token if user is authenticated. */ protected T authenticateUserViaBasicAuth(final ActionRequest actionRequest) { final HttpServletRequest servletRequest = actionRequest.getHttpServletRequest(); final String username = ServletUtil.resolveAuthUsername(servletRequest); if (username == null) { return null; } final String password = ServletUtil.resolveAuthPassword(servletRequest); final T authToken = userAuth().login(username, password); if (authToken == null) { return null; } return authToken; }
@Override public void inject(final ActionRequest actionRequest, final Targets targets) { final HttpServletRequest servletRequest = actionRequest.getHttpServletRequest(); instancesInjector.inject(actionRequest, targets); if (injectAttributes) { injectAttributes(servletRequest, targets); } if (injectParameters) { injectParameters(servletRequest, targets); injectUploadedFiles(servletRequest, targets); } actionPathMacroInjector.inject(actionRequest, targets); }
/** * Invokes an action asynchronously by submitting it to the thread pool. */ public void invoke(final ActionRequest actionRequest) { if (executorService == null) { throw new MadvocException("No action is marked as async!"); } final HttpServletRequest servletRequest = actionRequest.getHttpServletRequest(); log.debug(() -> "Async call to: " + actionRequest); final AsyncContext asyncContext = servletRequest.startAsync(); executorService.submit(() -> { try { actionRequest.invoke(); } catch (Exception ex) { log.error("Invoking async action path failed: " , ExceptionUtil.unwrapThrowable(ex)); } finally { asyncContext.complete(); } }); } }
/** * 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; }
HttpServletRequest request = actionRequest.getHttpServletRequest(); HttpServletResponse response = actionRequest.getHttpServletResponse();
/** * {@inheritDoc} */ @Override public Object intercept(final ActionRequest actionRequest) throws Exception { HttpServletRequest servletRequest = actionRequest.getHttpServletRequest(); // detect multipart request if (ServletUtil.isMultipartRequest(servletRequest)) { servletRequest = new MultipartRequestWrapper(servletRequest, fileUploader.get(), madvocEncoding.getEncoding()); actionRequest.bind(servletRequest); } // do it inject(actionRequest); final Object result = actionRequest.invoke(); outject(actionRequest); return result; }
/** * 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; }