Package com.britesnow.snow.web.renderer.freemarker

Source Code of com.britesnow.snow.web.renderer.freemarker.TemplateDirectiveProxy

/* Copyright 2009 Jeremy Chone - Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0
*/
package com.britesnow.snow.web.renderer.freemarker;

import static com.britesnow.snow.web.renderer.freemarker.FreemarkerUtil.getDataModel;

import java.io.IOException;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.britesnow.snow.web.RequestContext;
import com.britesnow.snow.web.handler.WebTemplateDirectiveHandlerRef;

import freemarker.core.Environment;
import freemarker.template.TemplateDirectiveBody;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel;

public class TemplateDirectiveProxy implements TemplateDirectiveModel {
    static private Logger logger = LoggerFactory.getLogger(TemplateDirectiveProxy.class);
   
    static final String FREEMARKER_DIRECTIVE_CONTEXT = "freemarkerDirectiveContext";
   
    private String name;
    private WebTemplateDirectiveHandlerRef webTemplateDirectiveRef;
   
    public TemplateDirectiveProxy(String name,WebTemplateDirectiveHandlerRef webTemplateDirectiveRef){
        this.name = name;
        this.webTemplateDirectiveRef = webTemplateDirectiveRef;
    }

    public String getName(){
        return name;
    }
   
    public void execute(Environment env, Map paramMap, TemplateModel[] model, TemplateDirectiveBody body) throws TemplateException,
                            IOException {
        RequestContext rc = getDataModel("r.rc", RequestContext.class);
        try {
            rc.setAttribute(FREEMARKER_DIRECTIVE_CONTEXT, new FreemarkerDirectiveContext(env, paramMap));
            webTemplateDirectiveRef.invoke(rc);
        } catch (Exception e) {
            logger.error(e.getMessage());
        }finally{
            rc.removeAttribute(FREEMARKER_DIRECTIVE_CONTEXT);
        }
    }

}
TOP

Related Classes of com.britesnow.snow.web.renderer.freemarker.TemplateDirectiveProxy

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.