Author: chris.laprun(a)jboss.com
Date: 2010-11-19 09:10:00 -0500 (Fri, 19 Nov 2010)
New Revision: 5181
Modified:
components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/ResourceServingUtil.java
Log:
- GTNWSRP-167: Encode portlet context and instance key, since they can have a space in
them, causing an issue when building the URL.
Modified:
components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/ResourceServingUtil.java
===================================================================
---
components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/ResourceServingUtil.java 2010-11-19
13:44:36 UTC (rev 5180)
+++
components/wsrp/trunk/common/src/main/java/org/gatein/wsrp/ResourceServingUtil.java 2010-11-19
14:10:00 UTC (rev 5181)
@@ -77,7 +77,7 @@
registrationContext =
WSRPTypeFactory.createRegistrationContext(registrationHandle);
}
- String instanceKey = req.getParameter(INSTANCE_KEY);
+ String instanceKey = URLTools.decodeXWWWFormURL(req.getParameter(INSTANCE_KEY));
String ns = req.getParameter(NS);
RuntimeContext runtimeContext =
WSRPTypeFactory.createRuntimeContext(WSRPConstants.NONE_USER_AUTHENTICATION, instanceKey,
ns);
@@ -106,9 +106,14 @@
try
{
StringBuilder sb = new StringBuilder(createAbsoluteURLFrom(resourceId,
serverAddress, portletContext));
- appendParameter(sb, MODE, mode.toString());
- appendParameter(sb, WINDOW_STATE, windowState.toString());
- appendParameter(sb, INSTANCE_KEY,
context.getValueFor(WSRPPortletURL.URLContext.INSTANCE_KEY));
+ appendParameter(sb, MODE, mode);
+ appendParameter(sb, WINDOW_STATE, windowState);
+
+ // instance key can contain a space if it's based on the portlet context so
we need to also encode it
+ String instanceKey =
(String)context.getValueFor(WSRPPortletURL.URLContext.INSTANCE_KEY);
+ instanceKey = URLTools.encodeXWWWFormURL(instanceKey);
+ appendParameter(sb, INSTANCE_KEY, instanceKey);
+
appendParameter(sb, NS,
context.getValueFor(WSRPPortletURL.URLContext.NAMESPACE));
appendParameter(sb, REG_HANDLE,
context.getValueFor(WSRPPortletURL.URLContext.REGISTRATION_HANDLE));
if (resourceState != null)
@@ -154,21 +159,13 @@
private static String encode(org.gatein.pc.api.PortletContext portletContext)
{
String id = portletContext.getId();
- if (id.startsWith(URLTools.SLASH))
- {
- id = id.replace(URLTools.SLASH, SLASH_REPLACEMENT);
- }
- return id;
+
+ return URLTools.encodeXWWWFormURL(id);
}
private static PortletContext decode(String encodedPortletContext)
{
- if (encodedPortletContext.startsWith(SLASH_REPLACEMENT))
- {
- encodedPortletContext = encodedPortletContext.replace(SLASH_REPLACEMENT,
URLTools.SLASH);
- }
-
- return WSRPTypeFactory.createPortletContext(encodedPortletContext);
+ return
WSRPTypeFactory.createPortletContext(URLTools.decodeXWWWFormURL(encodedPortletContext));
}
private static void appendParameter(StringBuilder builder, String name, Object value)
Show replies by date