簡単な実装が、30分くらいでできちゃったんですが・・・。
固定のクラスに対しての処理だけですけど。
こんな感じのアノテーション書いて
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface StrutsAction { String path(); String success(); }
こんな感じのPlugIn書いたら
Class c = Class.forName("test.TestAction"); StrutsAction sa = (StrutsAction)c.getAnnotation(StrutsAction.class); ActionMapping ac = new ActionMapping(); ac.setType(c.getName()); ActionForward fc = new ActionForward(); fc.setName("success"); fc.setPath(sa.success()); ac.addForwardConfig(fc); ac.setPath(sa.path()); moduleConfig.addActionConfig(ac);
こんな感じでアノテーションが書けました。
@StrutsAction(path="/test", success="/test.jsp") public class TestAction extends Action{ ... }
めちゃくちゃ素敵。
費用対効果高すぎ。