Details
-
Type:
Bug
-
Status: Open (View Workflow)
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: o.c.jsword.book
-
Labels:None
Description
When attempting to retrieve the content of a single GenBook key (TreeKey) all child content of the key is also returned. It did not do this a couple of years ago but I don't know how long this problem has existed.
E.g. In Josephus the following hierarchy exists:
78:The Antiquities of the Jews
79:Preface
80:Section 1
81:Section 2
82:Section 3
83:Section 4
but attempting to retrieve Preface also retrieves Section 1-4.
Debugging into the junit below the iterator called as part of bookData.getOsisFragment() iterates all child keys. Ideally it should not iterate child keys but I am not sure of the best way to fix this.
Here is a junit demonstrating the problem:
@Test
public void testHierarchicalBook() throws Exception {
Book josephus = Books.installed().getBook("Josephus");
String Section1Text = "THOSE who undertake to write histories";
if (josephus != null) {
// navigate down to the Preface
Key theAntiquitiesOfTheJewsKey = josephus.getGlobalKeyList().get(1);
Key prefaceKey = theAntiquitiesOfTheJewsKey.get(0);
String prefaceText = josephus.getRawText(prefaceKey);
// this test passes
assertFalse("Child keys returned in raw text", prefaceText.contains(Section1Text));
// Now attempt to parse a key but get the problem is that all child text is returned too
BookData bookData = new BookData(josephus, prefaceKey);
final Element osisFragment = bookData.getOsisFragment();
final XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
String prefaceXml = xmlOutputter.outputString(osisFragment);
System.out.println(prefaceXml);
// this test fails
assertFalse("Child keys returned in xml", prefaceXml.contains(Section1Text));
}
}