Création d'une classe de filtre de génération d'URL de contenu

Un filtre de génération d'adresses URL de contenu permet de personnaliser les adresses URL qui sont générées par un afficheur de contenu Web. Si vous créez un plug-in qui implémente un filtre de génération d'URL de contenu, vous pouvez personnaliser les URL des éléments de contenu.

Pourquoi et quand exécuter cette tâche

L'afficheur de contenu Web génère une adresse URL de contenu chaque fois qu'il détecte une adresse URL d'un contenu Web présent dans le contenu présenté par l'afficheur.

La chaîne de filtres de génération d'URL de contenu se compose de filtres qui reposent sur le modèle de conception de filtre d'interception. Ce modèle fournit un mécanisme d'interception d'une demande et de manipulation de la demande et de sa réponse. Lorsqu'elle est utilisée avec des demandes de génération d'URL de contenu, la chaîne de filtres de génération d'URL de contenu possède des filtres par défaut qui exécutent les actions suivantes :
  • Traitez les demandes pour générer une adresse URL qui cible un objet de contenu Web.
  • Créer une adresse URL en fonction de la configuration de l'afficheur de contenu Web et des paramètres définis pour les balises de génération d'URL, telles que la balise URLCmpnt.
Les filtres par défaut se trouvent à la fin de la chaîne de filtres.

Vous pouvez personnaliser la chaîne de filtres de génération d'URL de contenu par la création de filtres personnalisés. Ces filtres sont enregistrés avec le portail via la structure de plug-ins Eclipse dont l'ID d'extension est com.ibm.workplace.wcm.api.ContentUrlGenerationFilter. La séquence de filtres dans la chaîne de filtres est spécifiée par une valeur de pondération associée à chaque plug-in de filtre. Pour insérer des filtres personnalisés dans la chaîne de filtres avant les filtres par défaut, vous pouvez utiliser l'attribut weight dans le fichier plugin.xml. Si l'attribut weight n'est pas spécifié, la séquence de filtres est déterminée par la méthode getFilterChainWeight de chaque fabrique de filtre personnalisé.

Les filtres de génération d'URL de contenu personnalisés peuvent exécuter différentes actions :
  • Modifier des paramètres avant l'appel des filtres de génération d'URL par défaut.
  • modifier l'URL qui est générée par les filtres par défaut,
  • traiter les exceptions générées par les filtres par défaut,
  • Déterminer si les filtres par défaut sont démarrés.
  • modifier le chemin d'accès au contenu qui est utilisé comme entrée pour les filtres de génération d'URL par défaut,
  • générer tout type d'URL sans utiliser les filtres de génération d'URL par défaut.
Important : Vous pouvez utiliser les filtres de génération d'URL de contenu personnalisés pour modifier uniquement les URL qui sont générées par des balises de contenu Web, telles que les balises Placeholder ou URLCmpnt. L'afficheur de contenu Web n'appelle pas les filtres de génération d'URL de contenu personnalisés lorsqu'il génère, par exemple, les URL d'un composant de navigation de page.
Pour utiliser un filtre de génération d'URL de contenu, vous devez créer deux classes :
  • Un filtre de génération d'URL de contenu qui sert à créer des URL.
  • Une fabrique de filtres de génération d'URL de contenu qui sert à créer de nouvelles instances du filtre.
Vous devez déployer les deux classes sur le serveur et enregistrer la fabrique de filtre à l'aide d'un fichier plugin.xml.

Procédure

  1. Créez une classe Java qui implémente l'interface com.ibm.workplace.wcm.api.extensions.url.ContentUrlGenerationFilterFactory. Cette classe peut implémenter les méthodes suivantes :
    public ContentUrlGenerationFilter getFilter(RenderRequest portletRequest, RenderResponse portletResponse) throws ContentUrlFilterInstantiationException
    Cette méthode est appelée une fois par la chaîne de génération d'URL de contenu pour chaque élément de contenu affiché. Elle crée une instance d'un filtre de génération d'URL de contenu, qui génère toutes les URL apparaissant dans le contenu Web rendu.
    public int getFilterChainWeight() {}
    Cette méthode renvoie la pondération qui est appliquée aux éléments de filtre de génération d'URL de contenu dans la chaîne de filtres. Plus la pondération est faible plus le filtre est inséré tôt dans la chaîne. Si le paramètre weight est défini dans le fichier plugin.xml, cette valeur remplace la valeur qui est renvoyée par cette méthode.

    Consultez la documentation Javadoc pour plus d'informations. The Javadoc files for Web Content Manager are in the PortalServer_root/doc/Javadoc/spi_docs/com/ibm/workplace/wcm directory.

  2. Créez une classe Java qui implémente l'interface com.ibm.workplace.wcm.api.extensions.url.ContentUrlGenerationFilter. Cette classe peut implémenter les méthodes suivantes :
    public void writeURL(ContentUrlGenerationRequest request, ContentUrlGenerationResponse response, ContentUrlGenerationFilterChain chain) throws ContentUrlGenerationException, IOException
    Cette méthode est démarrée une fois par URL de contenu lors du processus de génération d'URL de contenu. Le paramètre de réponse vous permet d'écrire dans l'URL. Le paramètre de demande contient les informations suivantes :
    • Les informations sur l'élément pour lequel l'URL est générée.
    • La configuration de l'afficheur de contenu Web et les informations connexes qui peuvent affecter la génération de l'URL.
    La chaîne de filtres contient les filtres suivants qui peuvent être démarrés si nécessaire.
    public void dispose()
    Cette méthode est démarrée par la chaîne de filtres dès lors que toutes les URL apparaissant dans les objets de contenu affichés sont écrites. Elle permet aux filtres d'exécuter un nettoyage de leur état interne.

    Pour plus d'informations sur cette classe, voir la documentation Javadoc.

  3. Un fichier plugin.xml est requis, que le déploiement soit effectué via un fichier WAR, EAR ou JAR. Si vous effectuez le déploiement à l'aide d'une application dans un fichier WAR ou EAR, ajoutez le fichier plugin.xml au dossier WEB-INF. Lorsque vous utilisez un fichier JAR, ajoutez le fichier plugin.xml à la racine du fichier JAR.
    <?xml version="1.0" encoding="UTF-8"?>
    <plugin id="com.example.content.url"
           name="Sample content URL generation filter"
           version="1.0.0"
           provider-name="IBM">
           
     <extension
        point="com.ibm.workplace.wcm.api.ContentUrlGenerationFilter"
        id="SampleContentUrlGenerationFilter">
        <factory class="com.example.SampleContentUrlGenerationFilterFactory" 
                 weight="1"/>
     </extension>
    
    </plugin>
    Lorsque vous créez des plug-ins, tenez compte des points suivants :
    • Chaque plug-in est représenté par une balise <extension> unique.
    • La valeur de l'attribut du point d'extension doit être com.ibm.workplace.wcm.api.ContentUrlGenerationFilter.
    • Entrez l'ID de votre choix.
    • Spécifiez la classe de fabrique des filtres pour votre plug-in.
    • Le paramètre weight remplace la valeur de la méthode getFilterChainWeight.
    Naming conventions :
    Si vous créez une application de plug-in dont le nom et l'ID est identique à un plug-in existant, le nouveau plug-in peut remplacer le premier. Lorsque vous créez des applications de plug-in, vérifiez que les éléments suivants sont uniques sur votre système :
    • L'ID plug-in, le nom de plug-in et l'ID extension du fichier plugin.xml.
    • le chemin et le nom de classe qualifié complet de toutes les classes dans l'application,
    • le chemin d'accès aux fichiers de l'application.