/*
* Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com>
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: FilteredTagProcessorJanino.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.template;
import java.util.Map;
import org.codehaus.janino.ExpressionEvaluator;
public class FilteredTagProcessorJanino extends FilteredTagProcessor
{
private static FilteredTagProcessor sInstance = null;
public static FilteredTagProcessor getInstance()
{
if (null == sInstance)
{
sInstance = new FilteredTagProcessorJanino();
}
return sInstance;
}
public String getLanguage()
{
return "JANINO";
}
public Object processExpression(Template template, Class rootType, String rootName, Object rootValue, String expression, Map<String, Object> context)
throws Exception
{
ExpressionEvaluator evaluator = (ExpressionEvaluator)template.getCacheObject(rootName+expression);
if (null == evaluator)
{
evaluator = new ExpressionEvaluator(
expression,
Boolean.TYPE,
new String[] {"context", rootName},
new Class[] {Map.class, rootType},
new Class[] {Exception.class},
getClass().getClassLoader());
template.cacheObject(rootName+expression, evaluator);
}
Boolean result = (Boolean)evaluator.evaluate(new Object[] {context, rootValue});
return null != result && result.booleanValue();
}
}