[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