Confluence 2.4 のページ権限 API 変更点
Confluence 2.4 には、ページ権限 (ContentPermissions) を変更するすべてのプラグインに影響する、Confluence API に対する変更が含まれます。一部のメソッドが廃止予定になり、いくつかの新しいメソッドが作成され、1 つのメソッドの動作が変更されました。
Confluence 2.4 では、ページでの複数の表示および編集権限はサポートされません。コンテンツ権限 API はこのような状態を許可しますが、これを回避する必要があります。たとえば、ページに複数の権限が設定されている場合、これらの権限はユーザー インターフェイス経由で正しく表示されず、検索でページが適切に返されない可能性があります。
変更の概要
廃止予定のメソッド
ContentPermissionManager.getInheritedViewContentPermissions(Page)
ContentPermissionManager.getInheritedContentPermissions(ContentEntityObject contentEntityObject)
ContentEntityObject.getPermissions()
ContentEntityObject.getContentPermission(String permissionType)
変更されたメソッド
ContentPermissionManager.addContentPermission(ContentPermission permission, ContentEntityObject content)
追加されたメソッド
ContentPermissionManager.setContentPermissions(List contentPermissions, ContentEntityObject content, String type)
ContentPermissionManager.getInheritedContentPermissionSets(ContentEntityObject contentEntityObject)
ContentEntityObject.getContentPermissionSet(String type)
ContentEntityObject.hasPermissions(String type)
ContentEntityObject.removeContentPermissionSet(ContentPermissionSet set)
削除されたメソッド
ContentPermissionManager.saveContentPermission(ContentPermission permission)
ContentPermissionManager.getContentUserPermission(ContentEntityObject contentEntityObject)
ContentPermissionManager.onContentContextChanged(ContentEntityObject contentEntityObject)
ContentEntityObject.setPermissions(List permissions)
ContentEntityObject.clearPermissions(ContentPermissionManager permissionManager)
変更により、次の問題が発生する可能性が高くなります。
ContentPermissionManager.addContentPermission(ContentPermission permission, ContentEntityObject content)
このメソッドは期待どおりに ContentPermission を ContentEntityObject に追加するようになりました。以前は、ContentEntityObject に ContentPermission がすでに存在している場合、既存の ContentPermission が削除されていました。つまり、メソッドは、"setContentPermission" で期待されるように動作しましていました。この結果、Confluence 2.3 以前で addContentPermission を使用していたコードは、1 つのエントリ リストで setContentPermissions を使用する必要があります。
replace
ContentPermissionManager.addContentPermission(p, c)
with
ContentPermissionManager.setContentPermissions(java.util.Collections.singletonList(p), c, p.getType())
ContentPermission を返すために使用されていたほとんどのメソッドが ContentPermissionSet を返すメソッドに置き換えられました。場所によっては、新しいメソッドをポイントするように非推奨を使用したり、 ContentPermissionSet から最初の ContentPermission を抽出するために古いメソッドを再実装しました。
通常どおり、ContentEntityObject メソッドではなく、ContentPermissionManager メソッドを使用してください。ContentEntityObject メソッドで使用してもよいメソッドは、getContentPermissionSet のみです。ただし、このメソッドは既存の権限を表示するためにのみ使用してください。ContentPermissionSets へのすべての書き込みは、ContentPermissionManager 経由で実行してください。
以前、ContentPermissionManager の onContentContextChanged メソッドは、ContentEntityObject で権限をキャッシュした ContentPermissionManager が無効の可能性があることを通知するために使用されていました。これは、ContentPermissionEvent を発行して実行するようにしました。このイベントは、ContentPermissionManager 経由で ContentPermissions を変更する場合、自動的に発行されます。
XML RPC API への変更はまだ行われていません。現在、ContentPermissions の変更は許可されていません。