# HG changeset patch # User Nobuyasu Oshiro # Date 1389397255 -32400 # Node ID 292538b1de328795ecdb4d6664408292e7be33f9 # Parent 31be4d5978593394d241f4f627b64ecdab9394fa Fixed BulletinBoardJungleManager bug diff -r 31be4d597859 -r 292538b1de32 src/main/java/app/bbs/BullentInBoardJungleManager.java --- a/src/main/java/app/bbs/BullentInBoardJungleManager.java Sat Jan 11 08:10:41 2014 +0900 +++ b/src/main/java/app/bbs/BullentInBoardJungleManager.java Sat Jan 11 08:40:55 2014 +0900 @@ -46,19 +46,23 @@ throw new IllegalStateException(); } } - JungleTree tree = jungle.getTreeByName(treeName); - JungleTreeEditor editor = tree.getLocalTreeEditor(); + Either either = null; + do { + JungleTree tree = jungle.getTreeByName(treeName); + JungleTreeEditor editor = tree.getLocalTreeEditor(); - int pos = calculatePosition(tree.getRootNode(), netLog.getTimeStamp()); - Either either = JungleUpdater.edit(editor, netLog, pos); - if(either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - either = editor.success(); - if(either.isA()) { - throw new IllegalStateException(); - } + /* + * Merge. + */ + int pos = calculatePosition(tree.getRootNode(), netLog.getTimeStamp()); + either = JungleUpdater.edit(editor, netLog, pos); + if(either.isA()) { + throw new IllegalStateException(); + } + + editor = either.b(); + either = editor.success(); + }while(either.isA()); return either; }