[jdom-interest] question regarding HashMaps in Namespace class

Jerry Lawson jerry.lawson at virtualsummit.com
Thu Nov 9 12:09:42 PST 2000

The current implementation of Namespace.java uses two HashMaps:
mappings and namespaces.
The Namespace.getNamespace() method checks namespaces twice
but uses 2 different strings for the namespaces.get() method:

if (namespaces.containsKey(uri)) {
    return (Namespace)namespaces.get(uri);
if (namespaces.containsKey(uri)) {
    return (Namespace)namespaces.get(prefix + "&" + uri);

What is the point of this second check? It should never get there
if the uri key exists in namespaces.

Also, there doesn't seem to be any point in the mappings
HashMap.  URIs go in, but nothing comes out (kinda like a Roach Motel).

Most importantly, the string used in the namespaces.contains() call
should be 'prefix + "&" + uri', rather than simply 'uri', I think.
Adding some println, I can see that calling Namespace.getNamespace()
with the same prefix and uri always creates a new Namespace.
This seems to defeat the whole purpose of the namespaces table.

Have I discovered a bug or am I all wet ?

Jerry Lawson                   Virtual Summit, Inc.
Virtual Programmer   jerry.lawson at virtualsummit.com

More information about the jdom-interest mailing list