Entity
S2Direcotryでは、ディレクトリのエントリを写像するエンティティを利用してエントリの値を読み書きします。エンティティはフィールドとsetter/getterメソッドを定義した単純なPOJO(Plain Old Java Object)で構成されます。また、エンティティにS2Directoryのための情報を定義しておきたい場合はアノテーションを書くことが出来ます。生成されたPOJOは、アプリケーションで利用するエンティティに応じて、カスタマイズするなどして利用してください。
Directory POJO Generator
S2Directoryのためのエンティティは、Directory POJO Generatorを利用することで、稼働中のディレクトリサーバからスキーマ情報を取得し、POJOクラスを生成することが出来ます。
使い方
実行したディレクトリにentityディレクトリが作成され、そのディレクトリにPOJOクラスが出力されます。
- localhost のポート 389 に接続する場合 (Default)
java -jar s2-directory-generator-X.X.X.jar
- ldap.example.org のポート 389 に接続する場合
java -jar s2-directory-generator-X.X.X.jar ldap.example.org 389
アノテーション
S2Directoryで使用するエンティティに定義可能なフィールドによるアノテーション(フィールドアノテーション)の一覧です。
OBJECTCLASSESアノテーション
エンティティとオブジェクトクラスとの関連付けを明示的に指定する場合はOBJECTCLASSESアノテーションを使用します。OBJECTCLASSESアノテーションを明示的に指定しなかった場合、エンティティクラス名をオブジェクトクラス名として使用します。ここで登場するオブジェクトクラスは、DaoインタフェースのARGSアノテーションが定義されていない検索関数を実行される場合に使用するフィルタとなります。
フィールドアノテーションの場合
- posixAccountの例 (クラス名がPosixAccountの場合、省略可)
public class PosixAccount implements Serializable { public static final String OBJECTCLASSES = "posixAccount, inetOrgPerson"; ... 省略 ... }
Tigerアノテーションの場合 (S2DirectoryTiger必須)
- posixAccountとinetOrgPersonのオブジェクトクラスを指定する例
@ObjectClasses( { "posixAccount", "inetOrgPerson" }) public class PosixAccount implements Serializable { ... 省略 ... }
ATTRIBUTE/COLUMNアノテーション
エンティティに定義されたフィールドとエントリの属性との関連付けを明示的に指定する場合はATTRIBUTE/COLUMNアノテーションを使用します。ATTRIBUTE/COLUMNアノテーションを明示的に指定しなかった場合、フィールド名を属性名として使用します。
なお、ATTRIBUTEアノテーションとCOLUMNアノテーションが同時に指定されている場合、ATTRIBUTEアノテーションの値が優先して利用されます。
フィールドアノテーションの場合
- フィールドhomeに対応する属性名をhomeDirectoryにする例
public static final String home_ATTRIBUTE = "homeDirectory"; private String home;
- フィールドgidに対応する属性名をgidNumberにする例 (ATTRIBUTEアノテーションの値が優先されます)
public static final String gid_ATTRIBUTE = "gidNumber"; public static final String gid_COLUMN = "gidDummy";
Tigerアノテーションの場合 (S2DirectoryTiger必須)
Columnアノテーションは、S2Dao Tigerの持つアノテーションも利用できます。
- フィールドhomeに対応する属性名をhomeDirectoryにする例
@Attribute("homeDirectory") private String home;
- フィールドgidに対応する属性名をgidNumberにする例 (ATTRIBUTEアノテーション > S2DirectoryのColumnアノテーション > S2DaoのColumnアノテーションの順で値が優先されます)
@Attribute("homeDirectory") @Column("homeDummy") @org.seasar.dao.annotation.tiger.Column("gidNumber") private String gid;