package com.shin1o;
public class OkUtil {
public static String staticMethod() { return "OK!"; }
}
package jp.or.hoge;
public class NgUtil {
public static String staticMethod() { return "NG!"; }
}
import static org.junit.Assert.*;
import ognl.Ognl;
import ognl.OgnlContext;
import ognl.OgnlException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class OgnlTest {
private OgnlContext ognlContext;
@Before public void setUp() {
ognlContext = new OgnlContext();
}
@After public void tearDown() {
ognlContext.clear();
ognlContext = null;
}
@Test public void staticMethod() throws OgnlException {
assertEquals("OK!", com.shin1o.OkUtil.staticMethod());
assertEquals("NG!", jp.or.hoge.NgUtil.staticMethod());
}
@Test public void okStaticMethod() throws OgnlException {
assertEquals("OK!", Ognl.getValue(Ognl.parseExpression("@com.shin1o.OkUtil@staticMethod()"), ognlContext));
}
@Test public void ngStaticMethod() throws OgnlException {
// FQCNに"or"を含んだclassのstaticメソッドを実行する式が解析エラーになる…。
assertEquals("NG!", Ognl.getValue(Ognl.parseExpression("@jp.or.hoge.NgUtil@staticMethod()"), ognlContext));
}
}
ognl.ExpressionSyntaxException: Malformed OGNL expression: @jp.or.hoge.NgUtil@staticMethod()
[ognl.ParseException: Encountered " "or" "or "" at line 1, column 5.
Was expecting:
...
]
at ognl.Ognl.parseExpression(Ognl.java:112)
at com.shin1o.OgnlTest.ngStaticMethod(OgnlTest.java:43)
...
FQCNに"or"を含んだclassのstaticメソッドを実行する式が解析エラーになってしまい、ngStaticMethod()が通らない。「jp.
or.hoge.NgUtil」の「or」の部分を意味のある単語だと読み違えてしまっているらしぃ。"jp.or.hoge"はFQCNだよー"or"はその一部だよー、と伝えてあげる方法がワカラナイ!どなたか知っている方、教えて下さい!!うまいキーワードが見つからず、ぐぐっても解決に辿り着けなかったのです。
0 件のコメント:
コメントを投稿