Package com.dotmarketing.viewtools

Source Code of com.dotmarketing.viewtools.VelocityWebUtil

/**
*
*/
package com.dotmarketing.viewtools;

import java.io.StringWriter;

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

import org.apache.velocity.Template;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.context.Context;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.tools.view.context.ViewContext;
import org.apache.velocity.tools.view.tools.ViewTool;

import com.dotmarketing.util.Config;
import com.dotmarketing.util.Logger;
import com.dotmarketing.util.UtilMethods;
import com.dotmarketing.util.VelocityUtil;
import com.dotmarketing.velocity.VelocityServlet;

/**
* @author Jason Tesser
* @since 1.6.5
*
*/
public class VelocityWebUtil implements ViewTool {

  static final String _logVariable = "LOG_VELOCITY_TEMPLATES";
  private Context ctx;
  private HttpServletRequest req;
  boolean debug =false;
 
  // private HttpServletRequest request;
  public void init(Object obj) {
    ViewContext context = (ViewContext) obj;
    this.req = context.getRequest();
    this.ctx = context.getVelocityContext();
    this.debug = Config.getBooleanProperty(_logVariable, false);
 
    if(!this.debug){
      try{
        if(ctx.get("request") != null){
          if(((HttpServletRequest) ctx.get("request")).getParameter(_logVariable) != null ||
              req.getSession().getAttribute(_logVariable) != null
          ){
            this.debug = true;
           
           
            if("false".equals(req.getParameter(_logVariable))){
              this.debug = true;
              req.getSession().removeAttribute(_logVariable);
            }else{
              req.getSession().setAttribute(_logVariable, "true");
            }
           
           
           
          }
        }
      }
      catch(Exception e){
        Logger.debug(VelocityWebUtil.class,e.getMessage(),e);
      }
    }
   
  }

  public String mergeTemplate(String templatePath) throws ResourceNotFoundException, ParseErrorException, Exception{
    VelocityServlet.velocityCtx.set(ctx);
    VelocityEngine ve = VelocityUtil.getEngine();
    Template template = null;
    StringWriter sw = new StringWriter();
   
    if(this.debug){
      Logger.info(VelocityWebUtil.class, _logVariable + ": " + templatePath);     
    }
    template = ve.getTemplate(templatePath);
   
    template.merge(ctx, sw);

    return sw.toString();
   
  }
 
 
  public void mergeTemplate(String templatePath, HttpServletResponse response) throws ResourceNotFoundException, ParseErrorException, Exception{
    VelocityServlet.velocityCtx.set(ctx);
    VelocityEngine ve = VelocityUtil.getEngine();
    Template template = null;
   
    if(this.debug){
      Logger.info(VelocityWebUtil.class, _logVariable + ": " + templatePath);     
    }
   
    template = ve.getTemplate(templatePath);
    template.merge(ctx, response.getWriter());

  }
 
 
 
 
 
  public boolean doesVelocityResourceExist(String templatePath){
    VelocityEngine ve = VelocityUtil.getEngine();
    try {
      ve.getTemplate(templatePath);
    } catch (ResourceNotFoundException e) {
      return false;
    }catch (Exception e) {
      Logger.debug(VelocityWebUtil.class,e.getMessage(),e);
    }
    return true;
  }
 
  public boolean isVelocityFile(String path){
    if(!UtilMethods.isSet(path)){
      return false;
    }
    path = path.toLowerCase();
    return (path.endsWith(".vtl")
      ||    path.endsWith(".vm")
      ||    path.endsWith(".html")
      ||    path.endsWith(".htm")
    );
  }
}
TOP

Related Classes of com.dotmarketing.viewtools.VelocityWebUtil

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.