Come implementare un importatore di pagine personalizzate per lo strumento di aggiornamento CQ5

Domanda

Come posso implementare un importatore di pagine personalizzate CQ3.X o CQ4.X?

Vedi qui per la documentazione di base sullo strumento di aggiornamento stesso

Che cos'è un importatore di pagine?

Un importatore di pagine è un servizio OSGi che implementa un metodo di importazione della pagina che viene chiamato quando una pagina di uno specifico tipo csd viene richiesta dall'istanza CQ3.X o CQ4.x dallo strumento di aggiornamento CQ5. È possibile implementare un singolo importatore di pagine per più CSD o per un singolo tipo di CSD.

Conoscenze necessarie per questo articolo:

  • Come impostare l'ambiente di sviluppo con Eclipse
  • Come creare e implementare un bundle in Apache Felix

Risposta, Risoluzione

Di seguito sono riportate le implementazioni vuote degli importatori di pagine personalizzate. cioè, non importano nulla se non si creano i /nodi/nodotipi/mixin e proprietà per il contenuto della pagina che si desidera importare.

Implementa una classe che importa tipi di pagine CSD di modelli multipli

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; /** * L'importatore per tutte le pagine del 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 { // questa variabile configura quali modelli csds vengono elaborati da questo importatore di pagine 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: Implementa la funzionalità di importazione qui... } }



Implementa una pagina che importa un singolo tipo di pagina 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 differenza rispetto all'implementazione della classe base è che la pagina * non è in realtà memorizzata nella destinazione finale come inidcato dalla * mappatura di handle di pagina ma sotto <code>/var/dam</code> per dove le * risorse sono raccolte per essere importate come risorsa DAM. */ public Node importPage(ImporterContext context, Page page) throws RepositoryException { //TODO: Implementare la funzionalità di importazione qui..... } }



Versioni interessate

CQ5.2+

Logo Adobe

Accedi al tuo account