Enum型を扱えるようにする
Ognlも含めJDK5でビルドし直すだけでは治らなかった。Ognlの方は古いバージョンでも認識するけど。で、追った結果、JDTがEnumのフィールドをpublic static finalなメンバと見なしていないことが原因だと判明。うーん言語仕様的には、同等なはずなのに…。で仕方がないので、以下の対策を行うことで解決しました。
//** org.seasar.kijimuna.core.internal.rtti.DefaultRtti#isPublicMember(248) ** //if (!Flags.isPublic(flags)) { if (Flags.isPublic(flags) == false && Flags.isEnum(flags) == false) { return false; } //** org.seasar.kijimuna.core.internal.rtti.DefaultRtti#addAllFields(694) ** /*ret.put(name, new DefaultRttiFieldDescriptor(this, name, loader.loadRtti(typeSignature), Flags.isFinal(flags), Flags.isStatic(flags)));*/ ret.put(name, new DefaultRttiFieldDescriptor(this, name, loader.loadRtti(typeSignature), Flags.isFinal(flags) | Flags.isEnum(flags), Flags.isStatic(flags) | Flags.isEnum(flags)));
※インデントは加工しています。
kijimunaコミッタさん、見てらしたら対応考えていただけると嬉しいです(元は私の向かいに座っているうちの人ですが…)。
上記パッチをあてたものを以下に転がしておきます。plugins/org.seasar.kijimuna.core_1.1.3/KijimunaCore.jarと置き換えれば動きます。