Erstellen eines benutzerspezifischen Seiten-Importtools für das CQ5 Upgrade-Tool

Frage

Wie implementiere ich ein benutzerspezifisches CQ3.X- oder CQ4.X-Seitentool?

Hier findet sich die Basisdokumentation für das Upgrade-Tool selbst.

Was ist ein Seiten-Importtool?

Ein Seiten-Importtool ist ein OSGi-Dienst, der eine Seitenimportmethode implementiert, die aufgerufen wird, wenn eine Seite eines bestimmten CSD-Typs von der CQ3.X- oder der CQ4.X-Instanz vom CQ5 Upgrade-Tool angefordert wird. Ein einzelnes Import-Tool kann für mehrere CSDs oder für einen einzelnen CSD-Typ implementiert werden.

Erforderliches Vorwissen für diesen Artikel:

  • Einrichten der Entwicklungsumgebung mit Eclipse
  • Erstellen und Bereitstellen eines Bundles für Apache Felix

Antwort, Auflösung

Im Folgenden sind leere Implementierungen von benutzerdefinierten Seiten-Importtools aufgeführt. d. h. es werden keine Elemente importiert, es sei denn, Sie erstellen die Knoten/Knotentypen/Mixins und Eigenschaften für den Seiteninhalt, den Sie importieren möchten.

Implementieren einer Klasse, die mehrere Mustervorlagen von CSD-Seitentypen importiert.

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 { // diese Variable konfiguriert, welche CSD-Vorlagen durch dieses Seitenimporttool verarbeitet werden 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: Importfunktionalität hier implementieren... } }



Implementieren einer Seite, die einen einzelnen CSD-Seitentyp importiert

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> * Der Unterschied zur Basisklassenimplementierung ist, dass die Seite * in Wirklichkeit nicht am Zielort gespeichert wird, wie es von der Zuordnung der Bearbeitung der * Seite angezeigt wird, sondern unter <code>/var/dam</code>. Dort werden die * Assets für sie ausgewählt, sodass sie als DAM-Asset importiert werden. */ public Node importPage(ImporterContext context, Page page) throws RepositoryException { //TODO: Implement import functionality here... } }



Betroffene Versionen

CQ5.2+

 Adobe

Schneller und einfacher Hilfe erhalten

Neuer Benutzer?

Adobe MAX 2024

Adobe MAX
Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online

Adobe MAX

Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online

Adobe MAX 2024

Adobe MAX
Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online

Adobe MAX

Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online