Package org.jibeframework.core.app.request

Source Code of org.jibeframework.core.app.request.JibeMvcRequestHandler

package org.jibeframework.core.app.request;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jibeframework.core.Context;
import org.jibeframework.core.util.JibeUtil;
import org.springframework.util.PatternMatchUtils;

/**
* Request handler which is facade toward Spring MVC implementation
*
* @author dhalupa
*
*/
public class JibeMvcRequestHandler implements RequestHandler {
  private static final Log logger = LogFactory.getLog(JibeMvcRequestHandler.class);
  private JibeSpringMvcDispatcher dispatcher;
  private String[] publicPattern = { "public/*", "jsloader", "cssloader" };

  public JibeMvcRequestHandler(JibeSpringMvcDispatcher dispatcher) {
    this.dispatcher = dispatcher;
  }

  // It will always be last in the pipeline
  public boolean applies(Context context) {
    return true;
  }

  public boolean shouldAuthenticate(Context context) {
    return !PatternMatchUtils.simpleMatch(publicPattern, context.getExtensionPath());
  }

  public void handleRequest(Context context) {
    HttpServletRequest request = new JibeServletRequestWrapper(context.getServletRequest());
    HttpServletResponse servletResponse = context.getServletResponse();
    try {
      dispatcher.service(request, servletResponse);
    } catch (Exception e) {
      handleException(e, context);
    }

  }

  public void handleAuthenticationFailed(Context context) {
    context.getServletResponse().setContentType("text/html");
    context.getServletResponse().setStatus(HttpServletResponse.SC_FORBIDDEN);
    try {
      context.getServletResponse().getOutputStream().flush();
    } catch (IOException e) {
      logger.error(e.getMessage(), e);
    }

  }

  public void handleException(Exception e, Context context) {
    Throwable root = JibeUtil.getRootCause(e);
    context.getServletResponse().setContentType("text/html");
    context.getServletResponse().setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    try {
      context.getServletResponse().getOutputStream().write(root.getMessage().getBytes());
      context.getServletResponse().getOutputStream().flush();
    } catch (IOException e1) {
    } finally {
      logger.error(root.getMessage(), root);
    }

  }

}
TOP

Related Classes of org.jibeframework.core.app.request.JibeMvcRequestHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.