From: <ap...@vh...> - 2005-09-22 03:30:00
|
Author: apevec Date: 2005-09-22 05:20:38 +0200 (Thu, 22 Sep 2005) New Revision: 898 Modified: trunk/ccm-cms-types-siteproxy/src/com/arsdigita/cms/dispatcher/SiteProxyPanel.java Log: SF patch [ 1194553 ] Patch for SiteProxy bug 1194549 Modified: trunk/ccm-cms-types-siteproxy/src/com/arsdigita/cms/dispatcher/SiteProxyPanel.java =================================================================== --- trunk/ccm-cms-types-siteproxy/src/com/arsdigita/cms/dispatcher/SiteProxyPanel.java 2005-09-22 03:07:25 UTC (rev 897) +++ trunk/ccm-cms-types-siteproxy/src/com/arsdigita/cms/dispatcher/SiteProxyPanel.java 2005-09-22 03:20:38 UTC (rev 898) @@ -31,6 +31,10 @@ import com.arsdigita.xml.Element; import com.arsdigita.xml.Document; import org.apache.log4j.Logger; +import javax.servlet.http.*; +import java.util.*; +import java.net.*; +import java.io.*; /** @@ -86,7 +90,7 @@ ContentSection section = CMS.getContext().getContentSection(); SiteProxy item = (SiteProxy)getContentItem(state); - String url = item.getURL(); + String url = passParameters(state.getRequest(), item.getURL()); URLData data = s_fetcher.fetchURLData(url, s_cacheServiceKey); if (data == null) { @@ -152,4 +156,31 @@ } } } + + private String passParameters(HttpServletRequest request, String url){ + StringBuffer sb = new StringBuffer(url); + String enc = request.getCharacterEncoding(); + if (enc == null) enc = "UTF-8"; + Enumeration en = request.getParameterNames(); + while (en.hasMoreElements()){ + String paramName = (String) en.nextElement(); + String[] paramValues = request.getParameterValues(paramName); + for(int i=0; i<paramValues.length; ++i) { + if (sb.indexOf("?") < 0) { + sb.append("?"); + } else { + sb.append("&"); + } + sb.append(paramName).append("="); + try { + sb.append(URLEncoder.encode(paramValues[i], enc)); + } catch (UnsupportedEncodingException ex) { + s_log.error("Unable to encode SiteProxy request", ex); + return url; + } + } + } + return sb.toString(); + } + } |