2010年3月2日火曜日

フレームワーク奮闘記 その5 何となく出来てきた。

どうも、完全に一ヶ月間放置してました。。。
ところで、まあ良い感じで仕上がってきたので、経過報告がてら現状の問題点とかを。。。

管理方法は以下の様にする。
Service
     |__ MainMenu
     |__ SubMenu
     |__ Contents
            |__ Page
それぞれのコンテンツに対してライフサイクルを設ける。
GlobalSession管理<アプリケーションスコープでのSESSION>
      |__ MainMenu
      |__ User情報とか
      |__ セキュリティ情報とか
ServiceSession管理 
     |__Service
      |__SubMenu
      |__Contents
            |__ Page
実際にちょこまか使うのはContents配下のPageたちなので、ContentsとPageはまた別個に持つ。
これって良く考えると、ServiceSessionいらないんじゃないかと思うんだけど、まあいいや。
イメージ的に下の様な感じ
   request.getSession().setAttribute("SoilServiceSession",new HashMap);
   //このHashMapのObjectに更に色々詰めていく。
  Map sessMap = (Map) request.getSession().getAttribute("SoilServiceSession");
   sessMap.put("SoilContents",new Contents());
   sessMap.put(contetns.getClass().getName(), new HashMap);
  //キーを常に管理しておいて、必要なくなればnullを突っ込んで参照を切ってしまう。
   //contetnsは飽くまで管理上の区分けなので、表側には殆ど出てこない。。。
てな感じで管理しようかなぁと漠然と思っている。何か良い方法無いのかなぁとも思いつつ。
後、この形にしたことで少しずつAnnotationの有用性も出てきた。
まだまだ、世にあるフレームワークには程遠いけど。。。
    @Control(next = Next.class,
             back = Back.class)
    public abstract class Page{

        public void process(){
               
        }
    }
上記の様な感じ。抽象クラスなので実際に呼び出されるところでAnnotation使って、
自身の管理する次のクラスと前のクラスが分かるようにしてみた。
描画部分はVelocityで、そんでもってAction系の所は意外と普通にReflectionで作ってしまったので、
ほとんどエセRuby on Railsな感じになってきている。
ある程度、まとまったらもう少し奥歯に物挟まっていないような感じで書いてみたいもんだ。
本気で良い感じなってきたら公開してしまうのもありかなぁと。。。
もともと、オープンソースな土壌で生まれ育ったから、そこら辺は死守したいですな。
とまあ、良く分からない感じですけど、駄文におき付き合い頂きどうもでした。

0 件のコメント: