クラス 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)
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 MutableAcl
createAcl(ObjectIdentity objectIdentity)
データベースに空のAcl
オブジェクトを作成します。protected void
createEntries(MutableAcl acl)
渡された MutableAcl オブジェクトで定義されたすべての ACE の acl_entry に新しい行を作成します。protected void
createObjectIdentity(ObjectIdentity object, Sid owner)
渡された ObjectIdentity の acl_object_identity テーブルにエントリを作成します。protected java.lang.Long
createOrRetrieveClassPrimaryKey(java.lang.String type, boolean allowCreate, java.lang.Class idType)
acl_class
から主キーを取得し、必要に応じて新しい行を作成します。allowCreate
プロパティはtrue
です。protected java.lang.Long
createOrRetrieveSidPrimaryKey(java.lang.String sidName, boolean sidIsPrincipal, boolean allowCreate)
acl_sid から主キーを取得し、必要に応じて新しい行を作成し、allowCreate プロパティが true の場合に使用します。protected java.lang.Long
createOrRetrieveSidPrimaryKey(Sid sid, boolean allowCreate)
acl_sid から主キーを取得し、必要に応じて新しい行を作成し、allowCreate プロパティが true の場合に使用します。void
deleteAcl(ObjectIdentity objectIdentity, boolean deleteChildren)
指定されたエントリをデータベースから削除します。protected void
deleteEntries(java.lang.Long oidPrimaryKey)
提示された ObjectIdentity 主キーに属する acl_entry テーブルで定義されているすべての ACE を削除します。protected void
deleteObjectIdentity(java.lang.Long oidPrimaryKey)
提示された ObjectIdentity 主キーに関連付けられている acl_object_identity から単一の行を削除します。protected java.lang.Long
retrieveObjectIdentityPrimaryKey(ObjectIdentity oid)
渡された ObjectIdentity の acl_object_identity テーブルから主キーを取得します。void
setAclClassIdSupported(boolean aclClassIdSupported)
void
setClassIdentityQuery(java.lang.String classIdentityQuery)
acl_class テーブルに新しく作成された行の ID を取得するために使用されるクエリを設定します。void
setClassPrimaryKeyQuery(java.lang.String selectClassPrimaryKey)
void
setDeleteEntryByObjectIdentityForeignKeySql(java.lang.String deleteEntryByObjectIdentityForeignKey)
void
setDeleteObjectIdentityByPrimaryKeySql(java.lang.String deleteObjectIdentityByPrimaryKey)
void
setForeignKeysInDatabase(boolean foreignKeysInDatabase)
void
setInsertClassSql(java.lang.String insertClass)
void
setInsertEntrySql(java.lang.String insertEntry)
void
setInsertObjectIdentitySql(java.lang.String insertObjectIdentity)
void
setInsertSidSql(java.lang.String insertSid)
void
setObjectIdentityPrimaryKeyQuery(java.lang.String selectObjectIdentityPrimaryKey)
void
setSidIdentityQuery(java.lang.String sidIdentityQuery)
acl_sid テーブルに新しく作成された行の ID を取得するために使用されるクエリを設定します。void
setSidPrimaryKeyQuery(java.lang.String selectSidPrimaryKey)
void
setUpdateObjectIdentity(java.lang.String updateObjectIdentity)
MutableAcl
updateAcl(MutableAcl acl)
この実装では、データベース内のすべての ACE を削除し、このメソッドを呼び出すたびに再作成します。protected void
updateObjectIdentity(MutableAcl acl)
渡された MutableAcl オブジェクトに表示される新しい情報で、既存の acl_object_identity 行を更新します。クラス org.springframework.security.acls.jdbc.JdbcAclService から継承されたメソッド
findChildren, isAclClassIdSupported, readAclById, readAclById, readAclsById, readAclsById, setConversionService, setFindChildrenQuery, setObjectIdentityGenerator
クラス 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