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>.<behaviorIndex>-<componentPath> or
* <render-count>.<listenerInterface>.<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);