For completeness here's a tester. (it passes on the above code)
public static void main(String[] args) {
System.out.println("Run this with vm arg: -ea");
System.out.println("Running test...");
FixedHashMap<String,Object> recMap1 = new FixedHashMap<String,
Object>();
recMap1.put("me", recMap1);
FixedHashMap<String,Object> recMap2 = new FixedHashMap<String,
Object>();
recMap2.put("me", recMap2);
HashMap<Object,Object> containerMap = new HashMap<Object,
Object>();
containerMap.put(recMap1, null); // <---- causes a stack overflow
if recMap1 is a regular HashMap with recursion
containerMap.put(recMap2, null);
System.out.println("assertions...");
assert recMap1.equals(recMap1);
assert false == containerMap.equals(recMap1);
assert false == recMap1.equals(containerMap);
assert containerMap.equals(containerMap);
assert recMap1.equals(recMap2);
assert containerMap.size() == 1;
System.out.println(containerMap.toString());
System.out.println("Done");
}
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors