You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2008/01/25 21:51:46 UTC
svn commit: r615337 - in /tapestry/tapestry4/trunk/tapestry-framework/src:
java/org/apache/tapestry/engine/RequestCycle.java
java/org/apache/tapestry/util/IdAllocator.java
test/org/apache/tapestry/util/TestIdAllocator.java
Author: jkuhnert
Date: Fri Jan 25 12:51:46 2008
New Revision: 615337
URL: http://svn.apache.org/viewvc?rev=615337&view=rev
Log:
Fixes TAPESTRY-2073. IdAllocator.addSeed was incorrectly overwriting previous key mappings.
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/RequestCycle.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/IdAllocator.java
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/util/TestIdAllocator.java
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/RequestCycle.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/RequestCycle.java?rev=615337&r1=615336&r2=615337&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/RequestCycle.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/RequestCycle.java Fri Jan 25 12:51:46 2008
@@ -681,6 +681,5 @@
public void initializeIdState(String encodedSeed)
{
_idAllocator = IdAllocator.fromExternalString( CompressedDataEncoder.decodeString(encodedSeed));
- preallocateReservedIds();
}
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/IdAllocator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/IdAllocator.java?rev=615337&r1=615336&r2=615337&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/IdAllocator.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/IdAllocator.java Fri Jan 25 12:51:46 2008
@@ -108,6 +108,16 @@
result = 31 * result + _index;
return result;
}
+
+ public String toString()
+ {
+ return "NameGenerator[" +
+ "_baseId='" + _baseId + '\'' +
+ '\n' +
+ ", _index=" + _index +
+ '\n' +
+ ']';
+ }
}
public IdAllocator()
@@ -189,8 +199,8 @@
// in a peek we don't want to actually increment any id state so we must
// clone
- if (_generatorMap.containsKey(result.toLowerCase())) {
-
+ if (_generatorMap.containsKey(result.toLowerCase()))
+ {
try {
NameGenerator cg = (NameGenerator)g.clone();
@@ -242,11 +252,18 @@
NameGenerator g = new NameGenerator(baseId, 0);
_uniqueGenerators.add(g);
_generatorMap.put(baseId.toLowerCase(), g);
-
+
// add generated key to map until we reach top level index value
while(g._index != index)
{
- _generatorMap.put(g.nextId().toLowerCase(), g);
+ String nextId = g.nextId().toLowerCase();
+
+ // only dump value in if not already covered by another allocator
+
+ if (!_generatorMap.containsKey(nextId))
+ {
+ _generatorMap.put(nextId, g);
+ }
}
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/util/TestIdAllocator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/util/TestIdAllocator.java?rev=615337&r1=615336&r2=615337&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/util/TestIdAllocator.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/util/TestIdAllocator.java Fri Jan 25 12:51:46 2008
@@ -162,4 +162,12 @@
assertEquals(0, ida._generatorMap.size());
assertEquals(0, ida._uniqueGenerators.size());
}
+
+ public void test_To_External_String_Underscores()
+ {
+ IdAllocator ida = IdAllocator.fromExternalString(",service$0,page$0,component$0,container$0,session$0,sp$0,NestedIfBorder$0,Shell$0," +
+ "Body$0,TopComponent$0,testId$0,If_0$0,BorderComponent$0,If$2,NestedComponent$0,RenderBody$0,Form$0");
+
+ assertEquals("If_0_0", ida.allocateId("If_0"));
+ }
}