public IdAllocator clone() {
// Copying the generatorMap is tricky; multiple keys will point to the same NameGenerator
// instance. We need to clone the NameGenerators, then build a new map around the clones.
IdentityHashMap< NameGenerator, NameGenerator > transformMap = new IdentityHashMap< NameGenerator, NameGenerator >();
for (NameGenerator original : generatorMap.values())
{
NameGenerator copy = original.clone();
transformMap.put(original, copy);
}
Map< String, NameGenerator > mapCopy = CollectionFactory.newMap();
for (String key : generatorMap.keySet())
{
NameGenerator original = generatorMap.get(key);
NameGenerator copy = transformMap.get(original);
mapCopy.put(key, copy);
}
return new IdAllocator(namespace, mapCopy);
}
Creates a clone of this IdAllocator instance, copying the allocator's namespace and key map. |