Unintuitive, possibly broken behaviour.
---------------------------------------
Key: DIGESTER-143
URL: https://issues.apache.org/jira/browse/DIGESTER-143
Project: Commons Digester
Issue Type: Improvement
Affects Versions: 2.1
Environment: Linux 64 bits
Reporter: i30817
Priority: Minor
When one tag is a substring of another tag and both are used as xml patterns,
such as:
"rdf:RDF/pgterms:etext/dc:creator"
"rdf:RDF/pgterms:etext/dc:creator/rdf:Bag/rdf:li" (instances in a collection of
creators)
the callback to the first is called once with empty strings ((") as the body of
the tag.
If additionally the first tag has a argument
"rdf:RDF/pgterms:etext/dc:creator rdf:type="Literal"" and you bind things
correctly for a two arguments callback with the text body and the argument
value ("Literal"), the callback of the first will be called with a null
rdf:type argument and a empty string as the body.
The best thing would be if these empty strings callback were avoidable. I can
just test for empty string in the callback, however, i'm trying also to create
assertions on the xml content (including, no empty strings). I can
differentiate the first callback with the tag argument and it test against null
to filter that case, but that leads to messy code.
If the bogus callback must exist, one of the ways to make it obvious and
distinguishable, would be to use null as the default value, instead of "". No
xml document will have the computation null value, unless some very strange
java binding is happening, in which case, you're asking for trouble. "" is even
worse, because it is common to both domains.
So RFE:
1) Avoid the bogus callback of the smaller xml tree branch if you can.
2) if you can't, use null as a argument instead of the indistinguishable "".
3) if 2) document this behavior in the javadoc and the digester FAQ.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.