[jboss-svn-commits] JBoss Portal SVN: r5596 - trunk/core/src/main/org/jboss/portal/core/controller/command

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Nov 7 15:41:03 EST 2006


Author: roy.russo at jboss.com
Date: 2006-11-07 15:41:02 -0500 (Tue, 07 Nov 2006)
New Revision: 5596

Modified:
   trunk/core/src/main/org/jboss/portal/core/controller/command/RenderPageCommand.java
Log:
JBPORTAL-1054 - fixed urls with unescaped amps

Modified: trunk/core/src/main/org/jboss/portal/core/controller/command/RenderPageCommand.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/controller/command/RenderPageCommand.java	2006-11-07 20:40:39 UTC (rev 5595)
+++ trunk/core/src/main/org/jboss/portal/core/controller/command/RenderPageCommand.java	2006-11-07 20:41:02 UTC (rev 5596)
@@ -76,6 +76,8 @@
 import org.jboss.portal.theme.render.MarkupResult;
 
 import javax.servlet.http.HttpServletRequest;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -94,37 +96,59 @@
 public final class RenderPageCommand extends PageCommand
 {
 
-   /** . */
+   /**
+    * .
+    */
    private static String WINDOW_ACCESS_DENIED = "core.render.window_access_denied";
 
-   /** . */
+   /**
+    * .
+    */
    private static String WINDOW_UNAVAILABLE = "core.render.window_unavailable";
 
-   /** . */
+   /**
+    * .
+    */
    private static String WINDOW_ERROR = "core.render.window_error";
 
-   /** . */
+   /**
+    * .
+    */
    private static String WINDOW_INTERNAL_ERROR = "core.render.window_internal_error";
 
-   /** . */
+   /**
+    * .
+    */
    private static String WINDOW_NOT_FOUND = "core.render.window_not_found";
 
-   /** . */
+   /**
+    * .
+    */
    private static String HIDE = "hide";
 
-   /** . */
+   /**
+    * .
+    */
    private static String SHOW = "show";
 
-   /** . */
+   /**
+    * .
+    */
    private static final CommandInfo info = new ViewCommandInfo(false, "view");
 
-   /** The windows to render. */
+   /**
+    * The windows to render.
+    */
    private Collection windows;
 
-   /** . */
+   /**
+    * .
+    */
    private PortalLayout layout;
 
-   /** . */
+   /**
+    * .
+    */
    private boolean personalizable;
 
    public RenderPageCommand(String pageId)
@@ -609,7 +633,7 @@
       for (Iterator j = supportedWindowStates.iterator(); j.hasNext();)
       {
          WindowState windowState = (WindowState)j.next();
-         String url = createUpdateNavigationalStateURL(window, null, windowState);
+         String url = cleanQueryString(createUpdateNavigationalStateURL(window, null, windowState));
          boolean disabled = windowState.equals(currentWindowState);
          WindowResult.Action action = new WindowResult.Action(windowState, url, !disabled);
          windowStates.add(action);
@@ -627,7 +651,7 @@
       for (Iterator j = supportedModes.iterator(); j.hasNext();)
       {
          Mode mode = (Mode)j.next();
-         String url = createUpdateNavigationalStateURL(window, mode, null);
+         String url = cleanQueryString(createUpdateNavigationalStateURL(window, mode, null));
          boolean disabled = mode.equals(currentMode);
          WindowResult.Action action = new WindowResult.Action(mode, url, !disabled);
          modes.add(action);
@@ -645,4 +669,36 @@
       URLContext urlContext = URLContext.newInstance(secure, authenticated);
       return controllerContext.encodeURL(cmd, urlContext, URLFormat.newInstance(true, true));
    }
+
+   /**
+    * Fixes href urls by replacing with html character entities.
+    *
+    * @param url
+    * @return
+    */
+   public static String cleanQueryString(String url)
+   {
+      final StringBuffer cleansed = new StringBuffer();
+
+      final StringCharacterIterator iterator = new StringCharacterIterator(url);
+      char currentChar = iterator.current();
+      while (currentChar != CharacterIterator.DONE)
+      {
+         if (currentChar == '\"')
+         {
+            cleansed.append(""");
+         }
+         else if (currentChar == '&')
+         {
+            cleansed.append("&");
+         }
+         else
+         {
+            cleansed.append(currentChar);
+         }
+         currentChar = iterator.next();
+      }
+      return cleansed.toString();
+   }
+
 }




More information about the jboss-svn-commits mailing list