weaver 2003/10/19 20:51:09
Modified: portal/src/java/org/apache/jetspeed/engine/servlet
ServletRequestImpl.java
Log:
correctly formats the parameters for the specific PortletWindow this
request is servicing
Revision Changes Path
1.3 +90 -7
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java
Index: ServletRequestImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ServletRequestImpl.java 6 Oct 2003 00:32:49 -0000 1.2
+++ ServletRequestImpl.java 20 Oct 2003 03:51:09 -0000 1.3
@@ -53,9 +53,18 @@
*/
package org.apache.jetspeed.engine.servlet;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
+import org.apache.jetspeed.engine.core.PortalControlParameter;
+import org.apache.jetspeed.engine.core.PortalURL;
+import org.apache.pluto.om.window.PortletWindow;
import org.apache.pluto.services.information.InformationProviderAccess;
/**
@@ -65,28 +74,102 @@
* @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a>
* @version $Id$
*/
-public class ServletRequestImpl
- extends HttpServletRequestWrapper
+public class ServletRequestImpl extends HttpServletRequestWrapper
{
- public ServletRequestImpl(HttpServletRequest servletRequest)
+ PortalControlParameter control = null;
+
+ PortletWindow portletWindow = null;
+
+ private Map portletParameters;
+
+ public ServletRequestImpl(javax.servlet.http.HttpServletRequest servletRequest,
PortletWindow window)
{
super(servletRequest);
+
+ this.portletWindow = window;
+ control = new PortalControlParameter(new PortalURL(servletRequest));
+
}
private HttpServletRequest _getHttpServletRequest()
{
- return(HttpServletRequest) super.getRequest();
+ return (HttpServletRequest) super.getRequest();
}
+ // HttpServletRequestWrapper overlay
+
public String getContentType()
{
- String contentType =
InformationProviderAccess.getDynamicProvider(_getHttpServletRequest()).getResponseContentType();
- if (getCharacterEncoding()!=null)
+ String contentType = "text/html";
+ if (getCharacterEncoding() != null)
{
contentType += ";" + getCharacterEncoding();
}
return contentType;
+ }
+
+ // ServletRequestWrapper overlay
+
+ public String getParameter(String name)
+ {
+ return (String) this.getParameterMap().get(name);
+
+ }
+
+ public Map getParameterMap()
+ {
+ //get control params
+ if (portletParameters == null)
+ {
+
+ portletParameters = new HashMap();
+
+ Iterator iterator = control.getRenderParamNames(portletWindow);
+ while (iterator.hasNext())
+ {
+ String name = (String) iterator.next();
+
+ String[] values = control.getRenderParamValues(portletWindow, name);
+
+ portletParameters.put(name, values);
+
+ }
+
+ //get request params
+ String pid = control.getPIDValue();
+ String wid = portletWindow.getId().toString();
+ if (pid.equals(wid))
+ {
+ for (Enumeration parameters = super.getParameterNames();
parameters.hasMoreElements();)
+ {
+ String paramName = (String) parameters.nextElement();
+ String[] paramValues = (String[])
super.getParameterValues(paramName);
+ String[] values = (String[]) portletParameters.get(paramName);
+
+ if (values != null)
+ {
+ String[] temp = new String[paramValues.length +
values.length];
+ System.arraycopy(paramValues, 0, temp, 0,
paramValues.length);
+ System.arraycopy(values, 0, temp, paramValues.length,
values.length);
+ paramValues = temp;
+ }
+ portletParameters.put(paramName, paramValues);
+ }
+ }
+ }
+
+ return Collections.unmodifiableMap(portletParameters);
+ }
+
+ public Enumeration getParameterNames()
+ {
+ return Collections.enumeration(this.getParameterMap().keySet());
+ }
+
+ public String[] getParameterValues(String name)
+ {
+ return (String[]) this.getParameterMap().get(name);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]