Cómo implementar un importador de páginas personalizado para la herramienta de actualización CQ5

Pregunta

¿Cómo implemento un importador de páginas CQ3.X o CQ4.X personalizado?

Consulte aquí la documentación básica sobre la propia herramienta de actualización

¿Qué es un importador de páginas?

Un importador de páginas es un servicio de OSGi que implementa un método de importación de páginas que se llama cuando una página de un tipo específico de csd es solicitada desde la instancia CQ3.X o CQ4.x por la herramienta de actualización CQ5. Se puede implementar un importador de una sola página para varias CDVs o para un solo tipo de CDVs.

Conocimientos previos requeridos para este artículo:

  • Cómo configurar el entorno de desarrollo con Eclipse
  • Creación e implementación de un paquete en Apache Felix

Respuesta, Resolución

A continuación se muestran las implementaciones vacías de los importadores de páginas personalizadas. es decir, no importarán nada a menos que cree los nodos/tipos de nodos/mezclas y propiedades para el contenido de la página que desea importar.

Implementar una clase que importe múltiples tipos de página de plantillas CSD

import javax.jcr.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; importar javax.jcr.nodetype.ConstraintViolationException; importar javax.jcr.version.VersionException; importar org.apache.jackrabbit.util.Text; importar org.slf4j.Logger; importar org.slf4j.LoggerFactory; importar com.day.cq.commons.jcr.JcrUtil; importar com.day.cq.compat.migration.ImporterContext; importar com.day.cq.compat.migration.PageImporter; importar com.day.day.cq.cq.container; import.com.day.cq.compat.compat.migration.contentbus.Container; import.com.day.cq.compat.migration.contentbus.ContainerList; /** * El importador de todas las páginas del centro. * * @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 implementa PageImporter { // esta variable configura qué csds de plantillas son procesados por esta página importador Cadena privada estática final[] ALLCONTENTCSD = nueva Cadena[] { "genericcontent", "globalhomepage", "localhomepage", "localhomepage" }; Nodo público importPage(ImportadorContexto, página de inicio de la página, página de inicio de la página) tira el Repositorio { Sesiones = contextExgetSession(); processPage(context, page, session); si (session.hasPendingChanges()) { session.save(); } return null; } public void processPage(ImporterContext context, Page, Page, Session session) { //TODO: Implementar funcionalidad de importación aquí.... } }



Implementar una página que importe un único tipo de página de CSD

import javax.jcr.jcr.nodo; 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.jcr.nodetype.ConstraintViolationException; importar javax.jcr.version.VersionException; importar org.apache.jackrabbit.util.Text; importar org.slf4j.Logger; importar org.slf4j.LoggerFactory; importar com.day.cq.commons.jcr.JcrcrUtil; importar com.day.cq.compat.migration.ImportadorContexto; importar migración.com.day.cq.compat.pageImporter; importar com.day.cq.compat.migration.contentbus.Atom; importar com.day.cq.compat.migration.contentbus.Container; importar com.day.cq.compat.migration.contentbus.ContainerList; importar com.day.cq.compat.compat.compat.providedPageImporter; clase pública CustomPageImporter extiende GenericImporter implementa ProvidedPageImporter { CustomPageImporter() { } public String getCSDName() { devuelve "mytemplatecsdname"; } /** Importa la página dada al Repositorio. * <p> * La diferencia con la implementación de la clase base es que la página * en realidad no se almacena en el destino final como lo indica el mapeo del manejo de la página *, sino debajo de <code>/var/dam</code>, donde se recogen los activos * para que sean importados como un activo DAM. */ public Node importPage(ImporterContext context, Page page) lanza RepositoryException { //TODO: Implementar la funcionalidad de importación aquí... } }



Versiones relacionadas

CQ5.2+

 Adobe

Obtén ayuda de forma más rápida y sencilla

¿Nuevo usuario?