package org.sakaiproject.tool.messageforums.jsf;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import com.sun.faces.renderkit.html_basic.OutputLinkRenderer;
/**
* This class is a wrapper for {@link OutputLinkRenderer} to escape ampersands in URL parameters.
* This is required until Sakai uses JSF 1.2_11 or above versions.
*/
public class EscapedOutputLinkRenderer extends OutputLinkRenderer {
@Override
protected Param[] getParamList(final FacesContext context, final UIComponent command) {
Param[] paramList = super.getParamList(context, command);
for (int i = 0, len = paramList.length; i < len; i++) {
String pn = paramList[i].getName();
if (pn != null && pn.length() != 0) {
String pv = paramList[i].getValue();
try {
pn = URLEncoder.encode(pn.replaceAll("<", "<").replaceAll(">", ">"), "UTF-8").replaceAll("\\+", "%20");
if (pv != null && pv.length() != 0) {
pv = URLEncoder.encode(pv.replaceAll("<", "<").replaceAll(">", ">"), "UTF-8").replaceAll("\\+", "%20");
}
paramList[i].set(pn, pv);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
return paramList;
}
}