-ナビゲーション

Ikushipeのナビゲーションまわりを仕様変更。
以前はこんな感じで書いてました。

@WebPage
public interface IndexPage {
  @EventHandler(moveTo=HelloPage.class)
  Class<?> hello();
}

これを、

@WebPage
public interface IndexPage {
  Class<HeloPage> hello();
}

これでOKな感じに。固定の遷移先なら、固定の返値型にて示してもいいんじゃないかと。あわせて、Eclipseプラグインの都合から、アプリケーションはページを登録するようにしました。流行的には明示しなくても配置関係でざくっと解決するフレームワークが喜ばれてるようだけど、プラグインにきついんですよ。IkushipeはJavaVMとIDEに優しい仕組みなんで、ここに関しては人間(=漢w)に負担をかけることにしました。

@WebApplication
public interface MyApplication {
  Class<IndexPage> index();
  Class<HelloPage> hello();
}

メソッドの名前がページの名前です。また、これらをロジックつきの具象メソッドで書けるようにしました。

@WebApplication
public class YourApplication {
  @PageResolver(possibleTo={IndexPage.class, HelloPage.class}) 
  public Class<?> index(MyLogic logic, HttpServletRequest req) {
    if(logic.isIndex(req) {
      return IndexPage.class;
    }
    return HelloPage.class;
  }
}