[jdom-interest] getMandatory*
Andre Van Delft
avandelft at epo.org
Tue Jul 18 02:43:06 PDT 2000
Jason Hunter wrote:
> Being that we had an overwhelming set of +1 votes for "null" including
> the binding votes of Brett and myself (so glad we agree), I've now made
> the change in the tree. I changed getChild(), getAttribute(),
> getRootElement(), and getProcessingInstruction() to return null if no
> such item was found. I also removed NoSuch* classes from the tree. I'm
> -1 on adding hasChild() because a null check is sufficient. No reason
> to bloat the API.
Reluctantly I start the discussion again.
I find the change a significant improvement, because of the better performance.
However, I now have changed my code and I ended up with wrapper functions,
again. This time, I made a wrapper for getChild, named getMandatoryChild,
that throws a kind of NoSuchChildException if no child is found.
I want the getMandatoryChild functions etc. available in the JDom API;
otherwise aplication developers will create these theirselves time and again.
The reason is in the way I want to structure my code:
try
{
...
optionalChild = elt.getChild("OPTIONAL");
if (optionalChild != null)
{
...do something with it
}
...
mandatoryChild = elt.getMandatoryChild("MANDATORY");
...do something with it...
...
}
catch (NoSuchItemException e)
{
handle(e);
}
Here NoSuchItemException is an abstract superclass for
NoSuchChildException, NoSuchAttributeException and
NoSuchProcessingInstructionException (in case a
ProcessingInstruction could be mandatory, which I don't know).
The single exception handing section at the end keeps the code clear
and concise.
I manage to have this layout using a wrapper function
getMandatoryChild in my class. Also I have defined 3
NoSuch*Exception classes myself.
It would not be a good idea to add an extra test after
the assignment to mandatoryChild, as in:
mandatoryChild = elt.getMandatoryChild("MANDATORY");
if (mandatoryChild != null)
{
throw new NoSuchChildException("MANDATORY");
}
or with some error handling code and a return.
These solutions would clutter the function too much.
So I propose getMandatory* functions. Luckily there is
no hurry, since backward compatibility is OK this time.
More information about the jdom-interest
mailing list