質問

カスタム CQ3.X または CQ4.X ページインポーターを実行するには?

アップグレードツールの基本的なドキュメントは、ここを参照してください。

ページインポーターとは何ですか?

ページインポーターとは、特定の csd タイプのページが CQ5 アップグレードツールを使用して、CQ3.X または CQ4.X インスタンスから要求されたときに呼び出される、読み込みページメソッドが実装されている OSGi サービスです。1 つのページインポーターを複数の CSD または単一の CSD タイプに実装できます。

この記事に必要な予備知識:

  • Eclipse で開発環境をセットアップする方法
  • Apache Felix へのバンドルの作成およびデプロイ方法

回答、解決策

以下は、カスタムページインポーターの空の実装です。例:読み込みたいページコンテンツに対して、nodes/nodetypes/mixins とプロパティを作成しない限り、何も読み込まれません。

複数のテンプレート CSD ページタイプを読み込むクラスを実装します

import javax.jcr.Node; import javax.jcr.PathNotFoundException; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.Value; import javax.jcr.ValueFormatException; import javax.jcr.lock.LockException; import javax.jcr.nodetype.ConstraintViolationException; import javax.jcr.version.VersionException; import org.apache.jackrabbit.util.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.day.cq.commons.jcr.JcrUtil; import com.day.cq.compat.migration.ImporterContext; import com.day.cq.compat.migration.PageImporter; import com.day.cq.compat.migration.contentbus.Atom; import com.day.cq.compat.migration.contentbus.Container; import com.day.cq.compat.migration.contentbus.ContainerList; /** * The importer for all pages from daycare.* * @scr.component metatype="no" immediate="true" * @scr.service interface="com.day.cq.compat.migration.PageImporter" * @scr.property nameRef="PageImporter.PROP_CSD" valueRef="ALLCONTENTCSD" */ public class GenericContentPageImporter implements PageImporter { // this variable configures which template csds get processed by this page importer private final static String[] ALLCONTENTCSD = new String[] { "genericcontent", "globalhomepage", "localhomepage" }; public Node importPage(ImporterContext context, Page page) throws RepositoryException { Session session = context.getSession(); processPage(context, page, session); if (session.hasPendingChanges()) { session.save(); } return null; } public void processPage(ImporterContext context, Page page, Session session) { //TODO: Implement import functionality here... } }



単一の CSD ページタイプを読み込むページの実装

import javax.jcr.Node; import javax.jcr.PathNotFoundException; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.Value; import javax.jcr.ValueFormatException; import javax.jcr.lock.LockException; import javax.jcr.nodetype.ConstraintViolationException; import javax.jcr.version.VersionException; import org.apache.jackrabbit.util.Text; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.day.cq.commons.jcr.JcrUtil; import com.day.cq.compat.migration.ImporterContext; import com.day.cq.compat.migration.PageImporter; import com.day.cq.compat.migration.contentbus.Atom; import com.day.cq.compat.migration.contentbus.Container; import com.day.cq.compat.migration.contentbus.ContainerList; import com.day.cq.compat.migration.GenericImporter; import com.day.cq.compat.migration.ProvidedPageImporter; public class CustomPageImporter extends GenericImporter implements ProvidedPageImporter { CustomPageImporter() { } public String getCSDName() { return "mytemplatecsdname"; } /** * Imports the given page into the Repository.* <p> * 基本クラス実装に対する違いは、* ページハンドルマッピングによって示されるように、ページは実際には最終的な移動先で* 保存されるのではなく、DAM アセットとして読み込まれるように* アセットが選択される <code>/var/dam</code> の下で保存されることです。*/ public Node importPage(ImporterContext context, Page page) throws RepositoryException { //TODO: Implement import functionality here... } }



影響を受けるバージョン

CQ5.2+

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー