[Seasar-dev:197] Re: [S2Container] アクセサメソッドをコンテナ側で自動生成できないか

Koichi Kobayashi koichik
2005年 12月 9日 (金) 06:44:08 JST


小林 (koichik) です.

Date:    Tue, 06 Dec 2005 23:38:53 +0900
From:    KOMORI Yusuke <y-komori @ nifty.ne.jp>
To:      seasar-dev @ lists.sourceforge.jp
Subject: [Seasar-dev:196] Re: [S2Container] アクセサメソッドをコンテナ側で自動生成できないか

>  S2AOP まわりの現状のコードもだいたい目を通していますので、小林さんの提
> 案通り、DiconでInterTypeとして定義できるよう、実装を考えてみたいと思いま
> す。

InterType ですが,次のようなインタフェースで考えています.

----------------------------------------------------------------------
package org.seasar.framework.aop;

import javassist.CtClass;

public interface InterType {
    void introduce(Class targetClass, CtClass enhancedClass);
}
----------------------------------------------------------------------

targetClass は <component> 要素の class 属性で指定されたクラス,
enhancedClass は Javassist によってエンハンス中のクラスです.
<aspect> 要素が指定されている場合は,ポイントカットに含まれる
メソッドがオーバーライド済みです.

InterType 実装クラスは <interType> 要素が記述された順で
introduce() メソッドが呼び出されます.
フィールドやメソッド,実装するインタフェースを追加する等
自由にできます.
# 自由にできすぎてヤヴァいくらい? (^^;

なお,現在考えている実装では InterType が追加したメソッドに対して
アスペクト (Interceptor) は適用できません.
あまり問題になるとは思えませんが,TraceInterceptor などで
トレースが表示されなくてビックリということがあるかも.

ご意見あればお願いします.

-- 
<signature>
    <name>Koichi Kobayashi</name>
    <e-mail>koichik @ improvement.jp</e-mail>
</signature>



seasar-dev メーリングリストの案内