Search in sources :

Example 1 with WebRequestContext

use of net.jforum.context.web.WebRequestContext in project jforum2 by rafaelsteil.

the class InstallServlet method service.

/** 
	 * @see javax.servlet.http.HttpServlet#service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
	 */
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    try {
        String encoding = SystemGlobals.getValue(ConfigKeys.ENCODING);
        req.setCharacterEncoding(encoding);
        // Request
        RequestContext request = new WebRequestContext(req);
        ResponseContext response = new WebResponseContext(res);
        request.setCharacterEncoding(encoding);
        JForumExecutionContext ex = JForumExecutionContext.get();
        ForumContext forumContext = new JForumContext(request.getContextPath(), SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION), request, response, false);
        ex.setForumContext(forumContext);
        // Assigns the information to user's thread 
        JForumExecutionContext.set(ex);
        // Context
        SimpleHash context = JForumExecutionContext.getTemplateContext();
        context.put("contextPath", req.getContextPath());
        context.put("serverName", req.getServerName());
        context.put("templateName", "default");
        context.put("serverPort", Integer.toString(req.getServerPort()));
        context.put("I18n", I18n.getInstance());
        context.put("encoding", encoding);
        context.put("extension", SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION));
        context.put("JForumContext", forumContext);
        context.put("version", SystemGlobals.getValue(ConfigKeys.VERSION));
        if (SystemGlobals.getBoolValue(ConfigKeys.INSTALLED)) {
            JForumExecutionContext.setRedirect(request.getContextPath() + "/forums/list" + SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION));
        } else {
            // Module and Action
            String moduleClass = ModulesRepository.getModuleClass(request.getModule());
            context.put("moduleName", request.getModule());
            context.put("action", request.getAction());
            BufferedWriter out = new BufferedWriter(new OutputStreamWriter(response.getOutputStream(), encoding));
            try {
                if (moduleClass != null) {
                    // Here we go, baby
                    Command c = (Command) Class.forName(moduleClass).newInstance();
                    Template template = c.process(request, response, context);
                    if (JForumExecutionContext.getRedirectTo() == null) {
                        response.setContentType("text/html; charset=" + encoding);
                        template.process(context, out);
                        out.flush();
                    }
                }
            } catch (Exception e) {
                response.setContentType("text/html; charset=" + encoding);
                if (out != null) {
                    new ExceptionWriter().handleExceptionData(e, out, request);
                } else {
                    new ExceptionWriter().handleExceptionData(e, new BufferedWriter(new OutputStreamWriter(response.getOutputStream())), request);
                }
            }
        }
        String redirectTo = JForumExecutionContext.getRedirectTo();
        if (redirectTo != null) {
            response.sendRedirect(response.encodeRedirectURL(redirectTo));
        }
    } finally {
        JForumExecutionContext.finish();
    }
}
Also used : ExceptionWriter(net.jforum.exceptions.ExceptionWriter) JForumContext(net.jforum.context.JForumContext) ForumContext(net.jforum.context.ForumContext) ServletException(javax.servlet.ServletException) IOException(java.io.IOException) BufferedWriter(java.io.BufferedWriter) Template(freemarker.template.Template) WebResponseContext(net.jforum.context.web.WebResponseContext) WebRequestContext(net.jforum.context.web.WebRequestContext) ResponseContext(net.jforum.context.ResponseContext) WebResponseContext(net.jforum.context.web.WebResponseContext) SimpleHash(freemarker.template.SimpleHash) OutputStreamWriter(java.io.OutputStreamWriter) RequestContext(net.jforum.context.RequestContext) WebRequestContext(net.jforum.context.web.WebRequestContext) JForumContext(net.jforum.context.JForumContext)

Example 2 with WebRequestContext

use of net.jforum.context.web.WebRequestContext in project jforum2 by rafaelsteil.

the class JForum method service.

/**
	 * @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
public void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
    Writer out = null;
    JForumContext forumContext = null;
    RequestContext request = null;
    ResponseContext response = null;
    String encoding = SystemGlobals.getValue(ConfigKeys.ENCODING);
    try {
        // Initializes the execution context
        JForumExecutionContext ex = JForumExecutionContext.get();
        request = new WebRequestContext(req);
        response = new WebResponseContext(res);
        this.checkDatabaseStatus();
        forumContext = new JForumContext(request.getContextPath(), SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION), request, response);
        ex.setForumContext(forumContext);
        JForumExecutionContext.set(ex);
        // Setup stuff
        SimpleHash context = JForumExecutionContext.getTemplateContext();
        ControllerUtils utils = new ControllerUtils();
        utils.refreshSession();
        context.put("logged", SessionFacade.isLogged());
        // Process security data
        SecurityRepository.load(SessionFacade.getUserSession().getUserId());
        utils.prepareTemplateContext(context, forumContext);
        String module = request.getModule();
        // Gets the module class name
        String moduleClass = module != null ? ModulesRepository.getModuleClass(module) : null;
        if (moduleClass == null) {
            // Module not found, send 404 not found response
            response.sendError(HttpServletResponse.SC_NOT_FOUND);
        } else {
            boolean shouldBan = this.shouldBan(request.getRemoteAddr());
            if (!shouldBan) {
                context.put("moduleName", module);
                context.put("action", request.getAction());
            } else {
                moduleClass = ModulesRepository.getModuleClass("forums");
                context.put("moduleName", "forums");
                ((WebRequestContext) request).changeAction("banned");
            }
            if (shouldBan && SystemGlobals.getBoolValue(ConfigKeys.BANLIST_SEND_403FORBIDDEN)) {
                response.sendError(HttpServletResponse.SC_FORBIDDEN);
            } else {
                context.put("language", I18n.getUserLanguage());
                context.put("session", SessionFacade.getUserSession());
                context.put("request", req);
                context.put("response", response);
                out = this.processCommand(out, request, response, encoding, context, moduleClass);
            }
        }
    } catch (Exception e) {
        this.handleException(out, response, encoding, e, request);
    } finally {
        this.handleFinally(out, forumContext, response);
    }
}
Also used : WebResponseContext(net.jforum.context.web.WebResponseContext) WebRequestContext(net.jforum.context.web.WebRequestContext) ResponseContext(net.jforum.context.ResponseContext) WebResponseContext(net.jforum.context.web.WebResponseContext) SimpleHash(freemarker.template.SimpleHash) WebRequestContext(net.jforum.context.web.WebRequestContext) RequestContext(net.jforum.context.RequestContext) OutputStreamWriter(java.io.OutputStreamWriter) ExceptionWriter(net.jforum.exceptions.ExceptionWriter) BufferedWriter(java.io.BufferedWriter) Writer(java.io.Writer) ServletException(javax.servlet.ServletException) ForumStartupException(net.jforum.exceptions.ForumStartupException) IOException(java.io.IOException) JForumContext(net.jforum.context.JForumContext)

Example 3 with WebRequestContext

use of net.jforum.context.web.WebRequestContext in project jforum2 by rafaelsteil.

the class OnlineUsersTest method setUp.

protected void setUp() throws Exception {
    new SessionFacade().setCacheEngine(new DefaultCacheEngine());
    RequestContext requestContext = new WebRequestContext(new FakeHttpRequest());
    ResponseContext responseContext = new WebResponseContext(new FakeHttpResponse());
    ForumContext forumContext = new JForumContext(requestContext.getContextPath(), SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION), requestContext, responseContext, false);
    JForumExecutionContext ex = JForumExecutionContext.get();
    ex.setForumContext(forumContext);
    JForumExecutionContext.set(ex);
    SystemGlobals.setValue(ConfigKeys.ANONYMOUS_USER_ID, Integer.toString(ANONYMOUS));
}
Also used : WebResponseContext(net.jforum.context.web.WebResponseContext) WebRequestContext(net.jforum.context.web.WebRequestContext) FakeHttpResponse(net.jforum.http.FakeHttpResponse) ResponseContext(net.jforum.context.ResponseContext) WebResponseContext(net.jforum.context.web.WebResponseContext) DefaultCacheEngine(net.jforum.cache.DefaultCacheEngine) JForumContext(net.jforum.context.JForumContext) ForumContext(net.jforum.context.ForumContext) RequestContext(net.jforum.context.RequestContext) WebRequestContext(net.jforum.context.web.WebRequestContext) FakeHttpRequest(net.jforum.http.FakeHttpRequest) JForumContext(net.jforum.context.JForumContext)

Aggregations

JForumContext (net.jforum.context.JForumContext)3 RequestContext (net.jforum.context.RequestContext)3 ResponseContext (net.jforum.context.ResponseContext)3 WebRequestContext (net.jforum.context.web.WebRequestContext)3 WebResponseContext (net.jforum.context.web.WebResponseContext)3 SimpleHash (freemarker.template.SimpleHash)2 BufferedWriter (java.io.BufferedWriter)2 IOException (java.io.IOException)2 OutputStreamWriter (java.io.OutputStreamWriter)2 ServletException (javax.servlet.ServletException)2 ForumContext (net.jforum.context.ForumContext)2 ExceptionWriter (net.jforum.exceptions.ExceptionWriter)2 Template (freemarker.template.Template)1 Writer (java.io.Writer)1 DefaultCacheEngine (net.jforum.cache.DefaultCacheEngine)1 ForumStartupException (net.jforum.exceptions.ForumStartupException)1 FakeHttpRequest (net.jforum.http.FakeHttpRequest)1 FakeHttpResponse (net.jforum.http.FakeHttpResponse)1