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 :ContentPageContentLabel- Les deux types suivants d'URL de contenu :
ExternalContentURLInternalContentURL
LayoutModelController. Il permet de créer des ressources des types suivants :LayoutContainerLayoutControl
PortletModelController. Il permet de créer des ressources des types suivants :PortletDefinitionPortletEntity
Procédure
- Facultatif : Procurez-vous un contexte de création. Exécutez les deux étapes suivantes :
- 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.
- Obtenez un contexte de création de ce générateur. For details about how to do this step, refer to Obtaining creation contexts.
- Obtenez un contrôleur.
-
Créez une ressource.
Pour ce faire, utilisez la méthode
create(Class, CreationContext)du contrôleur et entrez les deux arguments.
Résultats
- 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. - 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);