You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2011/09/17 08:14:14 UTC

svn commit: r1171913 - in /wicket/trunk: wicket-core/src/main/java/org/apache/wicket/ wicket-core/src/test/java/org/apache/wicket/request/mapper/info/ wicket-request/src/main/java/org/apache/wicket/request/mapper/info/

Author: ivaynberg
Date: Sat Sep 17 06:14:14 2011
New Revision: 1171913

URL: http://svn.apache.org/viewvc?rev=1171913&view=rev
Log:

Issue: WICKET-4061

Modified:
    wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java
    wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java
    wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java

Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java?rev=1171913&r1=1171912&r2=1171913&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java Sat Sep 17 06:14:14 2011
@@ -4213,9 +4213,9 @@ public abstract class Component
 			}
 		}
 
-		if ((id != null) && (id.indexOf(':') != -1))
+		if ((id != null) && (id.indexOf(':') != -1|| id.indexOf('~') != -1))
 		{
-			throw new WicketRuntimeException("The component ID must not contain ':' chars.");
+			throw new WicketRuntimeException("The component ID must not contain ':' or '~' chars.");
 		}
 
 		this.id = id;

Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java?rev=1171913&r1=1171912&r2=1171913&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java Sat Sep 17 06:14:14 2011
@@ -93,10 +93,10 @@ public class ComponentInfoTest extends T
 	 */
 	public void test6()
 	{
-		String s = "listener-compo--nent-path";
+		String s = "listener-compo~~nent-path";
 		ComponentInfo info = ComponentInfo.parse(s);
 		assertEquals("listener", info.getListenerInterface());
-		assertEquals("compo-nent:path", info.getComponentPath());
+		assertEquals("compo--nent:path", info.getComponentPath());
 		assertNull(info.getBehaviorId());
 
 		assertEquals(s, info.toString());
@@ -107,7 +107,7 @@ public class ComponentInfoTest extends T
 	 */
 	public void test7()
 	{
-		String s = "listener-co--mpo----nent-path";
+		String s = "listener-co~mpo~~nent-path";
 		ComponentInfo info = ComponentInfo.parse(s);
 		assertEquals("listener", info.getListenerInterface());
 		assertEquals("co-mpo--nent:path", info.getComponentPath());
@@ -157,4 +157,23 @@ public class ComponentInfoTest extends T
 		assertEquals(s, info.toString());
 	}
 
+	public void test11_encode_decode()
+	{
+		final Integer renderCount = 1;
+		final String listenerInterface = "ILinkListener";
+		final String componentPath = "-nav-container-:-nav:1:link";
+		final Integer behaviorId = null;
+
+		ComponentInfo info = new ComponentInfo(renderCount, listenerInterface, componentPath,
+			behaviorId);
+
+		final String encoded = info.toString();
+		assertEquals("1.ILinkListener-~nav~container~-~nav-1-link", encoded);
+
+		ComponentInfo decoded = ComponentInfo.parse(encoded);
+		assertEquals(renderCount, decoded.getRenderCount());
+		assertEquals(listenerInterface, decoded.getListenerInterface());
+		assertEquals(componentPath, decoded.getComponentPath());
+		assertEquals(behaviorId, decoded.getBehaviorId());
+	}
 }

Modified: wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java?rev=1171913&r1=1171912&r2=1171913&view=diff
==============================================================================
--- wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java (original)
+++ wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java Sat Sep 17 06:14:14 2011
@@ -25,7 +25,7 @@ import org.apache.wicket.util.string.Str
  * <listenerInterface&gt.<behaviorIndex>-<componentPath> or
  * <render-count>.<listenerInterface&gt.<behaviorIndex>-<componentPath>
  * <p>
- * Component path is escaped (':' characters are replaced by '-')
+ * Component path is escaped (':' characters are replaced by '~')
  * 
  * @author Matej Knopp
  */
@@ -34,9 +34,10 @@ public class ComponentInfo
 	private static final char BEHAVIOR_INDEX_SEPARATOR = '.';
 	private static final char SEPARATOR = '-';
 	private static final char COMPONENT_SEPARATOR = ':';
+	private static final char SEPARATOR_ENCODED = '~';
 
 	/**
-	 * Replaces ':' with '-', and '-' with '--'.
+	 * Replaces ':' with '-', and '-' with '~'.
 	 * 
 	 * @param path
 	 *            the path to the component in its page
@@ -57,7 +58,7 @@ public class ComponentInfo
 						result.append(SEPARATOR);
 						break;
 					case SEPARATOR :
-						result.append(SEPARATOR).append(SEPARATOR);
+						result.append(SEPARATOR_ENCODED);
 						break;
 					default :
 						result.append(c);
@@ -72,7 +73,7 @@ public class ComponentInfo
 	}
 
 	/**
-	 * Replaces '--' with '-' and '-' with ':'
+	 * Replaces '~' with '-' and '-' with ':'
 	 * 
 	 * @param path
 	 *            the encoded path of the component in its page
@@ -89,16 +90,11 @@ public class ComponentInfo
 				char c = path.charAt(i);
 				switch (c)
 				{
+					case SEPARATOR_ENCODED :
+						result.append(SEPARATOR);
+						break;
 					case SEPARATOR :
-						if ((i < length - 1) && (path.charAt(i + 1) == SEPARATOR))
-						{
-							i++;
-							result.append(SEPARATOR);
-						}
-						else
-						{
-							result.append(COMPONENT_SEPARATOR);
-						}
+						result.append(COMPONENT_SEPARATOR);
 						break;
 					default :
 						result.append(c);