Exemple 1 : Ajout d'un préfixe à une URL de contenu
Cet exemple présente un filtre de génération d'URL de contenu qui ajoute un préfixe à chaque URL de contenu écrit. Ce type de filtre de génération d'URL de contenu s'avère utile lorsqu'il est utilisé avec un serveur HTTP qui réécrit les URL entrantes de façon dynamique.
Classe de fabrique
/******************************************************************
* Copyright HCL Technologies Limited 2011, 2019 *
******************************************************************/
package com.ibm.workplace.wcm.api.samples;
import javax.portlet.*;
import com.ibm.workplace.wcm.api.extensions.url.*;
public class RewriteUrlGenerationFilterFactory implements ContentUrlGenerationFilterFactory {
@Override
public ContentUrlGenerationFilter getFilter(RenderRequest portletRequest, RenderResponse portletResponse)
throws ContentUrlFilterInstantiationException {
return new RewriteUrlGenerationFilter();
}
@Override
public int getFilterChainWeight() {
return 5;
}
}Classe de filtre
**************************************
* Copyright HCL Technologies Limited 2011, 2019 *
******************************************************************/
package com.ibm.workplace.wcm.api.samples;
import java.io.*;
import com.ibm.workplace.wcm.api.extensions.url.*;
public class RewriteUrlGenerationFilter implements ContentUrlGenerationFilter {
/** that static prefix that is prepended to all URLs */
private static final String PREFIX = "/content/";
@Override
public void dispose() {
// no cleanup required for this filter
}
@Override
public void writeURL(ContentUrlGenerationRequest request, ContentUrlGenerationResponse response,
ContentUrlGenerationFilterChain chain) throws ContentUrlGenerationException,
IOException {
final String contentPath = request.getContentPath(true);
if (contentPath != null && !contentPath.isEmpty()) {
// write the prefix
final Writer out = response.getWriter();
out.write(PREFIX);
// write path to content
if (contentPath.charAt(0) == '/') {
// Omit a leading / to avoid 2 / characters
out.write(contentPath, 1, contentPath.length() - 1);
} else {
out.write(contentPath);
}
} else {
// let the other filters handle prefix URLs
chain.writeURL(request, response);
}
}
}plugin.xml
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin id="com.ibm.workplace.wcm.api.samples.plugin"
name="My content URL plugin"
version="1.0.0" provider-name="IBM">
<extension point="com.ibm.workplace.wcm.api.ContentUrlGenerationFilter" id="MyRewriteUrlGenerationFilter">
<factory class="com.ibm.workplace.wcm.api.samples.RewriteUrlGenerationFilterFactory"
weight="5"/>
</extension>
</plugin>