jexl 표현 식 응용

1819 단어 자바
jexl 표현 식 응용
package com.exp;

import junit.framework.TestCase;

import org.apache.commons.jexl2.Expression;
import org.apache.commons.jexl2.JexlContext;
import org.apache.commons.jexl2.JexlEngine;
import org.apache.commons.jexl2.MapContext;

public class Test extends TestCase {

    /**
     * 
     * @desc 

     *     :        :test,     :
     * --------
     * c1 c2 c3
     * --------
     * 1 2 3
     * 2 1 0
     * ...
     * --------
     *             ,      ,         ,    ;
     * 
     *   1: c1>c2, c3=0;  c3   ;
     *                    ,              ,
     *            ,            ,        。
     * 
     *     :
     *   jexl   ,          ,     ,    。
     * commons-jexl-2.1.1.jar
     */
public static void testExpr() {
Expression expr;
JexlContext ctxt = new MapContext();
JexlEngine jexl = new JexlEngine();
/ / 표현 식
String exps = "if(c1>c2) {c3=0}";
expr = jexl.createExpression(exps);
// case 1
ctxt.set("c1", 1);
ctxt.set("c2", 2);
expr.evaluate(ctxt);
assertFalse((Integer) ctxt.get("c3") == (Integer) (0));
// case 2
ctxt.set("c1", 2);
ctxt.set("c2", 1);
expr.evaluate(ctxt);
assertTrue((Integer) ctxt.get("c3") == (Integer) (0));
}
}

좋은 웹페이지 즐겨찾기