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>