Comment accéder au JCR AEM par programmation

Vous pouvez modifier, par programmation, les nœuds et propriétés situés dans le référentiel Adobe CQ qui fait partie d’Adobe Marketing Cloud. Pour accéder au référentiel CQ, vous utilisez l’API Java Content Repository (JCR). Vous pouvez utiliser l’API JCR Java pour exécuter des opérations CRUD (création, remplacement, mise à jour et suppression) sur du contenu situé dans le référentiel Adobe CQ. Pour plus d’informations sur l’API JCR Java, voir https://jackrabbit.apache.org/jcr/jcr-api.html.

REMARQUE

Cet article de développement modifie le JCR Adobe CQ à partir d’une application Java externe. En revanche, vous pouvez modifier le JCR depuis un lot OSGi en utilisant l’API JCR. Pour plus d’informations, voir Données CQ persistantes dans le référentiel de contenu Java.

REMARQUE

Pour utiliser l’API JCR, ajoutez le fichier jackrabbit-standalone-2.4.0.jar au chemin de classe de votre application Java. Vous pouvez obtenir ce fichier JAR à partir de la page Web de l’API JCR Java à l’adresse https://jackrabbit.apache.org/jcr/jcr-api.html.

REMARQUE

Pour savoir comment interroger le JCR Adobe CQ à l’aide de l’API JCR Query, voir Interrogation des données Adobe Experience Manager à l’aide de l’API JCR.

Création d’une instance de référentiel

Cet article de développement fait appel à une méthode statique appartenant à la classe org.apache.jackrabbit.commons.JcrUtils pour se connecter à un référentiel et établir une connexion. Il existe cependant d’autres modus operandi. Cette méthode se nomme getRepository. Dans ce cas, un paramètre de chaîne est utilisé, qui représente l’URL du serveur Adobe CQ. Par exemple, http://localhost:4503/crx/server.

La méthode getRepository renvoie une instance Repository, comme le montre l’exemple de code ci-dessous.

//Create a connection to the AEM JCR repository running on local host
Repository repository = JcrUtils.getRepository("http://localhost:4503/crx/server");

Création d’une instance de session

L'instance Repositoryreprésente le référentiel CRX. Utilisez l'instance Repositorypour établir une session avec le référentiel. Pour créer une session, appelez la méthode loginde l'instance Repositoryet transmettez un objet javax.jcr.SimpleCredentials. La méthode loginrenvoie une instance javax.jcr.Session.

Vous créez un objet SimpleCredentialsen utilisant son constructeur et en transmettant les valeurs de chaîne suivantes :

  • Nom de l’utilisateur
  • Mot de passe correspondant

Lors de la transmission du second paramètre, appelez la méthode toCharArrayde l’objet String. Le code suivant indique comment appeler la méthode loginqui renvoie une javax.jcr.Sessioninstance.

//Create a Session instance
javax.jcr.Session session = repository.login( new SimpleCredentials("admin", "admin".toCharArray()));

Création d’une instance de nœud

Utilisez une instance Sessionpour créer une instance javax.jcr.Node. Une instance Node vous permet d’effectuer des opérations de nœud. Vous pouvez, par exemple, créer un nœud. Pour créer un nœud qui représente le nœud racine, appelez la méthode Session de l’instance getRootNode, comme illustré dans la ligne de code ci-dessous.

//Create a Node
Node root = session.getRootNode();

Une fois que vous avez créé une instance Node, vous pouvez exécuter des tâches telles que la création d’un autre noeud et l’ajout d’une valeur à celui-ci. Le code suivant, par exemple, crée deux nœuds et ajoute une valeur au deuxième.

// Store content
Node day = adobe.addNode("day");
day.setProperty("message", "Adobe CQ is part of the Adobe Digital Marketing Suite!");

Récupération de valeurs de nœud

Pour récupérer un noeud et sa valeur, appelez la méthode Nodede l’instance getNodeet transmettez une valeur de chaîne qui représente le chemin d’accès complet au noeud. Examinez la structure de nœud créée dans l’exemple de code précédent. Pour récupérer le nœud day, indiquez adobe/day, comme indiqué dans le code suivant :

// Retrieve content
Node node = root.getNode("adobe/day");
System.out.println(node.getPath());
System.out.println(node.getProperty("message").getString());

Création de nœuds dans le référentiel Adobe CQ

L’exemple de code Java suivant représente une classe Java qui se connecte à Adobe CQ, crée une instance Sessionet ajoute de nouveaux noeuds. Une valeur de données est affectée au nœud, puis la valeur du nœud et son chemin d’accès sont écrits sur la console. Lorsque vous en avez terminé avec l’instance Session, veillez à vous déconnecter.

/*
 * This Java Quick Start uses the jackrabbit-standalone-2.4.0.jar
 * file. See the previous section for the location of this JAR file
 */

import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.Node;

import org.apache.jackrabbit.commons.JcrUtils;
import org.apache.jackrabbit.core.TransientRepository;

public class GetRepository {

public static void main(String[] args) throws Exception {

try {

    //Create a connection to the CQ repository running on local host
    Repository repository = JcrUtils.getRepository("http://localhost:4503/crx/server");

   //Create a Session
   javax.jcr.Session session = repository.login( new SimpleCredentials("admin", "admin".toCharArray()));

  //Create a node that represents the root node
  Node root = session.getRootNode();

  // Store content
  Node adobe = root.addNode("adobe");
  Node day = adobe.addNode("day");
  day.setProperty("message", "Adobe CQ is part of the Adobe Digital Marketing Suite!");

  // Retrieve content
  Node node = root.getNode("adobe/day");
  System.out.println(node.getPath());
  System.out.println(node.getProperty("message").getString());

  // Save the session changes and log out
  session.save();
  session.logout();
  }
 catch(Exception e){
  e.printStackTrace();
  }
 }
}

Après avoir exécuté l’exemple de code complet et créé les noeuds, vous pouvez vue les nouveaux noeuds dans le CRXDE Lite, comme illustré ci-dessous.

chlimage_1-68

Sur cette page