Mercurial > hg > Members > tatsuki > bench > jungle-core
annotate src/test/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/index/IndexCommitTest.java @ 144:0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
author | one |
---|---|
date | Sun, 16 Nov 2014 06:40:48 +0900 |
parents | afbe19c98f53 |
children | a2c374a2686b |
rev | line source |
---|---|
134 | 1 package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.index; |
2 | |
3 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; | |
4 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; | |
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; | |
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; | |
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; | |
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; | |
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; | |
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; | |
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; | |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; | |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; | |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; | |
15 import junit.framework.Assert; | |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | |
17 | |
18 import java.nio.ByteBuffer; | |
19 | |
20 import org.junit.Test; | |
21 | |
22 import fj.data.List; | |
23 import fj.data.Option; | |
24 import fj.data.TreeMap; | |
25 | |
26 public class IndexCommitTest { | |
27 | |
144
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
28 @Test |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
29 public void IndexCommitTest() throws InterruptedException { |
134 | 30 |
144
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
31 Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTreeEditor(new DefaultTraverser())); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
32 jungle.createNewTree("tree"); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
33 JungleTree tree = jungle.getTreeByName("tree"); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
34 createTree(tree); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
35 tree.getRootNode(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
36 InterfaceTraverser ifTraverser = tree.getTraverser(); |
134 | 37 |
144
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
38 ifTraverser.find((TreeNode node) -> { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
39 List<ByteBuffer> attributeList = node.getAttributes().get(key); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
40 if (attributeList.isNotEmpty()) { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
41 for (ByteBuffer attribute : attributeList) { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
42 byte[] byteAttribute = attribute.array(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
43 String str = new String(byteAttribute); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
44 System.out.println("attribute = " + str); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
45 if (str.equals("<-1,0,1>")) |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
46 return true; |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
47 continue; |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
48 } |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
49 } |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
50 return false; |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
51 }, key, "<-1,0,1>"); |
134 | 52 |
144
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
53 // check index |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
54 TreeMap<String, TreeMap<String, List<NodePath>>> index = ifTraverser.getIndex(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
55 Option<TreeMap<String, List<NodePath>>> opIndex = index.get(key); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
56 |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
57 Assert.assertTrue(!opIndex.isNone()); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
58 |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
59 TreeMap<String, List<NodePath>> innerIndex = opIndex.some(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
60 Assert.assertTrue(!innerIndex.get("<-1,0,0>").isNone()); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
61 |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
62 JungleTreeEditor editor = tree.getTreeEditor(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
63 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(new DefaultNodePath(), 0); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
64 editor = either.b(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
65 editor.success(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
66 |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
67 ifTraverser.commitIndex(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
68 JungleTree newTree = jungle.getTreeByName("tree"); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
69 InterfaceTraverser newIfTraverser = newTree.getTraverser(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
70 TreeMap<String, TreeMap<String, List<NodePath>>> newIndex = newIfTraverser.getIndex(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
71 Assert.assertTrue(newIndex.isEmpty()); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
72 |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
73 InterfaceTraverser ifTraverser1 = tree.getTraverser(); |
134 | 74 |
144
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
75 ifTraverser1.find((TreeNode node) -> { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
76 List<ByteBuffer> attributeList = node.getAttributes().get(key); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
77 if (attributeList.isNotEmpty()) { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
78 for (ByteBuffer attribute : attributeList) { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
79 byte[] byteAttribute = attribute.array(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
80 String str = new String(byteAttribute); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
81 System.out.println("attribute = " + str); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
82 if (str.equals("<-1,0,1>")) |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
83 return true; |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
84 continue; |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
85 } |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
86 } |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
87 return false; |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
88 }, key, "<-1,0,1>"); |
134 | 89 |
144
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
90 ifTraverser1.commitIndex(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
91 JungleTree newTree2 = jungle.getTreeByName("tree"); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
92 InterfaceTraverser newIfTraverser2 = newTree2.getTraverser(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
93 TreeMap<String, TreeMap<String, List<NodePath>>> newIndex1 = newIfTraverser2.getIndex(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
94 Assert.assertFalse(newIndex1.isEmpty()); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
95 |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
96 } |
134 | 97 |
144
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
98 public boolean compare(TreeNode compareNode, String compareAttribute) { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
99 String labName = compareNode.getAttributes().getString(key).next(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
100 if (labName.equals(compareAttribute)) |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
101 return true; |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
102 return false; |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
103 } |
134 | 104 |
144
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
105 public static String key = "KEY"; |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
106 public static DefaultTreeNode factory = new DefaultTreeNode(); |
134 | 107 |
144
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
108 public void createTree(JungleTree tree) { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
109 NodePath root = new DefaultNodePath(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
110 createChildren(tree, root, 0); |
134 | 111 |
144
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
112 for (int x = 0; x < 2; x++) { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
113 createChildren(tree, root.add(0), x); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
114 for (int y = 0; y < 2; y++) { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
115 createChildren(tree, root.add(0).add(x), y); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
116 } |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
117 } |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
118 |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
119 } |
134 | 120 |
144
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
121 public void createChildren(JungleTree tree, NodePath root, int num) { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
122 JungleTreeEditor editor = tree.getTreeEditor();// Treeのeditorを作成 |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
123 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(root, num); // 新しく入れるところへのパス |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
124 if (either.isA()) { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
125 Assert.fail(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
126 } |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
127 editor = either.b(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
128 either = editor.success(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
129 if (either.isA()) { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
130 Assert.fail(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
131 } |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
132 NodePath childPath = root.add(num); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
133 editor = tree.getTreeEditor(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
134 NodePath attribute = root.add(num); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
135 System.out.println(attribute.toString()); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
136 either = editor.putAttribute(childPath, key, ByteBuffer.wrap(attribute.toString().getBytes())); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
137 if (either.isA()) { |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
138 Assert.fail(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
139 } |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
140 editor = either.b(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
141 either = editor.success(); |
0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents:
143
diff
changeset
|
142 } |
134 | 143 } |