[jdom-interest] Namespace.hashcode patch

philip.nelson at omniresources.com philip.nelson at omniresources.com
Wed May 30 18:43:16 PDT 2001

> philip.nelson at omniresources.com wrote:
> > 
> > I see Jason just updated this.  So what we have now is
> > Namespace ns1 = Namespace.getNamespace("yyy", "http://ffff");
> > Namespace ns2 = Namespace.getNamespace("xxx", "http://ffff");
> > 
> > but
> > ns1 == ns2
> > 
> > I thought what we settled on was that semantic equality, 
> "are these the same
> > namespace?" in the xml sense was covered by .equals() only. 
>  "Are these the
> > same object?" is covered by == and what a java programmer 
> would expect.
> > There is some precedence for this of course.
> I'm confused about what you're saying, Phil.  Maybe this will clarify.

You mean because I didn't mention hashcode at all? =8^)

> ns1 != ns2, because they're not the same object
> ns1.equals(ns2), because they can be seen as equivalent
> ns1.hashCode().equals(ns2.hashCode()), follows on from above

I assume, and I will be satisfied to be wrong here, that hashcode and ==
have to mean the same thing, an object instance.  .equals() can have a
different meaning though one would avoid it given a reasonable option.

> Of course, now that I'm really thinking about it, if 
> ns.equals() is not
> based on == and based just on a uri comparison, that will cause issues
> if the getAdditionalNamespaces() method returns a live List.  For
> example, you might try (in pseudocode)
> remove(Namespace("foo","http://foo")) and really perform a
> remove(Namespace("bar","http://foo")).  Since it's legal and not
> uncommon to have two namespace prefixes on an elt with the same URI,
> this could conceivably come up.
> So do we make getAdditionalNamespaces() return a non-live 
> list (breaking
> our pattern elsewhere), or do we make Namespace.equals() behave as ==?
> -jh-

More information about the jdom-interest mailing list