Création de ressources

Vous pouvez créer des ressources à l'aide des méthodes des contrôleurs. Chaque type de contrôleur permet de créer des ressources spécifiques pour son type de modèle.

Pourquoi et quand exécuter cette tâche

La liste suivante montre les contrôleurs existants et les ressources que vous pouvez créer grâce à eux :
  • ContentModelController. Il permet de créer des ressources des types suivants :
    • ContentPage
    • ContentLabel
    • Les deux types suivants d'URL de contenu :
      • ExternalContentURL
      • InternalContentURL
  • LayoutModelController. Il permet de créer des ressources des types suivants :
    • LayoutContainer
    • LayoutControl
  • PortletModelController. Il permet de créer des ressources des types suivants :
    • PortletDefinition
    • PortletEntity
Pour créer une ressource, procédez comme suit :

Procédure

  1. Facultatif : Procurez-vous un contexte de création.
    Exécutez les deux étapes suivantes :
    1. Obtenez la fabrique du générateur de contexte de création. Pour plus de détails sur cette procédure, voir Obtention de contextes de création.
    2. Obtenez un contexte de création de ce générateur. For details about how to do this step, refer to Obtaining creation contexts.
  2. Obtenez un contrôleur.
  3. Créez une ressource.
    Pour ce faire, utilisez la méthode create(Class, CreationContext) du contrôleur et entrez les deux arguments.

Résultats

  1. La ressource créée ne fait pas partie de la topologie, sauf si vous l'y insérez avec la méthode insert() du contrôleur.
  2. Pour les noeuds de contenu, à savoir les pages, les libellés et les URL de contenu, vous devez définir un marquage pris en charge. Sinon, ils n'apparaissent pas dans le modèle en lecture seule.

Exemple

Exemple 1 - Création d'une ressource avec le générateur de contexte de création : cet exemple crée une page ContentPage que vous pouvez insérer ensuite dans le modèle de contenu.
// obtain creation context builder
final CreationContextBuilderFactory builder = CreationContextBuilderFactory.getInstance();

// obtain creation context
final CreationContext creationContext = builder.newIdentifiableCreationContext(objectID);

// create resource (which is not yet part of the topology of the controller!)
final Modifiable modifiable = controller.create(ContentPage.class, creationContext);
Exemple 2 - Clonage d'une définition de portlet existante : pour cloner une définition de portlet existante, créez-la avec un contrôleur de modèle de portlet et entrez PortletDefinitionCloningContext.
// obtain portlet definition cloning context; includes obtaining a portlet definition
final PortletDefinitionCloningContext context = ... (portletDefinition)

// create portlet definition
pmController.create(PortletDefinition.class, context);
Le résultat de la méthode create() est une instance Modifiable de la ressource créée que vous pouvez transtyper vers son type, comme l'illustre l'exemple suivant.
Exemple 3 - Transtypage d'une ressource créer vers son type :
final ModifiableContentPage modifiableContentPage = (ModifiableContentPage) 
      controller.create(ContentPage.class, creationContext);