This is a "new" bug, and by "new" I don't just mean "newly discovered". This bug was introduced into the jGnash 1.x code base since the last release, which was 1.12.0.
Specifically, it was introduced in the commit that created revision 2119, which was done on 2010-04-09, and which was part of the fix for bug 2977267 (2,977,267).
The title of the latter bug is "When loading data, check for recursive accounts".
In revision 2119, some code was added to method
loadSnapShot (final Engine engine)
What the new code in "loadSnapShot" does is to throw an IllegalArgumentException in certain conditions: it does so if the field "objectList" of the Data object does not "begin with" the root account. The "list of objects" held in that field is derived from the XML node named "objects", a child of the node "dataRoot", in the input data file. So in effect, an error is being thrown if the first node within the "objects" node is not a representation of the "root account" of one's jGnash data.
When that error is thrown, the program stops trying to load that file, so the file becomes effectively unreadable to the current version of the program; that is, as things currently stand, jGnash 1.13 would not be able to load any file in which the root account was not the first item in the XML "objects" list.
Today, I found out that this is true of some perfectly valid jGnash data files which were created by older versions of jGnash. An old data file of mine was loaded by jGnash 1.12.0 just fine, but can't be loaded by the 1.13 code as it currently exists in the repository. It stops trying to load the file after throwing the above-mentioned IllegalArgumentException, with this message:
SEVERE: java.lang.IllegalArgumentException: Object list passed to
does not begin with root account
This error check was added to method "loadSnapShot" as a side effect of trying to do something graceful with certain *invalid* data files, namely, ones where there is a circularity in the list of accounts (some account is listed in the data file as being, in effect, and directly or indirectly, its own ancestor). So, in order to do improved error recovery during input of some invalid data files, we are now failing to load some [older] valid data files. This is less than ideal.
Log in to post a comment.