クラス JdbcMutableAclService

  • 実装されたすべてのインターフェース:
    AclServiceMutableAclService

    public class JdbcMutableAclService
    extends JdbcAclService
    implements MutableAclService
    MutableAclService の基本 JDBC 実装を提供します。

    デフォルト設定は HSQLDB 用です。別のデータベースを使用している場合は、sidIdentityQuery プロパティと classIdentityQuery プロパティを適切に設定する必要があります。他のクエリ、SQL の挿入および更新も、スキーマのバリエーションに対応するようにカスタマイズできますが、デフォルトで期待される結果と一致する結果を生成する必要があります。

    予想されるスキーマとその使用方法の詳細については、Spring Security リファレンスマニュアルの付録を参照してください。PostgreSQL の使用に関する情報も含まれています。

    • コンストラクターの詳細

      • JdbcMutableAclService

        public JdbcMutableAclService​(javax.sql.DataSource dataSource,
                                     LookupStrategy lookupStrategy,
                                     AclCache aclCache)
    • メソッドの詳細

      • createAcl

        public MutableAcl createAcl​(ObjectIdentity objectIdentity)
                             throws AlreadyExistsException
        インターフェースからコピーされた説明: MutableAclService
        データベースに空の Acl オブジェクトを作成します。エントリはありません。返されたオブジェクトは、エントリを追加するために使用されます。
        次で指定:
        インターフェース MutableAclServicecreateAcl 
        パラメーター:
        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
        指定されたエントリをデータベースから削除します。
        次で指定:
        インターフェース MutableAclServicedeleteAcl 
        パラメーター:
        objectIdentity - 削除するオブジェクト ID
        deleteChildren - 削除を子にカスケードするかどうか
        例外:
        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 機能を使用する可能性が高くなります。
        次で指定:
        インターフェース MutableAclServiceupdateAcl 
        パラメーター:
        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 を強制することが期待されます)