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+
Accedi al tuo account