[Seasar-user:404] Adviceのスタック

B gluegent.com Masataka Kurihara kurihara
2004年 3月 3日 (水) 13:40:28 JST


栗原です。

  まずここ2日みて、Seasarでほしい機能の1/2です。

・Adviceを同一Joinpointにスタックしたい〜

public class Bootstrap {
  public static void main(String[] args) {
    // コンテナ準備
    S2Container container = new S2ContainerImpl();
    ComponentDef compDef = new ComponentDefImpl(SpeakerImpl.class);
    container.register(compDef);
    Pointcut pointcut = new PointcutImpl(new String[]{"say"});
    AspectDef aspectDef1 = 
      new AspectDefImpl(new TraceAdvice(), pointcut);
    AspectDef aspectDef2 = 
      new AspectDefImpl(new TestAdvice(), pointcut);
    compDef.addAspectDef(aspectDef1);
    compDef.addAspectDef(aspectDef2);

    // クライアント実行
    Speaker speaker = (Speaker)container.getComponent(Speaker.class);
    speaker.say();
  }
}

  いまのAPIで同じPointcutにAdviceを複数登録しようとすると、上のコードに
なるかと思うのですが、クライアント実行しての結果ははじめに登録した 
TraceAdvice が動いて結果を返します。二番目に登録した TestAdvice は動作
しません。実際にも、ログを出すAdvice仕込んだら他のAOPコンポーネント使
えないのは困るかと。。。

--
株式会社グルージェント
栗原 傑享(くりはら まさたか)
渋谷区渋谷3-7-6 第6矢木ビル4F
TEL:03-5469-8869 FAX:03-5469-8879
URL:http://www.gluegent.com/
--





Seasar-user メーリングリストの案内