パッケージ org.seasar.aptina.beans

JavaBeans を生成するためのフィールドを定義した状態クラスに付与する注釈型や列挙型を提供します.

参照先:
          説明

列挙型の概要
AccessType プロパティのアクセス型です.
 

注釈型の概要
BeanState JavaBean の状態を保持するクラスであることを示す注釈です.
JavaBean Aptina Beans によって BeanState で注釈されたクラスから生成された JavaBeans であることを示す注釈です.
Property プロパティとしてアクセス可能なフィールドを注釈します.
 

パッケージ org.seasar.aptina.beans の説明

JavaBeans を生成するためのフィールドを定義した状態クラスに付与する注釈型や列挙型を提供します.

Aptina Beans の提供する Annotation Processor (BeansProcessor) は, BeanState で注釈されたクラス (以下「状態クラス」) からサブクラス (以下「Bean クラス」) を生成します. Bean クラスは,状態クラスに定義されたフィールドに対する getter/setter メソッドを持つ JavaBeans です.

状態クラス

BeanState で注釈された状態クラスは次のようなクラスでなければなりません.

Bean クラス

状態クラスから生成される Bean クラスは JavaBean で注釈され, 状態クラスと同じパッケージに生成されます. Bean クラスの名前は次のようになります.

状態クラスの名前が Abstract で始まっている場合
状態クラスの名前の先頭から Abstract を除去した名前になります.
状態クラスの名前が State で終わっている場合
状態クラスの名前の末尾から State を除去した名前になります.
状態クラスの名前が Bean で終わっている場合
状態クラスの名前の末尾に Impl を付加した名前になります.
その他の場合
状態クラスの名前の末尾に Bean を付加した名前になります.

状態クラスの名前 生成される Bean クラスの名前
AbstractHogeBean HogeBean
HogeBeanState HogeBean
HogeBean HogeBeanImpl
Hoge HogeBean

プロパティ

状態クラスの次の条件を満たすフィールドが Bean クラスのプロパティとなります.

状態クラスのフィールドに Property アノテーションを付与し, Property.access() 要素で getter/setter をどのように生成するか指定することができます. Property.access() 要素の型は AccessType です.

AccessType の値 説明
AccessType.NONE プロパティとしてアクセスしません (getter/setter とも生成されません).
AccessType.READ_ONLY 参照のみ可能なプロパティです (getter のみ生成されます).
AccessType.WRITE_ONLY 変更のみ可能なプロパティです (setter のみ生成されます). フィールドが final の場合はエラーになります.
AccessType.READ_WRITE
(デフォルト)
参照・変更とも可能なプロパティです (getter/setter とも生成されます). フィールドが final の場合, setter は生成されません.

indexed プロパティ

配列型のプロパティには, 標準の getter/setter メソッドに加えて次のメソッドが生成されます.

bound プロパティ

BeanState.boundProperties()true を指定すると bound プロパティ (PropertyChangeListener) がサポートされ, 次のメソッドが生成されます.

変更可能なプロパティごとに次のメソッドが生成されます.

constrained プロパティ

BeanState.constrainedProperties()true を指定すると constrained プロパティ (VetoableChangeListener) がサポートされ, 次のメソッドが生成されます.

変更可能なプロパティごとに次のメソッドが生成されます.

コンストラクタ

Bean クラスは状態クラスの非 private コンストラクタを引き継ぎます. 引き継ぐことのできるコンストラクタが一つもない場合はエラーとなります.

次に状態クラスの例を示します.

 @BeanState
 public abstract class FooBeanState {
     protected String aaa; // getter/setter とも生成されます
 
     final String bbb;     // final なので getter のみ生成されます
 
     @Property(access=AccessType.NONE)
     public String ccc;    // AccessType.NONE なので getter/setter とも生成されません
 
     @Property(access=AccessType.READ_ONLY)
     public String ddd;    // AccessType.READ_ONLY なので getter のみ生成されます
 
     @Property(access=AccessType.WRITE_ONLY)
     public String eee;    // AccessType.WRITE_ONLY なので setter のみ生成されます
 
     @Property(access=AccessType.READ_WRITE)
     public String fff;    // AccessType.READ_WRITE なので getter/setter とも生成されます
 
     private String ggg;   // private なので getter/setter とも生成されません
 
     public String hhh;    // public なので getter/setter とも生成されません
 
     static String iii;    // static なので getter/setter とも生成されません
 }
 

BeansProcessor は, 上記の状態クラスから次の Bean クラスを生成します.

 @JavaBean
 public class FooBean extends FooBeanState {
     public FooBean() {
         super();
     }
 
     public String getAaa() {
         return aaa;
     }
     public void setAaa(String aaa) {
         this.aaa = aaa;
     }
 
     public String getBbb() {
         return bbb;
     }
 
     public String getDdd() {
         return ddd;
     }
 
     public void setEee(String eee) {
         this.eee = eee;
     }
 
     public String getFff() {
         return fff;
     }
     public void setFff(String fff) {
         this.fff = fff;
     }
 }
 



Copyright © 2009-2010 The Seasar Foundation. All Rights Reserved.