Author: ate
Date: Wed Feb 21 03:48:03 2007
New Revision: 509975
URL: http://svn.apache.org/viewvc?view=rev&rev=509975
Log:
Further enhancement for JS2-605 allowing individual portlets to override the
global settings using jetspeed-portlet.xml metadata
Modified:
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/PortalReservedParameters.java
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=509975&r1=509974&r2=509975
==============================================================================
---
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
Wed Feb 21 03:48:03 2007
@@ -19,6 +19,7 @@
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
@@ -40,6 +41,9 @@
import org.apache.jetspeed.container.namespace.JetspeedNamespaceMapper;
import org.apache.jetspeed.container.namespace.JetspeedNamespaceMapperFactory;
import org.apache.jetspeed.container.url.PortalURL;
+import org.apache.jetspeed.om.common.GenericMetadata;
+import org.apache.jetspeed.om.common.LocalizedField;
+import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite;
import org.apache.jetspeed.request.JetspeedRequestContext;
import org.apache.jetspeed.request.RequestContext;
import org.apache.jetspeed.aggregator.Worker;
@@ -48,7 +52,6 @@
import org.apache.pluto.om.entity.PortletApplicationEntity;
import org.apache.pluto.om.entity.PortletEntity;
import org.apache.pluto.om.portlet.PortletApplicationDefinition;
-import org.apache.pluto.om.portlet.PortletDefinition;
import org.apache.pluto.om.window.PortletWindow;
import org.apache.pluto.util.Enumerator;
@@ -76,6 +79,9 @@
private static Boolean mergePortalParametersWithPortletParameters;
private static Boolean mergePortalParametersBeforePortletParameters;
+
+ private boolean portletMergePortalParametersWithPortletParameters;
+ private boolean portletMergePortalParametersBeforePortletParameters;
public ServletRequestImpl( HttpServletRequest servletRequest,
PortletWindow window )
{
@@ -83,21 +89,59 @@
nameSpaceMapper = ((JetspeedNamespaceMapperFactory)
Jetspeed.getComponentManager().getComponent(
org.apache.pluto.util.NamespaceMapper.class)).getJetspeedNamespaceMapper();
this.portletWindow = window;
- PortletDefinition portletDef =
portletWindow.getPortletEntity().getPortletDefinition();
+
+ 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);
+ }
+
+
+ PortletDefinitionComposite portletDef =
(PortletDefinitionComposite)portletWindow.getPortletEntity().getPortletDefinition();
if(portletDef != null)
{
webAppId =
portletDef.getPortletApplicationDefinition().getWebApplicationDefinition().getId();
+ GenericMetadata metaData = portletDef.getMetadata();
+
+ portletMergePortalParametersWithPortletParameters =
+ getMetaDataBooleanValue(
+ metaData,
+
PortalReservedParameters.PORTLET_EXTENDED_DESCRIPTOR_MERGE_PORTAL_PARAMETERS_WITH_PORTLET_PARAMETERS,
+ mergePortalParametersWithPortletParameters.booleanValue());
+ portletMergePortalParametersBeforePortletParameters =
+ getMetaDataBooleanValue(
+ metaData,
+
PortalReservedParameters.PORTLET_EXTENDED_DESCRIPTOR_MERGE_PORTAL_PARAMETERS_BEFORE_PORTLET_PARAMETERS,
+
mergePortalParametersBeforePortletParameters.booleanValue());
+
}
else
{
// This happens when an entity is referencing a non-existent
portlet
webAppId = window.getId();
+ portletMergePortalParametersWithPortletParameters =
mergePortalParametersWithPortletParameters.booleanValue();
+ portletMergePortalParametersBeforePortletParameters =
mergePortalParametersBeforePortletParameters.booleanValue();
}
- if (mergePortalParametersWithPortletParameters == null )
+ }
+
+ private boolean getMetaDataBooleanValue(GenericMetadata metaData, String
fieldName, boolean defaultValue )
+ {
+ String value = null;
+ if ( metaData != null )
+ {
+ Collection fields = metaData.getFields(fieldName);
+ if ( fields != null && !fields.isEmpty() )
+ {
+ value = ((LocalizedField)fields.iterator().next()).getValue();
+ }
+ }
+ if ( value != 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);
+ return Boolean.valueOf(value).booleanValue();
}
+ return defaultValue;
}
protected HttpServletRequest _getHttpServletRequest()
@@ -160,7 +204,7 @@
}
}
- if ( actionRequest ||
mergePortalParametersWithPortletParameters.booleanValue() )
+ if ( actionRequest ||
portletMergePortalParametersWithPortletParameters )
{
String encoding = (String)
getRequest().getAttribute(PortalReservedParameters.PREFERED_CHARACTERENCODING_ATTRIBUTE);
boolean decode =
getRequest().getAttribute(PortalReservedParameters.PARAMETER_ALREADY_DECODED_ATTRIBUTE)
== null
@@ -196,7 +240,7 @@
if (values != null)
{
String[] temp = new String[paramValues.length +
values.length];
- if ( actionRequest ||
this.mergePortalParametersBeforePortletParameters.booleanValue() )
+ if ( actionRequest ||
portletMergePortalParametersBeforePortletParameters )
{
System.arraycopy(paramValues, 0, temp, 0,
paramValues.length);
System.arraycopy(values, 0, temp,
paramValues.length, values.length);
Modified:
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/PortalReservedParameters.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/PortalReservedParameters.java?view=diff&rev=509975&r1=509974&r2=509975
==============================================================================
---
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/PortalReservedParameters.java
(original)
+++
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/PortalReservedParameters.java
Wed Feb 21 03:48:03 2007
@@ -83,4 +83,47 @@
* The timeout value is in milliseconds
*/
public static final String PORTLET_EXTENDED_DESCRIPTOR_RENDER_TIMEOUT =
"timeout";
+
+ /**
+ * Until version 2.1, Jetspeed merged portal request parameters with
portlet specific
+ * parameters, effectively allowing "shared" parameters.
+ * <p>
+ * This is not compliant with the JSR-168 PLT.11, so by default this is
now disabled
+ * through global settings in jetspeed.properties:
+ * <pre>
+ * merge.portal.parameters.with.portlet.parameters=false
+ * merge.portal.parameters.before.portlet.parameters=false
+ * </pre>
+ * <p>
+ * To support legacy portlets still relying on the "old" behavior these
default global
+ * settings can be overridden by defining these values in the portlet
Metadata too.
+ * </p>
+ * <p>
+ * Setting merge.portal.parameters.with.portlet.parameters=true will
"restore" the old behavior and
+ * merge the portal parameters with the portlet parameters.
+ * </p>
+ */
+ public static final String
PORTLET_EXTENDED_DESCRIPTOR_MERGE_PORTAL_PARAMETERS_WITH_PORTLET_PARAMETERS =
"merge.portal.parameters.with.portlet.parameters";
+
+ /**
+ * Until version 2.1, Jetspeed merged portal request parameters with
portlet specific
+ * parameters, effectively allowing "shared" parameters.
+ * <p>
+ * This is not compliant with the JSR-168 PLT.11, so by default this is
now disabled
+ * through global settings in jetspeed.properties:
+ * <pre>
+ * merge.portal.parameters.with.portlet.parameters=false
+ * merge.portal.parameters.before.portlet.parameters=false
+ * </pre>
+ * <p>
+ * To support legacy portlets still relying on the "old" behavior these
default global
+ * settings can be overridden by defining these values in the portlet
Metadata too.
+ * </p>
+ * <p>
+ * 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
+ * can be overridden by setting
merge.portal.parameters.before.portlet.parameters=true.
+ * </p>
+ */
+ public static final String
PORTLET_EXTENDED_DESCRIPTOR_MERGE_PORTAL_PARAMETERS_BEFORE_PORTLET_PARAMETERS =
"merge.portal.parameters.before.portlet.parameters";
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]