クラス JdbcMutableAclService
- java.lang.Object
-
- org.springframework.security.acls.jdbc.JdbcAclService
-
- org.springframework.security.acls.jdbc.JdbcMutableAclService
- 実装されているすべてのインターフェース:
AclService,MutableAclService
public class JdbcMutableAclService extends JdbcAclService implements MutableAclService
MutableAclServiceの基本 JDBC 実装を提供します。デフォルト設定は HSQLDB 用です。別のデータベースを使用している場合は、
sidIdentityQueryプロパティとclassIdentityQueryプロパティを適切に設定する必要があります。他のクエリ、SQL の挿入および更新も、スキーマのバリエーションに対応するようにカスタマイズできますが、デフォルトで期待される結果と一致する結果を生成する必要があります。予想されるスキーマとその使用方法の詳細については、Spring Security リファレンスマニュアルの付録を参照してください。PostgreSQL の使用に関する情報も含まれています。
フィールドのサマリー
クラス org.springframework.security.acls.jdbc.JdbcAclService から継承されたフィールド
jdbcOperations, log
コンストラクターの概要
コンストラクター コンストラクター 説明 JdbcMutableAclService(javax.sql.DataSource dataSource, LookupStrategy lookupStrategy, AclCache aclCache)
方法の概要
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 MutableAclcreateAcl(ObjectIdentity objectIdentity)データベースに空のAclオブジェクトを作成します。protected voidcreateEntries(MutableAcl acl)渡された MutableAcl オブジェクトで定義されたすべての ACE の acl_entry に新しい行を作成します。protected voidcreateObjectIdentity(ObjectIdentity object, Sid owner)渡された ObjectIdentity の acl_object_identity テーブルにエントリを作成します。protected java.lang.LongcreateOrRetrieveClassPrimaryKey(java.lang.String type, boolean allowCreate, java.lang.Class idType)acl_classから主キーを取得し、必要に応じて新しい行を作成します。allowCreateプロパティはtrueです。protected java.lang.LongcreateOrRetrieveSidPrimaryKey(java.lang.String sidName, boolean sidIsPrincipal, boolean allowCreate)acl_sid から主キーを取得し、必要に応じて新しい行を作成し、allowCreate プロパティが true の場合に使用します。protected java.lang.LongcreateOrRetrieveSidPrimaryKey(Sid sid, boolean allowCreate)acl_sid から主キーを取得し、必要に応じて新しい行を作成し、allowCreate プロパティが true の場合に使用します。voiddeleteAcl(ObjectIdentity objectIdentity, boolean deleteChildren)指定されたエントリをデータベースから削除します。protected voiddeleteEntries(java.lang.Long oidPrimaryKey)提示された ObjectIdentity 主キーに属する acl_entry テーブルで定義されているすべての ACE を削除します。protected voiddeleteObjectIdentity(java.lang.Long oidPrimaryKey)提示された ObjectIdentity 主キーに関連付けられている acl_object_identity から単一の行を削除します。protected java.lang.LongretrieveObjectIdentityPrimaryKey(ObjectIdentity oid)渡された ObjectIdentity の acl_object_identity テーブルから主キーを取得します。voidsetAclClassIdSupported(boolean aclClassIdSupported)voidsetClassIdentityQuery(java.lang.String classIdentityQuery)acl_class テーブルに新しく作成された行の ID を取得するために使用されるクエリを設定します。voidsetClassPrimaryKeyQuery(java.lang.String selectClassPrimaryKey)voidsetDeleteEntryByObjectIdentityForeignKeySql(java.lang.String deleteEntryByObjectIdentityForeignKey)voidsetDeleteObjectIdentityByPrimaryKeySql(java.lang.String deleteObjectIdentityByPrimaryKey)voidsetForeignKeysInDatabase(boolean foreignKeysInDatabase)voidsetInsertClassSql(java.lang.String insertClass)voidsetInsertEntrySql(java.lang.String insertEntry)voidsetInsertObjectIdentitySql(java.lang.String insertObjectIdentity)voidsetInsertSidSql(java.lang.String insertSid)voidsetObjectIdentityPrimaryKeyQuery(java.lang.String selectObjectIdentityPrimaryKey)voidsetSidIdentityQuery(java.lang.String sidIdentityQuery)acl_sid テーブルに新しく作成された行の ID を取得するために使用されるクエリを設定します。voidsetSidPrimaryKeyQuery(java.lang.String selectSidPrimaryKey)voidsetUpdateObjectIdentity(java.lang.String updateObjectIdentity)MutableAclupdateAcl(MutableAcl acl)この実装では、データベース内のすべての ACE を削除し、このメソッドを呼び出すたびに再作成します。protected voidupdateObjectIdentity(MutableAcl acl)渡された MutableAcl オブジェクトに表示される新しい情報で、既存の acl_object_identity 行を更新します。クラス org.springframework.security.acls.jdbc.JdbcAclService から継承されたメソッド
findChildren, isAclClassIdSupported, readAclById, readAclById, readAclsById, readAclsById, setConversionService, setFindChildrenQuery
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
インターフェース org.springframework.security.acls.model.AclService から継承されたメソッド
findChildren, readAclById, readAclById, readAclsById, readAclsById
コンストラクターの詳細
JdbcMutableAclService
public JdbcMutableAclService(javax.sql.DataSource dataSource, LookupStrategy lookupStrategy, AclCache aclCache)
メソッドの詳細
createAcl
public MutableAcl createAcl(ObjectIdentity objectIdentity) throws AlreadyExistsException
インターフェースからコピーされた説明:MutableAclServiceデータベースに空のAclオブジェクトを作成します。エントリはありません。返されたオブジェクトは、エントリを追加するために使用されます。- 次で指定:
- インターフェース
MutableAclServiceのcreateAcl - パラメーター:
objectIdentity- 作成するオブジェクト ID- 戻り値:
- ID が設定された ACL オブジェクト
- 例外:
AlreadyExistsException- 渡されたオブジェクト ID にすでにレコードがある場合
createEntries
protected void createEntries(MutableAcl acl)
渡された MutableAcl オブジェクトで定義されたすべての ACE の acl_entry に新しい行を作成します。- パラメーター:
acl- 挿入する ACE を含む
createObjectIdentity
protected void createObjectIdentity(ObjectIdentity object, Sid owner)
渡された ObjectIdentity の acl_object_identity テーブルにエントリを作成します。acl_object_identity が sid 列を null 以外として定義しているため、Sid も必要です。- パラメーター:
object- の acl_object_identity を表すowner- SID 列の場合 (この特定の Sid の acl_sid エントリがまだない場合に作成されます)
createOrRetrieveClassPrimaryKey
protected java.lang.Long createOrRetrieveClassPrimaryKey(java.lang.String type, boolean allowCreate, java.lang.Class idType)acl_classから主キーを取得し、必要に応じて新しい行を作成します。allowCreateプロパティはtrueです。- パラメーター:
type- のエントリを検索または作成するには (多くの場合、完全修飾クラス名)allowCreate- 見つからない場合に作成が許可されている場合は true- 戻り値:
- 主キーまたは見つからない場合は null
createOrRetrieveSidPrimaryKey
protected java.lang.Long createOrRetrieveSidPrimaryKey(Sid sid, boolean allowCreate)
acl_sid から主キーを取得し、必要に応じて新しい行を作成し、allowCreate プロパティが true の場合に使用します。- パラメーター:
sid- 検索または作成するallowCreate- 見つからない場合に作成が許可されている場合は true- 戻り値:
- 主キーまたは見つからない場合は null
- 例外:
java.lang.IllegalArgumentException- Sid が認識された実装ではない場合。
createOrRetrieveSidPrimaryKey
protected java.lang.Long createOrRetrieveSidPrimaryKey(java.lang.String sidName, boolean sidIsPrincipal, boolean allowCreate)acl_sid から主キーを取得し、必要に応じて新しい行を作成し、allowCreate プロパティが true の場合に使用します。- パラメーター:
sidName- 検索または作成する Sid の名前sidIsPrincipal- それがユーザーであるか、ロールのような権限を付与されているかどうかallowCreate- 見つからない場合に作成が許可されている場合は true- 戻り値:
- 主キーまたは見つからない場合は null
deleteAcl
public void deleteAcl(ObjectIdentity objectIdentity, boolean deleteChildren) throws ChildrenExistException
インターフェースからコピーされた説明:MutableAclService指定されたエントリをデータベースから削除します。- 次で指定:
- インターフェース
MutableAclServiceのdeleteAcl - パラメーター:
objectIdentity- 削除するオブジェクト IDdeleteChildren- 削除を子にカスケードするかどうか- 例外:
ChildrenExistException- deleteChildren 引数がfalseであったが子が存在する場合
deleteEntries
protected void deleteEntries(java.lang.Long oidPrimaryKey)
提示された ObjectIdentity 主キーに属する acl_entry テーブルで定義されているすべての ACE を削除します。- パラメーター:
oidPrimaryKey- 削除する acl_entry の行
deleteObjectIdentity
protected void deleteObjectIdentity(java.lang.Long oidPrimaryKey)
提示された ObjectIdentity 主キーに関連付けられている acl_object_identity から単一の行を削除します。そのクラスを使用しているクラスがなくなった場合でも、acl_class からエントリを削除することはありません。これはデッドロック回避アプローチです。
- パラメーター:
oidPrimaryKey- acl_object_identity を削除します
retrieveObjectIdentityPrimaryKey
protected java.lang.Long retrieveObjectIdentityPrimaryKey(ObjectIdentity oid)
渡された ObjectIdentity の acl_object_identity テーブルから主キーを取得します。この実装の他のいくつかのメソッドとは異なり、このメソッドは行を作成しません(代わりにcreateObjectIdentity(ObjectIdentity, Sid)を使用してください)。- パラメーター:
oid- 見つけるには- 戻り値:
- オブジェクト ID、または見つからない場合は null
updateAcl
public MutableAcl updateAcl(MutableAcl acl) throws NotFoundException
この実装では、データベース内のすべての ACE を削除し、このメソッドを呼び出すたびに再作成します。より包括的な実装では、ダーティ状態チェックを使用するか、MutableAclの作成、更新、削除操作に ORM 機能を使用する可能性が高くなります。- 次で指定:
- インターフェース
MutableAclServiceのupdateAcl - パラメーター:
acl- 変更する- 例外:
NotFoundException- 関連するレコードが見つからなかった場合 (newキーワードでオブジェクトを作成するのではなく、MutableAclService.createAcl(ObjectIdentity)を使用してオブジェクトを作成することを覚えていますか? )
updateObjectIdentity
protected void updateObjectIdentity(MutableAcl acl)
渡された MutableAcl オブジェクトに表示される新しい情報で、既存の acl_object_identity 行を更新します。また、MutableAcl を所有する Sid に必要な場合は、acl_sid エントリを作成します。- パラメーター:
acl- 変更する (行は acl_object_identity にすでに存在している必要があります)- 例外:
NotFoundException- 更新する ACL が見つからなかった場合。
setClassIdentityQuery
public void setClassIdentityQuery(java.lang.String classIdentityQuery)
acl_class テーブルに新しく作成された行の ID を取得するために使用されるクエリを設定します。- パラメーター:
classIdentityQuery- クエリ。識別子を返す必要があります。デフォルトは call identity()
setSidIdentityQuery
public void setSidIdentityQuery(java.lang.String sidIdentityQuery)
acl_sid テーブルに新しく作成された行の ID を取得するために使用されるクエリを設定します。- パラメーター:
sidIdentityQuery- クエリ。識別子を返す必要があります。デフォルトは call identity()
setDeleteEntryByObjectIdentityForeignKeySql
public void setDeleteEntryByObjectIdentityForeignKeySql(java.lang.String deleteEntryByObjectIdentityForeignKey)
setDeleteObjectIdentityByPrimaryKeySql
public void setDeleteObjectIdentityByPrimaryKeySql(java.lang.String deleteObjectIdentityByPrimaryKey)
setInsertClassSql
public void setInsertClassSql(java.lang.String insertClass)
setInsertEntrySql
public void setInsertEntrySql(java.lang.String insertEntry)
setInsertObjectIdentitySql
public void setInsertObjectIdentitySql(java.lang.String insertObjectIdentity)
setInsertSidSql
public void setInsertSidSql(java.lang.String insertSid)
setClassPrimaryKeyQuery
public void setClassPrimaryKeyQuery(java.lang.String selectClassPrimaryKey)
setObjectIdentityPrimaryKeyQuery
public void setObjectIdentityPrimaryKeyQuery(java.lang.String selectObjectIdentityPrimaryKey)
setSidPrimaryKeyQuery
public void setSidPrimaryKeyQuery(java.lang.String selectSidPrimaryKey)
setUpdateObjectIdentity
public void setUpdateObjectIdentity(java.lang.String updateObjectIdentity)
setForeignKeysInDatabase
public void setForeignKeysInDatabase(boolean foreignKeysInDatabase)
- パラメーター:
foreignKeysInDatabase- false の場合、このクラスは追加の FK 制約チェックを実行し、デッドロックを引き起こす可能性があります (デフォルトは true であるため、デッドロックは回避されますが、データベースは FK を強制することが期待されます)
setAclClassIdSupported
public void setAclClassIdSupported(boolean aclClassIdSupported)
- オーバーライド:
- クラス
JdbcAclServiceのsetAclClassIdSupported