[gatein-commits] gatein SVN: r5181 - components/wsrp/trunk/common/src/main/java/org/gatein/wsrp.
do-not-reply at jboss.org
do-not-reply at jboss.org
Fri Nov 19 09:10:01 EST 2010
Author: chris.laprun at 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)
More information about the gatein-commits
mailing list