Author: ate
Date: Tue Feb 20 18:47:59 2007
New Revision: 509868
URL: http://svn.apache.org/viewvc?view=rev&rev=509868
Log:
Fix for JS2-605: Query string parameters should not (by default) be provided to
portlets to be compliant to JSR 168 spec requirements
See: https://issues.apache.org/jira/browse/JS2-605
WARNING: this fix changes the "old" behavior of providing portal parameter to
all portlets!!!
For "restoring" the old behavior, define the following in jetspeed.properties:
merge.portal.parameters.with.portlet.parameters=true
merge.portal.parameters.before.portlet.parameters=true
Modified:
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java
portals/jetspeed-2/trunk/src/webapp/WEB-INF/conf/jetspeed.properties
Modified:
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java?view=diff&rev=509868&r1=509867&r2=509868
==============================================================================
---
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java
(original)
+++
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java
Tue Feb 20 18:47:59 2007
@@ -74,6 +74,9 @@
private boolean included;
+ private static Boolean mergePortalParametersWithPortletParameters;
+ private static Boolean mergePortalParametersBeforePortletParameters;
+
public ServletRequestImpl( HttpServletRequest servletRequest,
PortletWindow window )
{
super(servletRequest);
@@ -90,6 +93,11 @@
// This happens when an entity is referencing a non-existent
portlet
webAppId = window.getId();
}
+ if (mergePortalParametersWithPortletParameters == null )
+ {
+ mergePortalParametersWithPortletParameters =
Jetspeed.getContext().getConfiguration().getBoolean("merge.portal.parameters.with.portlet.parameters",
Boolean.FALSE);
+ mergePortalParametersBeforePortletParameters =
Jetspeed.getContext().getConfiguration().getBoolean("merge.portal.parameters.before.portlet.parameters",
Boolean.FALSE);
+ }
}
protected HttpServletRequest _getHttpServletRequest()
@@ -148,46 +156,57 @@
}
}
-
- String encoding = (String)
getRequest().getAttribute(PortalReservedParameters.PREFERED_CHARACTERENCODING_ATTRIBUTE);
- boolean decode =
getRequest().getAttribute(PortalReservedParameters.PARAMETER_ALREADY_DECODED_ATTRIBUTE)
== null
- && encoding != null;
- if (decode)
- {
-
getRequest().setAttribute(PortalReservedParameters.PARAMETER_ALREADY_DECODED_ATTRIBUTE,
- new Boolean(true));
- }
-
- //get servlet params
- for (Enumeration parameters = getRequest().getParameterNames();
parameters.hasMoreElements();)
+
+ if ( mergePortalParametersWithPortletParameters.booleanValue() )
{
- String paramName = (String) parameters.nextElement();
- String[] paramValues = (String[])
getRequest().getParameterValues(paramName);
- String[] values = (String[]) portletParameters.get(paramName);
-
+ String encoding = (String)
getRequest().getAttribute(PortalReservedParameters.PREFERED_CHARACTERENCODING_ATTRIBUTE);
+ boolean decode =
getRequest().getAttribute(PortalReservedParameters.PARAMETER_ALREADY_DECODED_ATTRIBUTE)
== null
+ && encoding != null;
if (decode)
{
- for (int i = 0; i < paramValues.length; i++)
+
getRequest().setAttribute(PortalReservedParameters.PARAMETER_ALREADY_DECODED_ATTRIBUTE,
+ new Boolean(true));
+ }
+
+ //get servlet params
+ for (Enumeration parameters =
getRequest().getParameterNames(); parameters.hasMoreElements();)
+ {
+ String paramName = (String) parameters.nextElement();
+ String[] paramValues = (String[])
getRequest().getParameterValues(paramName);
+ String[] values = (String[])
portletParameters.get(paramName);
+
+ if (decode)
+ {
+ for (int i = 0; i < paramValues.length; i++)
+ {
+ try
+ {
+ paramValues[i] = new
String(paramValues[i].getBytes("ISO-8859-1"), encoding);
+ }
+ catch (UnsupportedEncodingException e)
+ {
+ ;
+ }
+ }
+ }
+
+ if (values != null)
{
- try
+ String[] temp = new String[paramValues.length +
values.length];
+ if (
this.mergePortalParametersBeforePortletParameters.booleanValue() )
{
- paramValues[i] = new
String(paramValues[i].getBytes("ISO-8859-1"), encoding);
+ System.arraycopy(paramValues, 0, temp, 0,
paramValues.length);
+ System.arraycopy(values, 0, temp,
paramValues.length, values.length);
}
- catch (UnsupportedEncodingException e)
+ else
{
- ;
+ System.arraycopy(values, 0, temp, 0,
values.length);
+ System.arraycopy(paramValues, 0, temp,
values.length, paramValues.length);
}
+ paramValues = temp;
}
+ portletParameters.put(paramName, paramValues);
}
-
- 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);
Modified: portals/jetspeed-2/trunk/src/webapp/WEB-INF/conf/jetspeed.properties
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/src/webapp/WEB-INF/conf/jetspeed.properties?view=diff&rev=509868&r1=509867&r2=509868
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/WEB-INF/conf/jetspeed.properties
(original)
+++ portals/jetspeed-2/trunk/src/webapp/WEB-INF/conf/jetspeed.properties Tue
Feb 20 18:47:59 2007
@@ -48,6 +48,21 @@
#----------------------------------------------------------------------------------
portalurl.relative.only=false
+#----------------------------------------------------------------------------------
+# Until version 2.1, Jetspeed merged portal request parameters with portlet
specific
+# parameters, effectively allowing "shared" parameters.
+# This is not compliant with the JSR-168 PLT.11, so by default this is now
disabled.
+#
+# By setting merge.portal.parameters.with.portlet.parameters=true this feature
can
+# be "restored".
+# In the situation of portal and portlet parameters with the same name, by
default
+# the portlet parameters will be provided first in the values array, but this
too
+# can be overridden by setting
merge.portal.parameters.before.portlet.parameters=true
+#
+# Setting both these properties to true will deliver the "old" pre-2.1
behavior.
+#----------------------------------------------------------------------------------
+merge.portal.parameters.with.portlet.parameters=false
+merge.portal.parameters.before.portlet.parameters=false
# -------------------------------------------------------------------
# Portlet Mode Support
# -------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]