[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