/** * get the base URI of this application */ public String getApplicationURL() { final HttpServletRequest httpServletRequest = getRequest().getHttpServletRequest(); return httpServletRequest.getScheme() + "://" + httpServletRequest.getServerName() + ":" + httpServletRequest.getServerPort() + httpServletRequest.getContextPath(); }
/** * get the HTTP POST body */ public String getPostBody() throws PragmatachException { try { final ByteArrayOutputStream baos = new ByteArrayOutputStream(); IOUtils.copy(getInputStream(), baos); return baos.toString("UTF-8"); } catch (final Exception e) { throw new PragmatachException("Exception in getRequestBody", e); } }
/** * get the instance of a session-bound controller */ @SuppressWarnings("unchecked") public <T> T getSessionScopedController(Class<T> clazz) { return (T) SessionScopedControllers.getController(request.getSession(), clazz); }
/** * get the resource path, taking off the servlet context path */ public String getResourcePath() throws PragmatachException { try { final String uri = getURI(); String ret = uri.substring(getHttpServletRequest().getContextPath().length()); if (ret.endsWith("/")) { ret = ret.substring(0, ret.length() - 1); } if ((null == ret) || (ret.length() == 0)) { ret = "/"; } return ret; } catch (final Exception e) { throw new PragmatachException("Exception in resourcePath", e); } }
/** * get a resource using the servlet's class loader */ protected InputStream getResource(String resource) throws PragmatachException { try { final ResourceLoader resourceLoader = new DefaultResourceLoaderImpl(request.getServletContext()); return resourceLoader.getResource(resource); } catch (final Exception e) { throw new PragmatachException("Exception in getResource", e); } }
final String[] crackedURI = URICracker.crackURI(request.getResourcePath()); final List<PragmatachRoute> pragmatachRoutes = getMethodRoutes(request.getMethod()); if (null != pragmatachRoutes) {
@Route(uri = "/pragmatach/admin/cookies/clearCookies", method = HttpMethod.post) public Response clearCookies() throws PragmatachException { getRequest().getCookies().clearAll(); return super.render(); }
@Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) servletResponse; final HttpServletRequest request = (HttpServletRequest) servletRequest; try { if (!(response instanceof ErrorHandlerFilterRequestWrapper)) { response = new ErrorHandlerFilterRequestWrapper(response); } filterChain.doFilter(servletRequest, response); } catch (final Exception e) { final HttpErrorController httpErrorController = PragmatachControllerFactory.getHttpErrorController(new Request(request, response, Route.HttpMethod.get, null), e); try { httpErrorController.render().render(response); } catch (final Exception e2) { throw new ServletException(e2); } } }
@Override public void populateController() throws PragmatachException { PragmaticControllerSerializer.deserialize(this, new ByteArrayInputStream(getRequest().getPostBody().getBytes())); }
/** * set the controller fields based on the URL parameters */ private void processParameterData(Request request, PragmatachController pragmatachController) throws PragmatachException { try { /* * walk the fields */ final Map<String, String[]> parameterValues = request.getParameters(); for (final Entry<String, String[]> entry : parameterValues.entrySet()) { /* * set the fields */ BeanUtils.setProperty(pragmatachController, entry.getKey(), entry.getValue()); } } catch (final Exception e) { throw new PragmatachException("Exception in processFormData", e); } }
/** * add custom response headers */ private void addCustomResponseHeaders(Request request, HttpServletResponse httpServletResponse) { /* * add the render time */ final long rendertime = System.currentTimeMillis() - request.getCreationTime(); /* * add */ httpServletResponse.addHeader(RENDERTIME_HEADER, Long.toString(rendertime)); /* * record it too */ getPerformancestatistics().setLastRenderTime(rendertime); /* * record a request */ getPerformancestatistics().incrementTotalRequests(); }
if (request.getMethod() == Route.HttpMethod.post) { processFormData(pragmatachController);
/** * freemarker config */ private Configuration getConfiguration() { final Configuration configuration = new Configuration(); configuration.setLocalizedLookup(false); configuration .setTemplateExceptionHandler(new TemplateExceptionHandlerImpl()); final Request request = getRequest(); if (null != request) { final PragmatachTemplateLoader pragmatachTemplateLoader = new PragmatachTemplateLoader( getRequest().getServletContext()); configuration.setTemplateLoader(pragmatachTemplateLoader); } else { throw new RuntimeException(); } return configuration; }
@Route(uri = "/pragmatach/admin/cookies") public Response render() throws PragmatachException { cookies = getRequest().getCookies().getCookies(); return super.render(); }
@Override protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException { try { final Router requestRouter = new Router(); final Request request = new Request(httpServletRequest, httpServletResponse, Route.HttpMethod.get, getServletConfig()); final Response response = requestRouter.route(request); addCustomResponseHeaders(request, httpServletResponse); processResponse(response, httpServletResponse); } catch (final Exception e) { throw new ServletException("Exception in doGet", e); } }
/** * get properly qualified url given the http, the context, etc */ public String url_for(String page) throws PragmatachException { try { final HttpServletRequest httpServletRequest = getRequest().getHttpServletRequest(); final URI uri = new URI(httpServletRequest.getRequestURL().toString()).resolve(page); return uri.toString(); } catch (final Exception e) { throw new PragmatachException("Exception in getTemplateName", e); } } }
public Response doLogin() throws PragmatachException { final String sessionID = getRequest().getSession().getId(); if (sessionID != getRequest().getSession().getId()) { throw new PragmatachException("CSRF Exception"); } accessToken = getGoogleAccessToken(code); getUserInfo(accessToken); return super.render(); }
private Map<String, String> getPostFieldValues() throws PragmatachException { try { return PragmatachYAML.parseYAML(getRequest().getInputStream()); } catch (final Exception e) { throw new PragmatachException("Exception in getPostFieldValues", e); } }
@Route(uri = "/pragmatach/admin/login/doLogin", method = HttpMethod.post) public Response doLogin() throws PragmatachException { /* * valid u/p? */ if ((null != username) && (username.length() > 0) && (null != password) && (password.length() > 0)) { /* * check that it matches */ if ((username.compareTo(getConfigurationParameter("pragmatach.adminapp.username")) == 0) && (password.compareTo(getConfigurationParameter("pragmatach.adminapp.password")) == 0)) { /* * set session state */ this.getSessionScopedController(AdminUserController.class).setUsername(username); /* * set cookie */ getRequest().getCookies().setEncryptedCookie(BaseAdminController.USERID, username); getRequest().getCookies().setEncryptedCookie(BaseAdminController.PASSWORD, password); /* * go to main page */ return super.forward("/pragmatach/admin/"); } } return super.forward("/pragmatach/admin/login"); }