package com.gh.mygreen.xlsmapper.expression;
import java.util.Map;
import com.github.mygreen.expression.el.tld.Taglib;
/**
* 標準のEL式を使用するための実装。
* <p>利用する際には、ELのライブラリが必要です。</p>
* <p>EL2.x系とEL3.xの両方に対応しており、EL3.xが利用可能な場合は自動的にに切り替わります。
* <br>もし、直接指定したい場合は、{@link ExpressionLangaugeEL2Impl}か{@link ExpressionLangaugeEL3Impl}の実装クラスを直接指定してください。
* </p>
*
*
* @version 1.5
*
*/
public class ExpressionLanguageELImpl extends AbstractExpressionLanguageEL {
/** EL3.xが使用可能かどうか */
private static boolean AVAILABLED_EL3;
{
try {
Class.forName("javax.el.ELProcessor");
AVAILABLED_EL3 = true;
} catch (ClassNotFoundException e) {
AVAILABLED_EL3 = false;
}
}
/**
* EL式の実装クラス。
*/
private AbstractExpressionLanguageEL impl;
public ExpressionLanguageELImpl() {
if(AVAILABLED_EL3) {
this.impl = new ExpressionLangaugeEL3Impl();
} else {
this.impl = new ExpressionLangaugeEL2Impl();
}
}
/**
* {@inheritDoc}
*/
@Override
public Object evaluate(final String expression, final Map<String, ?> values) {
return impl.evaluate(expression, values);
}
/**
* {@inheritDoc}
*/
@Override
public void register(final Taglib taglib) {
impl.register(taglib);
}
}