ドメイン層 を構築するパッケージで す。ドメイン層には United Front 2 の世界をオブジェクト指向によってモデル化したクラス群が配置されます。ドメ イン層はシステムの中核的なロジックが実装されます。

org.unitedfront2.domain.accesscontrol パッケージでは、ドメイン層の中でも特にア クセス制御に関するクラスが収録されています。 AccessControl インターフェースは、資源に対 するアクセス制御ロジックを実装するためのインターフェースです。アクセス制御の対象となる資源は Resource インターフェースを実装する必要があります。 資源に対して、アクセス制御クラスは汎用的に利用できます。例えば、次のコードはユーザからのアクセスに限定する ためのアクセス制御オブジェクトを生成し、永続化しています。このアクセス制御オブジェクトをどのように利用するかは 利用する側で決めます。

AccessControl ac = domainFactory.prototype(UserOnly.class);
ac.store();

アクセス制御タイプを変更して保存するためのコードは次のとおりです。

AccessControl ac = ...
ac.changeTo(OwnerOnly.class);
ac.store();

ある資源に対し、あるユーザがアクセス可能かどうかを判定するアクセス制御ロジックの実行は次のようにして行いま す。アクセス可能な場合は何も起きませんが、アクセスが拒否された場合は AccessDeniedException が発 生します。

Resource resource = ...
User user = ...
AccessControl ac = ...
ac.access(resource, user);

アクセス制御をどのように利用するかは利用する側で決めることになります。一般的な構成図を次に示します。これは、 資源 ConcreteResource が読み取りアクセス制御メソッド readAccess と書き込みアクセス制御メソッド writeAccess の実装にアクセス制御クラスを利用している例で す。このような一般的な構成は AbstractResource などいくつかの支援クラスを継承することで実装を簡略化できます。

一般的な資源の構成例

この資源に対し、あるユーザが参照アクセス可能かどうかを判定するにアクセス制御ロジックの実行は次のようになり ます。

ContreteResource resource = ...
User user = ...
resource.readAccess(user);

このパッケージでは、アクセス制御クラスの実装を支援するクラスなども収録しています。役割別に分類したリストを示し ます。

コア

アクセス制御の中核的な概念を表すインターフェースとクラスです。これらは外部パッケージから参照されます。

Resource の実装を支援するクラス

Resource の実装を支援するクラスです。Resource を新たに作成する際に 利用できます。

AccessControl の実装を支援するクラス

AccessControl の実装を支援するクラスです。AccessControl を新た に作成する際に利用できます。AccessControlProxy は通常外部のアプリケーションが意識 する必要はありません。