[jdom-interest] attributes

Jason Hunter jhunter at servlets.com
Wed Jan 30 14:18:53 PST 2002

allvard Tratteberg wrote:
> Jason,
> > elt.getAttribute("foo").setValue("bar") will not drop the existing
> attribute reference.
> >
> > elt.setAttribute(new Attribute("foo", "bar")) of course will do a
> replacement.
> >
> > elt.setAttribute("foo", "bar") is a convenience method for the above
> > syntax, which is why it does a replacement.  One could argue it
> > shouldn't, and one can argue it should.
> I would've thought the latter was equivalent to
> Attribute attr = elt.getAttribute("foo");
> if (attr != null)
>    attr.setValue("bar);
> else
>    elt.setAttribute(new Attribute("foo", "bar"));
> What is the motivation for the "always replace" logic? I don't get it. If
> the reasons are good, perhaps we need an ensureAttribute method?

Reason one:

Why should setAttribute(Attribute) be different than
setAttribute(String, String)?  I personally would think
Element.setAttribute(String, String) would be a wrapper around

Reason two:

Maybe someone else has a reference to the original Attribute and
changing that object's state indirectly (by a call to its parent) is not
desirable if it can be avoided.

I don't think we need another method.  You can always just write the
code you gave if you really care about this.


More information about the jdom-interest mailing list