Show Menu
トピック×

SRP と UGC の基本事項

概要

ストレージリソースプロバイダー(SRP)および SRP とユーザー生成コンテンツ(UGC)との関係について詳しくは、 コミュニティコンテンツストレージ および ストレージリソースプロバイダーの概要 を参照してください。
ドキュメントのこの節では、SRP および UGC に関する基本情報について説明します。

StorageResourceProvider API

SocialResourceProvider API(SRP API)は、様々な Sling リソースプロバイダー API の拡張です。ページネーションとアトミックインクリメントのサポートが含まれます(割り込みとスコアリングに役立ちます)。
日付、有用性、投票数などによる並べ替えが必要なので、SCF コンポーネントにはクエリが必要です。すべてのSRPオプションには柔軟なクエリメカニズムがあり、これらはグループ発行に依存しません。
SRP 格納場所には、コンポーネントのパスが組み込まれます。ルートパスはASRP、MSRP、JSRPなどのSRPオプションの選択に依存するので、SRP APIを常に使用してUGCにアクセスする必要があります。
SRP API は、抽象クラスではなくインターフェイスです。新しいリリースにアップグレードする場合、内部実装に対する今後の改善のメリットが失われるので、カスタム実装は軽度に行うべきではありません。
SRP API を使用するための手段は、提供されるユーティリティ(SocialResourceUtilities パッケージで見つかるものなど)です。
AEM 6.0 以前からアップグレードする場合、すべての SRP の UGC の移行が必要になります。そのために、オープンソースのツールを使用できます。See Upgrading to AEM Communities 6.3 .
以前は、UGC にアクセスするためのユーティリティは SocialUtils パッケージ内にありましたが、このパッケージはなくなりました。
代わりのユーティリティについては、 SocialUtils リファクタリング を参照してください。

UGC にアクセスするためのユーティリティメソッド

UGC にアクセスするには、SRP から UGC へのアクセスに適したパスを返し、SocialUtils にあった廃止されたメソッドに替わる、SocialResourceUtilities パッケージのメソッドを使用します。
以下に、サーブレットでの resourceToUGCStoragePath() メソッドの使用の最小限の例を示します。
import com.adobe.cq.social.srp.utilities.api.SocialResourceUtilities;

@Reference
private SocialResourceUtilities socialResourceUtilities;

@Override
protected void doGet(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException, IOException {
  String ugcPath = socialResourceUtilities.resourceToUGCStoragePath(request.getResource());
  // rest of servlet
}

その他の SocialUtils の代替については、 SocialUtils のリファクタリング を参照してください。
コーディングのガイドラインについては、 SRP による UGC へのアクセス を参照してください。
resourceToUGCStoragePath() によって返されるパスは、** ACL チェック には適していません。

Utility Method to Access ACLs

一部の SRP 実装(ASRP や MSRP など)では、コミュニティコンテンツは ACL 検証が提供されないデータベースに格納されます。シャドウノードは、ACLを適用できるローカルリポジトリ内の場所を提供します。
SRP API を使用すると、すべての SRP オプションによって、すべての CRUD 操作の前にシャドウの場所の同じチェックが実行されます。
ACL をチェックするには、リソースの UGC に適用される権限のチェックに適したパスを返すメソッドを使用します。
以下に、サーブレットでの resourceToACLPath() メソッドの使用の単純な例を示します。
import com.adobe.cq.social.srp.utilities.api.SocialResourceUtilities;

@Reference
private SocialResourceUtilities socialResourceUtilities;

@Override
protected void doGet(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException, IOException {
  String aclPath = socialResourceUtilities.resourceToACLPath(request.getResource());
  // rest of servlet
}

The path returned by resourceToACLPath() is not suitable for accessing the UGC itself.