Author: julien(a)jboss.com
Date: 2008-01-20 17:26:12 -0500 (Sun, 20 Jan 2008)
New Revision: 9542
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/ParametersStateString.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/PortletURL.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/StateString.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/PortletRequestDecoder.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/PortletRequestEncoder.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletRequestParameterMap.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ActionResponseImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/BaseURLImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletRequestImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletURLImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/StateAwareResponseImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/AbstractPropertyMap.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/PortletRequestDecoderTestCase.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/PortletRequestEncoderTestCase.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr168/tck/portletrequests/ParametersDuringRenderNotTargetedTestCase.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/portletrequests/PublicRenderParameterTestCase.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/navigation/StateStringTestCase.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortalNavigationalState.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortalServlet.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletControllerContextImpl.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletURLRenderer.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/StringCodec.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/WindowNavigationalState.java
modules/portlet/trunk/test/src/test/resources/test/remote-jboss-unit.xml
Log:
- synch portlet with common
- make the navigational state management scoped in URLs instead of http session
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/ParametersStateString.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/ParametersStateString.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/ParametersStateString.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -42,6 +42,7 @@
*/
public class ParametersStateString extends StateString implements Serializable
{
+
/** . */
public static final String JBPNS_PREFIX = "JBPNS_";
@@ -51,6 +52,16 @@
/** . */
private static final String EOF = "__EOF__";
+ public static ParametersStateString create()
+ {
+ return new ParametersStateString();
+ }
+
+ public static ParametersStateString create(Map<String, String[]> parameters)
+ {
+ return new ParametersStateString(parameters);
+ }
+
/**
* Factory method that will create the most appropriate form from the string
representation.
*
@@ -79,7 +90,7 @@
* <code>ParametersStateString</code>.
*
* @param stateString the state string
- * @return a new state string
+ * @return a new parameter state string
* @throws IllegalArgumentException if the state string is opaque and does not
represent parameters
*/
public static ParametersStateString create(StateString stateString) throws
IllegalArgumentException
@@ -88,20 +99,24 @@
{
throw new IllegalArgumentException("No null state string accepted");
}
+
+ //
if (stateString instanceof ParametersStateString)
{
- return (ParametersStateString)stateString;
+ // Use the copy constructor
+ return new
ParametersStateString(((ParametersStateString)stateString).parameters);
}
else
{
+ // Use the deserializing constructor
return new ParametersStateString(stateString.getStringValue());
}
}
- /** The data. */
+ /** The underlying map that does not have a copy read/write access mode. */
private ParameterMap parameters;
- public ParametersStateString(String opaqueValue)
+ private ParametersStateString(String opaqueValue)
{
if (opaqueValue == null)
{
@@ -147,7 +162,7 @@
current = ois.readUTF();
}
- parameters = ParameterMap.clone(params);
+ parameters = ParameterMap.wrap(params);
}
catch (Exception e)
{
@@ -161,7 +176,7 @@
}
/** Creates an empty parameter set. */
- public ParametersStateString()
+ private ParametersStateString()
{
this.parameters = new ParameterMap();
}
@@ -169,26 +184,15 @@
/**
* Copy the parameter map to initialize the object state.
*
- * @param parameterMap the parameter map to clone
+ * @param parameters the parameter map to clone
* @throws IllegalArgumentException if the parameter map is null or not valid
*/
- public ParametersStateString(Map<String, String[]> parameterMap)
+ private ParametersStateString(Map<String, String[]> parameters)
{
- this.parameters = ParameterMap.clone(parameterMap);
+ this.parameters = ParameterMap.clone(parameters);
}
/**
- * Copy the parameter map to initialize the object state.
- *
- * @param parameterMap the parameter map to clone
- * @throws IllegalArgumentException if the parameter map is null or not valid
- */
- public ParametersStateString(ParameterMap parameterMap)
- {
- this.parameters = ParameterMap.clone(parameterMap);
- }
-
- /**
* Return the parameter value or null if it does not exist.
*
* @param name the parameter name
@@ -209,7 +213,7 @@
*/
public String[] getValues(String name) throws IllegalArgumentException
{
- return parameters.getValues(name);
+ return parameters.get(name);
}
/** Clear all the parameters. */
@@ -226,7 +230,7 @@
*/
public void replace(Map<String, String[]> map)
{
- this.parameters.replace(map);
+ parameters.replace(map);
}
/**
@@ -325,25 +329,6 @@
}
}
- public int hashCode()
- {
- return getParameters().hashCode();
- }
-
- public boolean equals(Object o)
- {
- if (o == this)
- {
- return true;
- }
- if (o instanceof ParametersStateString)
- {
- ParametersStateString that = (ParametersStateString)o;
- return that.parameters.equals(parameters);
- }
- return false;
- }
-
public String toString()
{
return "StateString[" + parameters + "]";
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/PortletURL.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/PortletURL.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/PortletURL.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -25,6 +25,8 @@
import org.jboss.portal.Mode;
import org.jboss.portal.WindowState;
+import java.util.Map;
+
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 5448 $
@@ -44,4 +46,10 @@
* @return the window state
*/
WindowState getWindowState();
+
+ /**
+ *
+ * @return
+ */
+ Map<String, String[]> getPublicNavigationalStateChanges();
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/StateString.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/StateString.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/StateString.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -48,8 +48,4 @@
return new OpaqueStateString(opaqueValue);
}
- public abstract int hashCode();
-
- public abstract boolean equals(Object o);
-
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/PortletRequestDecoder.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/PortletRequestDecoder.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/PortletRequestDecoder.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -170,7 +170,7 @@
if (!opaque)
{
// Compute the parameters skipping the portlet navigational state that may be
encoded as well
- ParametersStateString query = new ParametersStateString();
+ ParametersStateString query = ParametersStateString.create();
for (Iterator i = queryParams.entrySet().iterator(); i.hasNext();)
{
Map.Entry entry = (Map.Entry)i.next();
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/PortletRequestEncoder.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/PortletRequestEncoder.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/PortletRequestEncoder.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -108,7 +108,7 @@
}
// Add the parameters
- ParameterMap parameters =
((ParametersStateString)interactionState).getParameters();
+ Map<String, String[]> parameters =
((ParametersStateString)interactionState).getParameters();
configure(parameters);
}
else
@@ -146,7 +146,7 @@
if (navigationalState instanceof ParametersStateString)
{
// Add the parameters
- ParameterMap parameters =
((ParametersStateString)navigationalState).getParameters();
+ Map<String, String[]> parameters =
((ParametersStateString)navigationalState).getParameters();
configure(parameters);
}
else
@@ -180,7 +180,7 @@
return queryParameters;
}
- private void configure(ParameterMap parameters)
+ private void configure(Map<String, String[]> parameters)
{
for (Iterator i = parameters.entrySet().iterator(); i.hasNext();)
{
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletRequestParameterMap.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletRequestParameterMap.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/PortletRequestParameterMap.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -30,6 +30,7 @@
import org.jboss.portal.portlet.info.NavigationInfo;
import java.util.Iterator;
+import java.util.Map;
/**
* The main responsibility of this class is to combine the different parameter sources
(private navigational state,
@@ -41,6 +42,8 @@
public class PortletRequestParameterMap
{
+ private static final ParameterMap.AccessMode COPY_MODE =
ParameterMap.AccessMode.get(true, true);
+
/** . */
protected final ParameterMap parameters;
@@ -52,11 +55,14 @@
public PortletRequestParameterMap(NavigationInfo navigationInfo,
PortletInvocationContext context)
{
- // Get public nav state and filter it
+ // Build public parameters
ParameterMap publicParameters = null;
+
+ //
if (context.getPublicNavigationalState() != null)
{
- publicParameters = new ParameterMap(context.getPublicNavigationalState());
+ // Clone the public navigational state with the copy mode
+ publicParameters = ParameterMap.clone(context.getPublicNavigationalState());
// Remove any parameter that would have been sent by the producer by mistake
for (Iterator<String> i = publicParameters.keySet().iterator();
i.hasNext();)
@@ -81,11 +87,7 @@
StateString interactionState = actionContext.getInteractionState();
if (interactionState != null)
{
- //
- ParametersStateString parametersState =
ParametersStateString.create(interactionState);
-
- //
- privateParameters = parametersState.getParameters();
+ privateParameters =
ParametersStateString.create(interactionState).getParameters();
}
// Combine form if we have one
@@ -98,7 +100,6 @@
}
else
{
- privateParameters = ParameterMap.clone(privateParameters);
privateParameters.append(form);
}
}
@@ -109,9 +110,8 @@
{
if (privateParameters != null)
{
- ParameterMap tmp = ParameterMap.clone(privateParameters);
- tmp.append(publicParameters);
- parameters = tmp;
+ parameters = ParameterMap.clone(privateParameters);
+ parameters.append(publicParameters);
}
else
{
@@ -130,6 +130,20 @@
}
}
+ // Use with access mode that will prevent external updates to the map
+ if (privateParameters != null)
+ {
+ privateParameters = privateParameters.as(COPY_MODE);
+ }
+ if (publicParameters != null)
+ {
+ publicParameters = publicParameters.as(COPY_MODE);
+ }
+ if (parameters != null)
+ {
+ parameters = parameters.as(COPY_MODE);
+ }
+
//
this.privateParameters = privateParameters;
this.publicParameters = publicParameters;
@@ -154,7 +168,7 @@
if (privateParameters != null)
{
parameters = ParameterMap.clone(privateParameters);
- parameters.putAll(publicParameters);
+ parameters.append(publicParameters);
}
else
{
@@ -173,6 +187,20 @@
}
}
+ // Use with access mode that will prevent external updates to the map
+ if (privateParameters != null)
+ {
+ privateParameters = privateParameters.as(COPY_MODE);
+ }
+ if (publicParameters != null)
+ {
+ publicParameters = publicParameters.as(COPY_MODE);
+ }
+ if (parameters != null)
+ {
+ parameters = parameters.as(COPY_MODE);
+ }
+
//
this.privateParameters = privateParameters;
this.publicParameters = publicParameters;
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ActionResponseImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ActionResponseImpl.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ActionResponseImpl.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -47,7 +47,7 @@
//
UpdateNavigationalStateResponse rr = new UpdateNavigationalStateResponse();
- rr.setNavigationalState(new ParametersStateString());
+ rr.setNavigationalState(ParametersStateString.create());
//
this.response = rr;
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/BaseURLImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/BaseURLImpl.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/BaseURLImpl.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -184,6 +184,11 @@
}
return null;
}
+
+ public Map<String, String[]> getPublicNavigationalStateChanges()
+ {
+ return parameters.getPublicMapSnapshot();
+ }
}
protected class InternalActionURL extends InternalPortletURL implements ActionURL
@@ -196,13 +201,13 @@
public StateString getInteractionState()
{
- return new ParametersStateString(parameters.getPrivateMapSnapshot());
+ return ParametersStateString.create(parameters.getPrivateMapSnapshot());
}
/** The portlet container does not need to have the navigational state provided.
*/
public StateString getNavigationalState()
{
- return null;
+ return BaseURLImpl.this.inv.getPortletContext().getNavigationalState();
}
}
@@ -216,7 +221,7 @@
public StateString getNavigationalState()
{
- return new ParametersStateString(parameters.getPrivateMapSnapshot());
+ return ParametersStateString.create(parameters.getPrivateMapSnapshot());
}
}
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletRequestImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletRequestImpl.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletRequestImpl.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -125,21 +125,16 @@
public String getParameter(String name)
{
- ParameterMap parameters = requestParameterMap.getParameters();
-
- //
if (name == null)
{
- throw new IllegalArgumentException("name must not be null");
+ throw new IllegalArgumentException("Name shoudl not be null");
}
- if (parameters != null)
- {
- return parameters.getValue(name);
- }
- else
- {
- return null;
- }
+
+ //
+ ParameterMap parameters = requestParameterMap.getParameters();
+
+ //
+ return parameters != null ? parameters.getValue(name) : null;
}
public Enumeration<String> getParameterNames()
@@ -147,34 +142,21 @@
ParameterMap parameters = requestParameterMap.getParameters();
//
- if (parameters != null)
- {
- return Collections.enumeration(parameters.keySet());
- }
- else
- {
- return (Enumeration<String>)Tools.EMPTY_ENUMERATION;
- }
+ return parameters != null ? Collections.enumeration(parameters.keySet()) :
(Enumeration<String>)Tools.EMPTY_ENUMERATION;
}
public String[] getParameterValues(String name)
{
if (name == null)
{
- throw new IllegalArgumentException("name must not be null");
+ throw new IllegalArgumentException("Name shoudl not be null");
}
+ //
ParameterMap parameters = requestParameterMap.getParameters();
//
- if (parameters != null)
- {
- return parameters.getValues(name);
- }
- else
- {
- return null;
- }
+ return parameters != null ? parameters.getValues(name) : null;
}
public Map<String, String[]> getParameterMap()
@@ -188,7 +170,7 @@
}
else
{
- return (Map<String, String[]>)Collections.EMPTY_MAP;
+ return Collections.emptyMap();
}
}
@@ -509,7 +491,7 @@
//
if (parameters != null)
{
- return parameters;
+ return Collections.unmodifiableMap(parameters);
}
else
{
@@ -524,7 +506,7 @@
//
if (parameters != null)
{
- return parameters;
+ return Collections.unmodifiableMap(parameters);
}
else
{
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletURLImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletURLImpl.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletURLImpl.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -83,8 +83,8 @@
throw new NotYetImplemented();
}
- public void removePublicRenderParameter(String s)
+ public void removePublicRenderParameter(String name)
{
- throw new NotYetImplemented();
+ url.parameters.removePublicParameterValue(name);
}
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/StateAwareResponseImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/StateAwareResponseImpl.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/StateAwareResponseImpl.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -402,7 +402,7 @@
response.setMode(mode);
response.setWindowState(windowState);
response.setPublicNavigationalStateUpdates(navigationalState.getPublicMapSnapshot());
- response.setNavigationalState(new
ParametersStateString(navigationalState.getPrivateMapSnapshot()));
+
response.setNavigationalState(ParametersStateString.create(navigationalState.getPrivateMapSnapshot()));
//
return response;
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/AbstractPropertyMap.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/AbstractPropertyMap.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/state/AbstractPropertyMap.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -23,7 +23,6 @@
package org.jboss.portal.portlet.state;
import org.jboss.portal.common.util.TypedMap;
-import org.jboss.portal.common.util.MapAccessor;
import org.jboss.portal.common.value.Value;
import java.util.Map;
@@ -35,11 +34,6 @@
public class AbstractPropertyMap<IK, IV> extends TypedMap<String, Value, IK,
IV> implements PropertyMap
{
- public AbstractPropertyMap(MapAccessor<IK, IV> mapAccessor, Converter<String,
IK> keyConverter, Converter<Value, IV> valueConverter)
- {
- super(mapAccessor, keyConverter, valueConverter);
- }
-
public AbstractPropertyMap(Map<IK, IV> map, Converter<String, IK>
keyConverter, Converter<Value, IV> valueConverter)
{
super(map, keyConverter, valueConverter);
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/PortletRequestDecoderTestCase.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/PortletRequestDecoderTestCase.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/PortletRequestDecoderTestCase.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -265,7 +265,7 @@
o.decode(queryParams, null);
assertNull(o.getForm());
assertNull(o.getInteractionState());
- assertEquals(new ParametersStateString(), o.getNavigationalState());
+ assertEquals(ParametersStateString.create(), o.getNavigationalState());
assertEquals(PortletRequestDecoder.RENDER_TYPE, o.getType());
assertNull(o.getMode());
assertNull(o.getWindowState());
@@ -277,7 +277,7 @@
o.decode(queryParams, null);
assertNull(o.getForm());
assertNull(o.getInteractionState());
- assertEquals(new ParametersStateString(), o.getNavigationalState());
+ assertEquals(ParametersStateString.create(), o.getNavigationalState());
assertEquals(PortletRequestDecoder.RENDER_TYPE, o.getType());
assertEquals(Mode.VIEW, o.getMode());
assertNull(o.getWindowState());
@@ -289,7 +289,7 @@
o.decode(queryParams, null);
assertNull(o.getForm());
assertNull(o.getInteractionState());
- assertEquals(new ParametersStateString(), o.getNavigationalState());
+ assertEquals(ParametersStateString.create(), o.getNavigationalState());
assertEquals(PortletRequestDecoder.RENDER_TYPE, o.getType());
assertNull(o.getMode());
assertEquals(WindowState.NORMAL, o.getWindowState());
@@ -302,7 +302,7 @@
Map queryParams = new HashMap();
Map bodyParams = new HashMap();
PortletRequestDecoder o = new PortletRequestDecoder();
- ParametersStateString navState = new ParametersStateString();
+ ParametersStateString navState = ParametersStateString.create();
// Query parameter
queryParams.put(PortletRequestDecoder.META_PARAMETER,
asStringArray(Integer.toHexString(PortletRequestDecoder.RENDER_MASK)));
@@ -511,7 +511,7 @@
queryParams.put(PortletRequestDecoder.META_PARAMETER,
asStringArray(Integer.toHexString(PortletRequestDecoder.ACTION_MASK)));
o.decode(queryParams, null);
assertEquals(new ParameterMap(), o.getForm());
- assertEquals(new ParametersStateString(), o.getInteractionState());
+ assertEquals(ParametersStateString.create(), o.getInteractionState());
assertNull(o.getNavigationalState());
assertEquals(PortletRequestDecoder.ACTION_TYPE, o.getType());
assertNull(o.getMode());
@@ -523,7 +523,7 @@
queryParams.put(PortletRequestDecoder.MODE_PARAMETER,
asStringArray(Mode.VIEW.toString()));
o.decode(queryParams, null);
assertEquals(new ParameterMap(), o.getForm());
- assertEquals(new ParametersStateString(), o.getInteractionState());
+ assertEquals(ParametersStateString.create(), o.getInteractionState());
assertNull(o.getNavigationalState());
assertEquals(PortletRequestDecoder.ACTION_TYPE, o.getType());
assertEquals(Mode.VIEW, o.getMode());
@@ -535,7 +535,7 @@
queryParams.put(PortletRequestDecoder.WINDOW_STATE_PARAMETER,
asStringArray(WindowState.NORMAL.toString()));
o.decode(queryParams, null);
assertEquals(new ParameterMap(), o.getForm());
- assertEquals(new ParametersStateString(), o.getInteractionState());
+ assertEquals(ParametersStateString.create(), o.getInteractionState());
assertNull(o.getNavigationalState());
assertEquals(PortletRequestDecoder.ACTION_TYPE, o.getType());
assertNull(o.getMode());
@@ -549,7 +549,7 @@
Map queryParams = new HashMap();
Map bodyParams = new HashMap();
PortletRequestDecoder o = new PortletRequestDecoder();
- ParametersStateString intState = new ParametersStateString();
+ ParametersStateString intState = ParametersStateString.create();
ParameterMap form = new ParameterMap();
// Query parameter
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/PortletRequestEncoderTestCase.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/PortletRequestEncoderTestCase.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/PortletRequestEncoderTestCase.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -81,20 +81,20 @@
public void _testEncodeRender(int lifecycle, int lifecycleMask)
{
- ParametersStateString pp = new ParametersStateString();
+ ParametersStateString pp = ParametersStateString.create();
encode(pp, null, null, lifecycle);
assertEquals(1, params.size());
_assertEquals(lifecycleMask,
params.getValues(PortletRequestDecoder.META_PARAMETER));
//
- pp = new ParametersStateString();
+ pp = ParametersStateString.create();
pp.setValue(PortletRequestDecoder.META_PARAMETER, "foo");
encode(pp, null, null, lifecycle);
assertEquals(1, params.size());
_assertEquals(new String[]{Integer.toHexString(lifecycleMask),"foo"},
params.getValues(PortletRequestDecoder.META_PARAMETER));
//
- pp = new ParametersStateString();
+ pp = ParametersStateString.create();
pp.setValue("foo", "bar");
encode(pp, null, null, lifecycle);
assertEquals(2, params.size());
@@ -102,14 +102,14 @@
_assertEquals("bar", params.getValues("foo"));
//
- pp = new ParametersStateString();
+ pp = ParametersStateString.create();
encode(pp, Mode.VIEW, null, lifecycle);
assertEquals(2, params.size());
_assertEquals(lifecycleMask | PortletRequestDecoder.MODE_MASK,
params.getValues(PortletRequestDecoder.META_PARAMETER));
_assertEquals(Mode.VIEW, params.getValues(PortletRequestDecoder.MODE_PARAMETER));
//
- pp = new ParametersStateString();
+ pp = ParametersStateString.create();
pp.setValue(PortletRequestDecoder.MODE_PARAMETER, "foo");
encode(pp, Mode.VIEW, null, lifecycle);
assertEquals(2, params.size());
@@ -117,7 +117,7 @@
_assertEquals(new String[]{Mode.VIEW.toString(),"foo"},
params.getValues(PortletRequestDecoder.MODE_PARAMETER));
//
- pp = new ParametersStateString();
+ pp = ParametersStateString.create();
pp.setValue("foo", "bar");
encode(pp, Mode.VIEW, null, lifecycle);
assertEquals(3, params.size());
@@ -126,14 +126,14 @@
_assertEquals("bar", params.getValues("foo"));
//
- pp = new ParametersStateString();
+ pp = ParametersStateString.create();
encode(pp, null, WindowState.NORMAL, lifecycle);
assertEquals(2, params.size());
_assertEquals(lifecycleMask | PortletRequestDecoder.WINDOW_STATE_MASK,
params.getValues(PortletRequestDecoder.META_PARAMETER));
_assertEquals(WindowState.NORMAL,
params.getValues(PortletRequestDecoder.WINDOW_STATE_PARAMETER));
//
- pp = new ParametersStateString();
+ pp = ParametersStateString.create();
pp.setValue(PortletRequestDecoder.WINDOW_STATE_PARAMETER, "foo");
encode(pp, null, WindowState.NORMAL, lifecycle);
assertEquals(2, params.size());
@@ -141,7 +141,7 @@
_assertEquals(new String[]{WindowState.NORMAL.toString(),"foo"},
params.getValues(PortletRequestDecoder.WINDOW_STATE_PARAMETER));
//
- pp = new ParametersStateString();
+ pp = ParametersStateString.create();
pp.setValue("foo", "bar");
encode(pp, null, WindowState.NORMAL, lifecycle);
assertEquals(3, params.size());
@@ -150,7 +150,7 @@
_assertEquals("bar", params.getValues("foo"));
//
- pp = new ParametersStateString();
+ pp = ParametersStateString.create();
encode(pp, Mode.VIEW, WindowState.NORMAL, lifecycle);
assertEquals(3, params.size());
_assertEquals(lifecycleMask | PortletRequestDecoder.MODE_MASK |
PortletRequestDecoder.WINDOW_STATE_MASK,
params.getValues(PortletRequestDecoder.META_PARAMETER));
@@ -158,7 +158,7 @@
_assertEquals(WindowState.NORMAL,
params.getValues(PortletRequestDecoder.WINDOW_STATE_PARAMETER));
//
- pp = new ParametersStateString();
+ pp = ParametersStateString.create();
pp.setValue("foo", "bar");
encode(pp, Mode.VIEW, WindowState.NORMAL, lifecycle);
assertEquals(4, params.size());
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr168/tck/portletrequests/ParametersDuringRenderNotTargetedTestCase.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr168/tck/portletrequests/ParametersDuringRenderNotTargetedTestCase.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr168/tck/portletrequests/ParametersDuringRenderNotTargetedTestCase.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -48,18 +48,12 @@
public class ParametersDuringRenderNotTargetedTestCase
{
- String url;
-
public ParametersDuringRenderNotTargetedTestCase(PortletTestCase seq)
{
seq.bindAction(0, UTP2.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected DriverResponse run(Portlet portlet, RenderRequest request,
RenderResponse response, PortletTestContext context)
{
- PortletURL portletURL = response.createRenderURL();
- portletURL.setParameter("portlet2key1", "p2k1value1");
- portletURL.setParameter("portlet2key2", new
String[]{"p2k2value1", "p2k2value2", "p2k2value3"});
- url = portletURL.toString();
return null;
}
});
@@ -82,8 +76,18 @@
{
protected DriverResponse run(Portlet portlet, RenderRequest request,
RenderResponse response, PortletTestContext context)
{
+ return null;
+ }
+ });
+ seq.bindAction(1, UTP2.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request,
RenderResponse response, PortletTestContext context)
+ {
//invoke render url from different portlet to be able to pass some params to
it
- return new InvokeGetResponse(url);
+ PortletURL portletURL = response.createRenderURL();
+ portletURL.setParameter("portlet2key1", "p2k1value1");
+ portletURL.setParameter("portlet2key2", new
String[]{"p2k2value1", "p2k2value2", "p2k2value3"});
+ return new InvokeGetResponse(portletURL.toString());
}
});
@@ -93,6 +97,8 @@
{
assertEquals("p2k1value1",
request.getParameter("portlet2key1"));
assertEquals(new String[]{"p2k2value1", "p2k2value2",
"p2k2value3"}, request.getParameterValues("portlet2key2"));
+
+ //
return null;
}
});
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/portletrequests/PublicRenderParameterTestCase.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/portletrequests/PublicRenderParameterTestCase.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/portletrequests/PublicRenderParameterTestCase.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -106,7 +106,9 @@
protected void run(Portlet portlet, ActionRequest request, ActionResponse
response, PortletTestContext context) throws PortletException, IOException
{
assertEquals(2, renderCount);
- assertEquals(new String[]{"bar","foo"},
request.getParameterMap().get("foo"));
+ String[] blah = request.getParameterMap().get("foo");
+ String[] bloh = {"bar", "foo"};
+ assertEquals(bloh, blah);
response.removePublicRenderParameter("foo");
renderCount = 0;
}
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/navigation/StateStringTestCase.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/navigation/StateStringTestCase.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/navigation/StateStringTestCase.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -43,7 +43,7 @@
@Test
public void testNavigationalState() throws Exception
{
- ParametersStateString ns = new ParametersStateString();
+ ParametersStateString ns = ParametersStateString.create();
ns.setValue(NAME1, VALUE1);
assertEquals(VALUE1, ns.getValue(NAME1));
@@ -51,7 +51,7 @@
System.out.println("opaqueValue = " + opaqueValue);
assertNotNull(opaqueValue);
- ns = new ParametersStateString(opaqueValue);
+ ns = (ParametersStateString)ParametersStateString.create(opaqueValue);
assertEquals(VALUE1, ns.getValue(NAME1));
}
}
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortalNavigationalState.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortalNavigationalState.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortalNavigationalState.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -62,17 +62,17 @@
return page;
}
- public byte[] getBytes() throws IOException
+ public static byte[] serialize(PortalNavigationalState object) throws IOException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream zos = new GZIPOutputStream(baos);
ObjectOutputStream oos = new ObjectOutputStream(zos);
- oos.writeObject(this);
+ oos.writeObject(object);
oos.close();
return baos.toByteArray();
}
- public static PortalNavigationalState create(byte[] bytes) throws IOException,
ClassNotFoundException
+ public static PortalNavigationalState unserialize(byte[] bytes) throws IOException,
ClassNotFoundException
{
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
GZIPInputStream zis = new GZIPInputStream(bais);
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortalServlet.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortalServlet.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortalServlet.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -61,7 +61,7 @@
protected void _service(HttpServletRequest req, HttpServletResponse resp) throws
Exception
{
- PortletControllerContextImpl context = new PortletControllerContextImpl(req, resp,
getServletContext(), PortletControllerContextImpl.SESSION_SCOPE);
+ PortletControllerContextImpl context = new PortletControllerContextImpl(req, resp,
getServletContext());
//
PortletController controller = new PortletController();
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -23,9 +23,9 @@
package org.jboss.portal.portlet.test;
import org.jboss.portal.portlet.Portlet;
-import org.jboss.portal.portlet.StateString;
import org.jboss.portal.portlet.ParametersStateString;
import org.jboss.portal.portlet.PortletInvokerException;
+import org.jboss.portal.portlet.StateString;
import org.jboss.portal.portlet.info.PortletInfo;
import org.jboss.portal.portlet.info.EventInfo;
import org.jboss.portal.portlet.info.ParameterInfo;
@@ -111,14 +111,19 @@
{
if (action instanceof PortletRender)
{
+ PortletRender portletRender = (PortletRender)action;
+
+ //
UpdateNavigationalStateResponse updateNavigationalState = new
UpdateNavigationalStateResponse();
updateNavigationalState.setMode(action.mode);
updateNavigationalState.setWindowState(action.windowState);
- updateNavigationalState.setNavigationalState(new
ParametersStateString(action.queryParameters));
+
updateNavigationalState.setNavigationalState(portletRender.navigationalParameters);
return updateNavigationalState;
}
else
{
+ PortletAction portletAction = (PortletAction)action;
+
Portlet portlet = context.getPortlet(action.portletId);
HttpServletRequest req = context.getClientRequest();
HttpServletResponse resp = context.getClientResponse();
@@ -127,13 +132,6 @@
WindowNavigationalState windowNS =
navState.getWindowNavigationalState(action.portletId);
//
- StateString portletNS = null;
- if (windowNS != null)
- {
- portletNS = windowNS.getPortletNavigationalState();
- }
-
- //
Mode mode = action.mode;
if (mode == null && windowNS != null && windowNS.getMode() !=
null)
{
@@ -164,11 +162,11 @@
renderer,
mode,
windowState,
- portletNS,
+ portletAction.navigationalParameters,
publicNS,
MARKUP_INFO,
- new ParametersStateString(action.queryParameters),
- action.bodyParameters != null ? ParameterMap.clone(action.bodyParameters) :
null);
+ portletAction.interactionParameters,
+ portletAction.bodyParameters != null ?
ParameterMap.clone(portletAction.bodyParameters) : null);
ActionInvocation actionInvocation = new ActionInvocation(actionContext);
//
@@ -537,12 +535,6 @@
final String portletId;
/** . */
- final ParameterMap queryParameters;
-
- /** . */
- final ParameterMap bodyParameters;
-
- /** . */
final Mode mode;
/** . */
@@ -550,14 +542,10 @@
public Action(
String portletId,
- ParameterMap queryParameters,
- ParameterMap bodyParameters,
Mode mode,
WindowState windowState)
{
this.portletId = portletId;
- this.queryParameters = queryParameters;
- this.bodyParameters = bodyParameters;
this.mode = mode;
this.windowState = windowState;
}
@@ -565,27 +553,50 @@
static class PortletAction extends Action
{
+
+ /** . */
+ final StateString navigationalParameters;
+
+ /** . */
+ final StateString interactionParameters;
+
+ /** . */
+ final Map<String, String[]> bodyParameters;
+
public PortletAction(
String portletId,
- ParameterMap queryParameters,
- ParameterMap bodyParameters,
+ StateString navigationalParameters,
+ StateString interactionParameters,
+ Map<String, String[]> bodyParameters,
Mode mode,
WindowState windowState)
{
- super(portletId, queryParameters, bodyParameters, mode, windowState);
+ super(portletId, mode, windowState);
+
+ //
+ this.navigationalParameters = navigationalParameters;
+ this.interactionParameters = interactionParameters;
+ this.bodyParameters = bodyParameters;
}
}
static class PortletRender extends Action
{
+
+ /** . */
+ final StateString navigationalParameters;
+
+
public PortletRender(
String portletId,
- ParameterMap queryParameters,
- ParameterMap bodyParameters,
+ StateString navigationalParameters,
Mode mode,
WindowState windowState)
{
- super(portletId, queryParameters, bodyParameters, mode, windowState);
+ super(portletId, mode, windowState);
+
+ //
+ this.navigationalParameters = navigationalParameters;
}
}
}
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletControllerContextImpl.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletControllerContextImpl.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletControllerContextImpl.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -30,9 +30,10 @@
import org.jboss.portal.portlet.PortletContext;
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
+import org.jboss.portal.portlet.ParametersStateString;
+import org.jboss.portal.portlet.StateString;
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
-import org.jboss.portal.portlet.test.url.ParameterDecoder;
import org.jboss.portal.web.Body;
import org.jboss.portal.web.IllegalRequestException;
import org.jboss.portal.web.WebRequest;
@@ -77,14 +78,13 @@
public PortletControllerContextImpl(
HttpServletRequest req,
HttpServletResponse resp,
- ServletContext servletContext,
- int navStateScope)
+ ServletContext servletContext)
throws IllegalRequestException, IOException, ClassNotFoundException
{
- if (navStateScope < NAV_SCOPE || navStateScope > SESSION_SCOPE)
- {
- throw new IllegalArgumentException();
- }
+// if (navStateScope < NAV_SCOPE || navStateScope > SESSION_SCOPE)
+// {
+// throw new IllegalArgumentException();
+// }
//
PortletInvoker invoker =
(PortletInvoker)servletContext.getAttribute("ConsumerPortletInvoker");
@@ -99,57 +99,70 @@
String targetId = StringCodec.decode(pathInfo.substring(1));
WebRequest ri = new WebRequest(req);
- ParameterDecoder decoder = PortletURLRenderer.builder.createDecoder();
- decoder.decode(ri.getQueryParameterMap());
- //
- ParameterMap metaParameters = decoder.getMetaParameters();
+// if (navStateScope == NAV_SCOPE)
+// {
+// String ns = metaParameters.getValue("ns");
+// byte[] bytes = Tools.fromHexString(ns);
+// navState = PortalNavigationalState.create(bytes);
+// }
+// else
+// {
+// navState =
(PortalNavigationalState)req.getSession().getAttribute("nav_state");
+// }
- if (navStateScope == NAV_SCOPE)
- {
- String ns = metaParameters.getValue("ns");
- byte[] bytes = Tools.fromHexString(ns);
- navState = PortalNavigationalState.create(bytes);
- }
- else
- {
- navState =
(PortalNavigationalState)req.getSession().getAttribute("nav_state");
- }
+ // Unmarshall portal navigational state
+ String context = req.getParameter("context");
+ byte[] bytes = Tools.fromHexString(context);
+ navState = PortalNavigationalState.unserialize(bytes);
//
- ParameterMap actualParameters = decoder.getActualParameters();
+ String type = req.getParameter("type");
//
Mode mode = null;
- if (metaParameters.getValue("mode") != null)
+ if (req.getParameter("mode") != null)
{
- mode = Mode.create(metaParameters.getValue("mode"));
+ mode = Mode.create(req.getParameter("mode"));
}
//
WindowState windowState = null;
- if (metaParameters.getValue("windowstate") != null)
+ if (req.getParameter("windowstate") != null)
{
- windowState =
WindowState.create(metaParameters.getValue("windowstate"));
+ windowState = WindowState.create(req.getParameter("windowstate"));
}
- //
- String type = metaParameters.getValue("type");
- //
- ParameterMap formParameters = null;
- if (ri.getBody() instanceof Body.Form)
- {
- formParameters = ((Body.Form)ri.getBody()).getParameters();
- }
if ("action".equals(type))
{
- action = new PortletController.PortletAction(targetId, actualParameters,
formParameters, mode, windowState);
+ ParameterMap formParameters = null;
+ if (ri.getBody() instanceof Body.Form)
+ {
+ formParameters = ((Body.Form)ri.getBody()).getParameters();
+ }
+
+ //
+ String navigationalStateString =
req.getParameter("navigationalstate");
+ StateString navigationalState = null;
+ if (navigationalStateString != null)
+ {
+ navigationalState =
ParametersStateString.create(navigationalStateString);
+ }
+
+ //
+ StateString interactionState =
ParametersStateString.create(req.getParameter("interactionstate"));
+
+ //
+ action = new PortletController.PortletAction(targetId, navigationalState,
interactionState, formParameters, mode, windowState);
}
else
{
- action = new PortletController.PortletRender(targetId, actualParameters,
formParameters, mode, windowState);
+ StateString navigationalState =
ParametersStateString.create(req.getParameter("navigationalstate"));
+
+ //
+ action = new PortletController.PortletRender(targetId, navigationalState,
mode, windowState);
}
}
else
@@ -158,10 +171,10 @@
action = null;
//
- if (navStateScope == SESSION_SCOPE)
- {
- req.getSession().setAttribute("nav_state", navState);
- }
+// if (navStateScope == SESSION_SCOPE)
+// {
+// req.getSession().setAttribute("nav_state", navState);
+// }
}
this.navState = navState;
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletURLRenderer.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletURLRenderer.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletURLRenderer.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -25,19 +25,16 @@
import org.jboss.portal.portlet.Portlet;
import org.jboss.portal.portlet.PortletURL;
import org.jboss.portal.portlet.RenderURL;
-import org.jboss.portal.portlet.ParametersStateString;
import org.jboss.portal.portlet.ActionURL;
-import org.jboss.portal.portlet.test.url.CodecBuilder;
-import org.jboss.portal.portlet.test.url.ParameterEncoder;
+import org.jboss.portal.portlet.StateString;
import org.jboss.portal.common.text.CharBuffer;
import org.jboss.portal.common.text.FastURLEncoder;
-import org.jboss.portal.common.util.ParameterMap;
import org.jboss.portal.common.util.Tools;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.util.Iterator;
import java.util.Map;
+import java.util.HashMap;
import java.io.IOException;
/**
@@ -59,7 +56,11 @@
/** . */
final PortalNavigationalState navState;
- public PortletURLRenderer(PortalNavigationalState navState, Portlet portlet,
HttpServletRequest clientReq, HttpServletResponse clientResp)
+ public PortletURLRenderer(
+ PortalNavigationalState navState,
+ Portlet portlet,
+ HttpServletRequest clientReq,
+ HttpServletResponse clientResp)
{
this.navState = navState;
this.portlet = portlet;
@@ -67,12 +68,6 @@
this.clientResp = clientResp;
}
- static final CodecBuilder builder = new CodecBuilder("action").
- addMetaParameter("windowstate").
- addMetaParameter("mode").
- addMetaParameter("type").
- addMetaParameter("ns");
-
String renderURL(PortletURL portletURL, Boolean wantSecure, Boolean wantAuthenticated,
boolean relative)
{
CharBuffer buffer = new CharBuffer();
@@ -86,62 +81,69 @@
buffer.append(StringCodec.encode(portlet.getContext().getId()));
//
- ParameterMap metaParameters = new ParameterMap();
+ Map<String, String> parameters = new HashMap<String, String>();
//
- metaParameters.setValue("type", portletURL instanceof RenderURL ?
"render" : "action");
+ parameters.put("type", portletURL instanceof RenderURL ?
"render" : "action");
//
try
{
- byte[] bytes = navState.getBytes();
+ byte[] bytes = PortalNavigationalState.serialize(navState);
String ns = Tools.toHexString(bytes);
- metaParameters.setValue("ns", ns);
+ parameters.put("context", ns);
}
catch (IOException e)
{
- e.printStackTrace();
+ throw new Error(e); //
}
//
if (portletURL.getMode() != null)
{
- metaParameters.setValue("mode", portletURL.getMode().toString());
+ parameters.put("mode", portletURL.getMode().toString());
}
+
+ //
if (portletURL.getWindowState() != null)
{
- metaParameters.setValue("windowstate",
portletURL.getWindowState().toString());
+ parameters.put("windowstate",
portletURL.getWindowState().toString());
}
//
- ParameterMap actualParameters;
if (portletURL instanceof RenderURL)
{
- actualParameters =
((ParametersStateString)((RenderURL)portletURL).getNavigationalState()).getParameters();
+ StateString navigationalState = ((RenderURL)portletURL).getNavigationalState();
+
+ //
+ parameters.put("navigationalstate",
navigationalState.getStringValue());
}
else
{
- actualParameters =
((ParametersStateString)((ActionURL)portletURL).getInteractionState()).getParameters();
+ StateString navigationalState = ((ActionURL)portletURL).getNavigationalState();
+ StateString interactionState = ((ActionURL)portletURL).getInteractionState();
+
+ //
+ if (navigationalState != null)
+ {
+ parameters.put("navigationalstate",
navigationalState.getStringValue());
+ }
+
+ //
+ parameters.put("interactionstate",
interactionState.getStringValue());
}
//
- ParameterEncoder encoder = builder.createEncoder();
- encoder.encode(actualParameters, metaParameters);
boolean first = true;
- for (Iterator i = encoder.getParameters().entrySet().iterator(); i.hasNext();)
+ for (Map.Entry<String,String> entry : parameters.entrySet())
{
- Map.Entry parameter = (Map.Entry)i.next();
- String name = (String)parameter.getKey();
- String[] values = (String[])parameter.getValue();
- for (int j = 0; j < values.length; j++)
- {
- String value = values[j];
- buffer.append(first ? '?' : '&');
- buffer.append(name, FastURLEncoder.getUTF8Instance());
- buffer.append('=');
- buffer.append(value, FastURLEncoder.getUTF8Instance());
- first = false;
- }
+ String name = entry.getKey();
+ String value = entry.getValue();
+ buffer.append(first ? '?' : '&');
+ buffer.append(name, FastURLEncoder.getUTF8Instance());
+ buffer.append('=');
+ buffer.append(value, FastURLEncoder.getUTF8Instance());
+ first = false;
}
//
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/StringCodec.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/StringCodec.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/StringCodec.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -58,9 +58,8 @@
{
tmp[0] = c;
byte[] bytes = new String(tmp).getBytes("UTF8");
- for (int j = 0; j < bytes.length; j++)
+ for (byte b : bytes)
{
- byte b = bytes[j];
buffer.append('_').append(blah[(b & 0XF0) >>
4]).append(blah[b & 0x0F]);
}
}
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/WindowNavigationalState.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/WindowNavigationalState.java 2008-01-20
22:13:06 UTC (rev 9541)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/WindowNavigationalState.java 2008-01-20
22:26:12 UTC (rev 9542)
@@ -22,9 +22,9 @@
******************************************************************************/
package org.jboss.portal.portlet.test;
-import org.jboss.portal.portlet.StateString;
import org.jboss.portal.Mode;
import org.jboss.portal.WindowState;
+import org.jboss.portal.portlet.StateString;
import java.io.Serializable;
Modified: modules/portlet/trunk/test/src/test/resources/test/remote-jboss-unit.xml
===================================================================
--- modules/portlet/trunk/test/src/test/resources/test/remote-jboss-unit.xml 2008-01-20
22:13:06 UTC (rev 9541)
+++ modules/portlet/trunk/test/src/test/resources/test/remote-jboss-unit.xml 2008-01-20
22:26:12 UTC (rev 9542)
@@ -133,6 +133,7 @@
<class
name="org.jboss.unit.remote.driver.RemoteTestDriverClient"/>
<property name="archiveId"
value="test-jsr168-ext-session.war"/>
</generic>
+<!--
<generic>
<class
name="org.jboss.unit.remote.driver.RemoteTestDriverClient"/>
<property name="archiveId"
value="test-jsr168-ext-expiringcache.war"/>
@@ -145,6 +146,7 @@
<class
name="org.jboss.unit.remote.driver.RemoteTestDriverClient"/>
<property name="archiveId"
value="test-jsr168-ext-nocache.war"/>
</generic>
+-->
<!--Spec TCK Assertions tests-->
<generic>