[jboss-svn-commits] JBoss Portal SVN: r5595 - branches/JBoss_Portal_Branch_2_4/core/src/main/org/jboss/portal/core/command

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


Author: roy.russo at jboss.com
Date: 2006-11-07 15:40:39 -0500 (Tue, 07 Nov 2006)
New Revision: 5595

Modified:
   branches/JBoss_Portal_Branch_2_4/core/src/main/org/jboss/portal/core/command/MarkupCommand.java
Log:
JBPORTAL-1054 - fixed urls with unescaped amps

Modified: branches/JBoss_Portal_Branch_2_4/core/src/main/org/jboss/portal/core/command/MarkupCommand.java
===================================================================
--- branches/JBoss_Portal_Branch_2_4/core/src/main/org/jboss/portal/core/command/MarkupCommand.java	2006-11-07 19:36:16 UTC (rev 5594)
+++ branches/JBoss_Portal_Branch_2_4/core/src/main/org/jboss/portal/core/command/MarkupCommand.java	2006-11-07 20:40:39 UTC (rev 5595)
@@ -67,6 +67,8 @@
 import org.jboss.portal.theme.render.ModifiableMarkupResult;
 
 import javax.servlet.http.HttpServletRequest;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -86,43 +88,69 @@
 public abstract class MarkupCommand extends PortalObjectCommand
 {
 
-   /** . */
+   /**
+    * .
+    */
    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 CommandInfo(false, "view", true);
 
-   /** . */
+   /**
+    * .
+    */
    private final String pageRef;
 
-   /** . */
+   /**
+    * .
+    */
    private final MarkupContainer markupContainer;
 
-   /** . */
+   /**
+    * .
+    */
    private Page page;
 
-   /** . */
+   /**
+    * .
+    */
    private PortalLayout layout;
 
-   /** . */
+   /**
+    * .
+    */
    private boolean personalizable;
 
    /**
@@ -656,7 +684,7 @@
       for (Iterator j = supportedWindowStates.iterator(); j.hasNext();)
       {
          WindowState windowState = (WindowState)j.next();
-         String url = invCtx.createUpdateNavigationalStateURL(null, windowState);
+         String url = cleanQueryString(invCtx.createUpdateNavigationalStateURL(null, windowState));
          boolean disabled = windowState.equals(currentWindowState);
          WindowResult.Action action = new WindowResult.Action(windowState, url, !disabled);
          windowStates.add(action);
@@ -678,7 +706,7 @@
       for (Iterator j = supportedModes.iterator(); j.hasNext();)
       {
          Mode mode = (Mode)j.next();
-         String url = invCtx.createUpdateNavigationalStateURL(mode, null);
+         String url = cleanQueryString(invCtx.createUpdateNavigationalStateURL(mode, null));
          boolean disabled = mode.equals(currentMode);
          WindowResult.Action action = new WindowResult.Action(mode, url, !disabled);
          modes.add(action);
@@ -686,6 +714,37 @@
       actionMap.put(WindowResult.MODES_KEY, modes);
    }
 
+   /**
+    * 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();
+   }
+
 /*
    private static void createMoveActions(Map actionMap, WindowNavigationalState state, RenderInvocation render, String handle)
    {




More information about the jboss-svn-commits mailing list