Question

Comment implanter un importateur de page personnalisée CQ3.X ou CQ4.X ?

Cliquer ici pour obtenir des informations de base sur l'outil de mise à niveau.

Qu'est-ce qu'un importateur de page ?

Un importateur de page est un service OSGi qui exécute une méthode d'importation de page lorsqu'une page de type csd spécifique est requise par l'instance CQ3.X ou CQ4.x de l'outil de mise à niveau CQ5. Un importateur de page unique peut être implémenté pour plusieurs CSD ou pour un seul type de CSD.

Connaissances préalables requises pour cet article :

  • Configuration de l’environnement de développement avec Eclipse.
  • Comment créer et déployer un lot sur Apache Felix

Réponse, résolution

Vous trouverez ci-dessous des implémentations vides d'importateurs de page personnalisée. c’est-à-dire qu’ils n’importeront rien, sauf si vous créez les nœuds/types de nœuds/mixins et propriétés du contenu de la page à importer.

Mise en œuvre d'une catégorie important plusieurs modèles de page 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... } }



Mise en œuvre d'une page qui importe un seul type de page 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> * La différence d'une implémentation de catégorie de base est que la page * n'est pas stockée à la destination finale comme indiqué par * le mappage de poignée de page mais sous <code>/var/dam</code> où les * ressources sont sélectionnées pour être importées comme ressources DAM. */ public Node importPage(ImporterContext context, Page page) throws RepositoryException { //TODO: Implement import functionality here... } }



Versions concernées

CQ5.2+

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne