Package org.jrest4guice.rest

Source Code of org.jrest4guice.rest.RestContextManager

package org.jrest4guice.rest;

import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

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

import org.apache.velocity.VelocityContext;
import org.commontemplate.core.Context;
import org.commontemplate.engine.Engine;
import org.jrest4guice.client.ModelMap;
import org.jrest4guice.guice.PersistenceGuiceContext;
import org.jrest4guice.security.SecurityContextProvoider;


/**
*
* @author <a href="mailto:zhangyouqun@gmail.com">cnoss (QQ:86895156)</a>
*
*/
@SuppressWarnings("unchecked")
public class RestContextManager {
  static final ThreadLocal<HttpContext> httpContext = new ThreadLocal<HttpContext>();
  static final ThreadLocal<String> currentRestUri = new ThreadLocal<String>();
  static final ThreadLocal<VelocityContext> velocityContext = new ThreadLocal<VelocityContext>();
  static final ThreadLocal<Map> freemarkderContext = new ThreadLocal<Map>();
  static final ThreadLocal<Context> ctlContext = new ThreadLocal<Context>();
 
  //CTL引擎
  private static Engine ctlEngine;
 
  public static Engine getCTLEngine(){
    return ctlEngine;
  }
  /**
   * 设置CTL引擎
   * @param engine
   */
  public static void setCTLEngine(Engine engine){
    if(ctlEngine == null)
      ctlEngine = engine;
  }
 
  public static Context getCTLContext(){
    if(ctlEngine == null)
      return null;
    Context context = ctlContext.get();
    if(context == null){
      context = ctlEngine.createContext(new StringWriter());
      ctlContext.set(context);
    }
    return context;
  }

  public static VelocityContext getVelocityContext(){
    VelocityContext context = velocityContext.get();
    if(context == null){
      context = new VelocityContext();
      velocityContext.set(context);
    }
    return context;
  }

  public static Map getFreemarkerContext(){
    Map context = freemarkderContext.get();
    if(context == null){
      context = new HashMap();
      freemarkderContext.set(context);
    }
    return context;
  }

  public static void setCurrentRestUri(String url){
    currentRestUri.set(url);
  }
 
  public static String getCurrentRestUri(){
    return currentRestUri.get();
  }
 
  private RestContextManager() {
  }

  public static HttpContext getContext(){
    return httpContext.get();
  }

  public static void setContext(HttpServletRequest request,
      HttpServletResponse response, ModelMap param) {
    httpContext.set(new HttpContext(request, response, param));
  }

  public static void clearContext() {
    httpContext.remove();
    currentRestUri.remove();
    velocityContext.remove();
    ctlContext.remove();
    freemarkderContext.remove();
    SecurityContextProvoider.clearCurrentSecurityContext();
    PersistenceGuiceContext.getInstance().closePersistenceContext();
  }

  public static HttpServletRequest getRequest() {
    HttpContext context = httpContext.get();
    if (null == context) {
      return null;
    }

    return context.getRequest();
  }

  public static HttpServletResponse getResponse() {
    HttpContext context = httpContext.get();
    if (null == context) {
      return null;
    }

    return context.getResponse();
  }

  public static ModelMap getModelMap() {
    HttpContext context = httpContext.get();
    if (null == context) {
      return null;
    }

    return context.getModelMap();
  }

  public static class HttpContext {
    final HttpServletRequest request;
    final HttpServletResponse response;
    final ModelMap modelMap;

    HttpContext(HttpServletRequest request, HttpServletResponse response,
        ModelMap param) {
      this.request = request;
      this.response = response;
      this.modelMap = param;
    }

    HttpServletRequest getRequest() {
      return request;
    }

    HttpServletResponse getResponse() {
      return response;
    }

    public ModelMap getModelMap() {
      return modelMap;
    }
  }
}
TOP

Related Classes of org.jrest4guice.rest.RestContextManager

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.