comparison src/main/java/app/bbs/NetworkJungleBulletinBoard.java @ 168:91f6dd655a01

refactoring
author tatsuki
date Tue, 29 Jul 2014 10:58:11 +0900
parents 564f683b7aef
children 54d68cda84c4
comparison
equal deleted inserted replaced
167:564f683b7aef 168:91f6dd655a01
41 private AtomicInteger requestCounter; 41 private AtomicInteger requestCounter;
42 private long renewTime; 42 private long renewTime;
43 43
44 private NetworkJungleBulletinBoard(String _uuid, NetworkJournal _journal) { 44 private NetworkJungleBulletinBoard(String _uuid, NetworkJournal _journal) {
45 journal = _journal; 45 journal = _journal;
46 jungle = new NetworkDefaultJungle(journal, _uuid, 46 jungle = new NetworkDefaultJungle(journal, _uuid, new DefaultTreeEditor(new DefaultTraverser()));
47 new DefaultTreeEditor(new DefaultTraverser()));
48 BulletinBoardJungleManager.setJungle(jungle); 47 BulletinBoardJungleManager.setJungle(jungle);
49 persistentFlag = false; 48 persistentFlag = false;
50 requestCounter = BulletinBoardJungleManager.getRequestCounter(); 49 requestCounter = BulletinBoardJungleManager.getRequestCounter();
51 LOG_DIR = "./log"; 50 LOG_DIR = "./log";
52 renewTime = 0; 51 renewTime = 0;
56 this(_uuid, new AliceJournal()); 55 this(_uuid, new AliceJournal());
57 jungle.createNewTree("boards"); 56 jungle.createNewTree("boards");
58 } 57 }
59 58
60 public static NetworkBulletinBoard NewPersistentJungle(String _uuid) { 59 public static NetworkBulletinBoard NewPersistentJungle(String _uuid) {
61 NetworkJungleBulletinBoard board = new NetworkJungleBulletinBoard( 60 NetworkJungleBulletinBoard board = new NetworkJungleBulletinBoard( _uuid, new PersistentJournal());
62 _uuid, new PersistentJournal());
63 board.persistentFlag = true; 61 board.persistentFlag = true;
64 return board; 62 return board;
65 } 63 }
66 64
67 public void init() { 65 public void init() {
109 JungleTree tree = jungle.getTreeByName(treeName); 107 JungleTree tree = jungle.getTreeByName(treeName);
110 if (tree == null) { 108 if (tree == null) {
111 tree = jungle.createNewTree(treeName); 109 tree = jungle.createNewTree(treeName);
112 } 110 }
113 JungleTreeEditor editor = tree.getLocalTreeEditor(); 111 JungleTreeEditor editor = tree.getLocalTreeEditor();
114 Either<Error, JungleTreeEditor> either = JungleUpdater.edit(editor, 112 Either<Error, JungleTreeEditor> either = JungleUpdater.edit(editor, chList);
115 chList);
116 editor = either.b(); 113 editor = either.b();
117 if (either.isA()) { 114 if (either.isA()) {
118 throw new IOException("Failed commit log recovery"); 115 throw new IOException("Failed commit log recovery");
119 } 116 }
120 editor.success(); 117 editor.success();
138 135
139 public long getRenewTime(String _boardName) { 136 public long getRenewTime(String _boardName) {
140 return renewTime; 137 return renewTime;
141 } 138 }
142 139
143 public void createBoards(final String _name, final String _author, 140 public void createBoards(final String _name, final String _author, final String _initMessage, final String _editKey) {
144 final String _initMessage, final String _editKey) {
145 requestCounter.incrementAndGet(); 141 requestCounter.incrementAndGet();
146 if (null == jungle.createNewTree(_name)) { 142 if (null == jungle.createNewTree(_name)) {
147 throw new IllegalStateException(); 143 throw new IllegalStateException();
148 } 144 }
149 145
154 if (either.isA()) { 150 if (either.isA()) {
155 throw new IllegalStateException(); 151 throw new IllegalStateException();
156 } 152 }
157 editor = either.b(); 153 editor = either.b();
158 154
159 either = editor.putAttribute(root.add(0), "name", 155 either = editor.putAttribute(root.add(0), "name",ByteBuffer.wrap(_name.getBytes()));
160 ByteBuffer.wrap(_name.getBytes()));
161 if (either.isA()) { 156 if (either.isA()) {
162 throw new IllegalStateException(); 157 throw new IllegalStateException();
163 } 158 }
164 editor = either.b(); 159 editor = either.b();
165 final long timestamp = System.currentTimeMillis(); 160 final long timestamp = System.currentTimeMillis();
182 } 177 }
183 editor = either.b(); 178 editor = either.b();
184 179
185 NodeEditor e = new NodeEditor() { 180 NodeEditor e = new NodeEditor() {
186 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) { 181 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
187 _e = _e.getAttributes() 182 _e = _e.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
188 .put("author", ByteBuffer.wrap(_author.getBytes())).b(); 183 _e = _e.getAttributes().put("mes", ByteBuffer.wrap(_initMessage.getBytes())).b();
189 _e = _e.getAttributes() 184 _e = _e.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
190 .put("mes", ByteBuffer.wrap(_initMessage.getBytes()))
191 .b();
192 _e = _e.getAttributes()
193 .put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
194 ByteBuffer tBuffer2 = ByteBuffer.allocate(16); 185 ByteBuffer tBuffer2 = ByteBuffer.allocate(16);
195 tBuffer2.putLong(timestamp); 186 tBuffer2.putLong(timestamp);
196 _e = _e.getAttributes().put("timestamp", tBuffer2).b(); 187 _e = _e.getAttributes().put("timestamp", tBuffer2).b();
197 return DefaultEither.newB(_e); 188 return DefaultEither.newB(_e);
198 } 189 }
204 } 195 }
205 either.b().success(); 196 either.b().success();
206 197
207 } 198 }
208 199
209 public void createFolder(final String _board, final String _author, 200 public void createFolder(final String _board, final String _author, final String _message, final String _editKey, String _nodeNum) {
210 final String _message, final String _editKey, String _nodeNum) {
211 JungleTree tree = jungle.getTreeByName(_board); 201 JungleTree tree = jungle.getTreeByName(_board);
212 if (tree == null) { 202 if (tree == null) {
213 throw new IllegalStateException(); 203 throw new IllegalStateException();
214 } 204 }
215 205
216 DefaultNodePath path = new DefaultNodePath(); 206 DefaultNodePath path = new DefaultNodePath();
217 try { 207 try {
218 for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) { 208 for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) {
219 if (!_nodeNum.substring(count, count + 1).equals("/")) 209 if (!_nodeNum.substring(count, count + 1).equals("/"))
220 path = path.add(Integer.parseInt(_nodeNum.substring(count, 210 path = path.add(Integer.parseInt(_nodeNum.substring(count, count + 1)));
221 count + 1)));
222 } 211 }
223 } catch (Exception _e) { 212 } catch (Exception _e) {
224 } 213 }
225 requestCounter.incrementAndGet(); 214 requestCounter.incrementAndGet();
226 Either<Error, JungleTreeEditor> either; 215 Either<Error, JungleTreeEditor> either;
227 final long timestamp = System.currentTimeMillis(); 216 final long timestamp = System.currentTimeMillis();
228 final ByteBuffer tBuffer = ByteBuffer.allocate(16); 217 final ByteBuffer tBuffer = ByteBuffer.allocate(16);
229 tBuffer.putLong(timestamp); 218 tBuffer.putLong(timestamp);
219
230 do { 220 do {
231 Node node = tree.getRootNode(); 221 Node node = tree.getRootNode();
232
233 DefaultTraverser traverser = new DefaultTraverser(); 222 DefaultTraverser traverser = new DefaultTraverser();
234 TraversableNodeWrapper<Node> traversable = new TraversableNodeWrapper<Node>( 223 TraversableNodeWrapper<Node> traversable = new TraversableNodeWrapper<Node>(node);
235 node);
236 DefaultEvaluator evaluator = new DefaultEvaluator(path); 224 DefaultEvaluator evaluator = new DefaultEvaluator(path);
237 Either<Error, Traversal<TraversableNodeWrapper<Node>>> ret = traverser 225 Either<Error, Traversal<TraversableNodeWrapper<Node>>> ret = traverser.traverse(traversable, evaluator);
238 .traverse(traversable, evaluator);
239 if (ret.isA()) { 226 if (ret.isA()) {
240 Assert.fail(); 227 Assert.fail();
241 } 228 }
242 229
243 Traversal<TraversableNodeWrapper<Node>> traversal = ret.b(); 230 Traversal<TraversableNodeWrapper<Node>> traversal = ret.b();
250 } 237 }
251 editor = either.b(); 238 editor = either.b();
252 239
253 NodeEditor e = new NodeEditor() { 240 NodeEditor e = new NodeEditor() {
254 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) { 241 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
255 _e = _e.getAttributes() 242 _e = _e.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
256 .put("author", ByteBuffer.wrap(_author.getBytes()))
257 .b();
258 _e = _e.getAttributes()
259 .put("mes", ByteBuffer.wrap(_message.getBytes()))
260 .b();
261 _e = _e.getAttributes()
262 .put("key", ByteBuffer.wrap(_editKey.getBytes()))
263 .b();
264 _e = _e.getAttributes().put("timestamp", tBuffer).b(); 243 _e = _e.getAttributes().put("timestamp", tBuffer).b();
265 return DefaultEither.newB(_e); 244 return DefaultEither.newB(_e);
266 } 245 }
267 }; 246 };
268 path = path.add(size); 247 path = path.add(size);
274 either = editor.success(); 253 either = editor.success();
275 } while (either.isA()); 254 } while (either.isA());
276 255
277 } 256 }
278 257
279 public void createBoardMessage(final String _board, final String _author, 258 public void createBoardMessage(final String _board, final String _author, final String _message, final String _editKey) {
280 final String _message, final String _editKey) {
281 requestCounter.incrementAndGet(); 259 requestCounter.incrementAndGet();
282 JungleTree tree = jungle.getTreeByName(_board); 260 JungleTree tree = jungle.getTreeByName(_board);
283 if (tree == null) { 261 if (tree == null) {
284 throw new IllegalStateException(); 262 throw new IllegalStateException();
285 } 263 }
287 Either<Error, JungleTreeEditor> either; 265 Either<Error, JungleTreeEditor> either;
288 final long timestamp = System.currentTimeMillis(); 266 final long timestamp = System.currentTimeMillis();
289 final ByteBuffer tBuffer = ByteBuffer.allocate(16); 267 final ByteBuffer tBuffer = ByteBuffer.allocate(16);
290 tBuffer.putLong(timestamp); 268 tBuffer.putLong(timestamp);
291 do { 269 do {
270
292 Node node = tree.getRootNode(); 271 Node node = tree.getRootNode();
293 int size = node.getChildren().size(); 272 int size = node.getChildren().size();
294 DefaultNodePath path = new DefaultNodePath(); 273 DefaultNodePath path = new DefaultNodePath();
295 274
296 JungleTreeEditor editor = tree.getTreeEditor(); 275 JungleTreeEditor editor = tree.getTreeEditor();
300 } 279 }
301 editor = either.b(); 280 editor = either.b();
302 281
303 NodeEditor e = new NodeEditor() { 282 NodeEditor e = new NodeEditor() {
304 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) { 283 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
305 _e = _e.getAttributes() 284 _e = _e.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
306 .put("author", ByteBuffer.wrap(_author.getBytes())) 285 _e = _e.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
307 .b(); 286 _e = _e.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
308 _e = _e.getAttributes()
309 .put("mes", ByteBuffer.wrap(_message.getBytes()))
310 .b();
311 _e = _e.getAttributes()
312 .put("key", ByteBuffer.wrap(_editKey.getBytes()))
313 .b();
314 _e = _e.getAttributes().put("timestamp", tBuffer).b(); 287 _e = _e.getAttributes().put("timestamp", tBuffer).b();
315 return DefaultEither.newB(_e); 288 return DefaultEither.newB(_e);
316 } 289 }
317 }; 290 };
318 path = path.add(size); 291 path = path.add(size);
324 either = editor.success(); 297 either = editor.success();
325 } while (either.isA()); 298 } while (either.isA());
326 299
327 } 300 }
328 301
329 public void editMessage(String _board, String _uuid, final String _author, 302 public void editMessage(String _board, String _uuid, final String _author, final String _message, final String _editKey) {
330 final String _message, final String _editKey) {
331 requestCounter.incrementAndGet(); 303 requestCounter.incrementAndGet();
332 final long timestamp = System.currentTimeMillis(); 304 final long timestamp = System.currentTimeMillis();
333 final ByteBuffer tBuffer = ByteBuffer.allocate(16); 305 final ByteBuffer tBuffer = ByteBuffer.allocate(16);
334 tBuffer.putLong(timestamp); 306 tBuffer.putLong(timestamp);
335 JungleTree tree = jungle.getTreeByName(_board); 307 JungleTree tree = jungle.getTreeByName(_board);
336 Either<Error, JungleTreeEditor> either = null; 308 Either<Error, JungleTreeEditor> either = null;
309
337 do { 310 do {
338 DefaultNodePath path = new DefaultNodePath(); 311 DefaultNodePath path = new DefaultNodePath();
339 path = path.add(Integer.parseInt(_uuid)); 312 path = path.add(Integer.parseInt(_uuid));
340 313
341 JungleTreeEditor editor = tree.getTreeEditor(); 314 JungleTreeEditor editor = tree.getTreeEditor();
342 NodeEditor e = new NodeEditor() { 315 NodeEditor e = new NodeEditor() {
343 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) { 316 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
344 _e = _e.getAttributes() 317 _e = _e.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
345 .put("author", ByteBuffer.wrap(_author.getBytes())) 318 _e = _e.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
346 .b(); 319 _e = _e.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
347 _e = _e.getAttributes()
348 .put("mes", ByteBuffer.wrap(_message.getBytes()))
349 .b();
350 _e = _e.getAttributes()
351 .put("key", ByteBuffer.wrap(_editKey.getBytes()))
352 .b();
353 _e = _e.getAttributes().put("timestamp", tBuffer).b(); 320 _e = _e.getAttributes().put("timestamp", tBuffer).b();
354 return DefaultEither.newB(_e); 321 return DefaultEither.newB(_e);
355 } 322 }
356 }; 323 };
357 either = editor.edit(path, e); 324 either = editor.edit(path, e);
362 either = editor.success(); 329 either = editor.success();
363 } while (either.isA()); 330 } while (either.isA());
364 renewTime = timestamp; 331 renewTime = timestamp;
365 } 332 }
366 333
367 public void createAttribute(String _board, String _uuid, 334 public void createAttribute(String _board, String _uuid, final String _author, final String _message, final String _editKey) {
368 final String _author, final String _message, final String _editKey) {
369 requestCounter.incrementAndGet(); 335 requestCounter.incrementAndGet();
370 final long timestamp = System.currentTimeMillis(); 336 final long timestamp = System.currentTimeMillis();
371 final ByteBuffer tBuffer = ByteBuffer.allocate(16); 337 final ByteBuffer tBuffer = ByteBuffer.allocate(16);
372 tBuffer.putLong(timestamp); 338 tBuffer.putLong(timestamp);
373 JungleTree tree = jungle.getTreeByName(_board); 339 JungleTree tree = jungle.getTreeByName(_board);
375 DefaultNodePath path = new DefaultNodePath(); 341 DefaultNodePath path = new DefaultNodePath();
376 do { 342 do {
377 try { 343 try {
378 for (int count = 0; _uuid.substring(count, count + 1) != null; count++) { 344 for (int count = 0; _uuid.substring(count, count + 1) != null; count++) {
379 if (!_uuid.substring(count, count + 1).equals("/")) 345 if (!_uuid.substring(count, count + 1).equals("/"))
380 path = path.add(Integer.parseInt(_uuid.substring(count, 346 path = path.add(Integer.parseInt(_uuid.substring(count, count + 1)));
381 count + 1)));
382 } 347 }
383 } catch (Exception _e) { 348 } catch (Exception _e) {
384 } 349 }
385 Node node = tree.getRootNode(); 350
386
387 DefaultTraverser traverser = new DefaultTraverser();
388 TraversableNodeWrapper<Node> traversable = new TraversableNodeWrapper<Node>(
389 node);
390 DefaultEvaluator evaluator = new DefaultEvaluator(path);
391 Either<Error, Traversal<TraversableNodeWrapper<Node>>> ret = traverser
392 .traverse(traversable, evaluator);
393 if (ret.isA()) {
394 Assert.fail();
395 }
396
397 Traversal<TraversableNodeWrapper<Node>> traversal = ret.b();
398 TraversableNodeWrapper<Node> target = traversal.destination();
399 final Node cheakNode = target.getWrapped();
400 System.out.println(cheakNode.getAttributes().get("attribute"));
401
402 JungleTreeEditor editor = tree.getTreeEditor(); 351 JungleTreeEditor editor = tree.getTreeEditor();
403 NodeEditor e = new NodeEditor() { 352 NodeEditor e = new NodeEditor() {
404 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) { 353 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
405 // EnableNodeWrapper<T> node = _e.getWrap(); 354 // EnableNodeWrapper<T> node = _e.getWrap();
406 String str = "0"; 355 String str = "0";
407 int count = 0; 356 int count = 0;
408 for (; _e.getAttributes().get("author" + String.valueOf(count)) != null; count++) { 357 for (; _e.getAttributes().get("mes" + String.valueOf(count)) != null; count++) {
409 } 358 }
410 str = String.valueOf(count); 359 str = String.valueOf(count);
411 _e = _e.getAttributes().put("author" + str, ByteBuffer.wrap(_author.getBytes())).b();
412 _e = _e.getAttributes().put("mes" + str, ByteBuffer.wrap(_message.getBytes())).b(); 360 _e = _e.getAttributes().put("mes" + str, ByteBuffer.wrap(_message.getBytes())).b();
413 _e = _e.getAttributes().put("key" + str, ByteBuffer.wrap(_editKey.getBytes())).b();
414 _e = _e.getAttributes().put("timestamp" + str, tBuffer).b(); 361 _e = _e.getAttributes().put("timestamp" + str, tBuffer).b();
415 return DefaultEither.newB(_e); 362 return DefaultEither.newB(_e);
416 } 363 }
417 }; 364 };
418 either = editor.edit(path, e); 365 either = editor.edit(path, e);
422 editor = either.b(); 369 editor = either.b();
423 either = editor.success(); 370 either = editor.success();
424 } while (either.isA()); 371 } while (either.isA());
425 } 372 }
426 373
427 public void editMatrixMessage(String _board, String _uuid, 374 public void editMatrixMessage(String _board, String _uuid, final String _author, final String _message, final String _editKey) {
428 final String _author, final String _message, final String _editKey) {
429 requestCounter.incrementAndGet(); 375 requestCounter.incrementAndGet();
430 final long timestamp = System.currentTimeMillis(); 376 final long timestamp = System.currentTimeMillis();
431 final ByteBuffer tBuffer = ByteBuffer.allocate(16); 377 final ByteBuffer tBuffer = ByteBuffer.allocate(16);
432 tBuffer.putLong(timestamp); 378 tBuffer.putLong(timestamp);
433 JungleTree tree = jungle.getTreeByName(_board); 379 JungleTree tree = jungle.getTreeByName(_board);
437 path = path.add(Integer.parseInt(_uuid)); 383 path = path.add(Integer.parseInt(_uuid));
438 384
439 JungleTreeEditor editor = tree.getTreeEditor(); 385 JungleTreeEditor editor = tree.getTreeEditor();
440 NodeEditor e = new NodeEditor() { 386 NodeEditor e = new NodeEditor() {
441 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) { 387 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
442 _e = _e.getAttributes() 388 _e = _e.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
443 .put("author", ByteBuffer.wrap(_author.getBytes())) 389 _e = _e.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
444 .b(); 390 _e = _e.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
445 _e = _e.getAttributes()
446 .put("mes", ByteBuffer.wrap(_message.getBytes()))
447 .b();
448 _e = _e.getAttributes()
449 .put("key", ByteBuffer.wrap(_editKey.getBytes()))
450 .b();
451 _e = _e.getAttributes().put("timestamp", tBuffer).b(); 391 _e = _e.getAttributes().put("timestamp", tBuffer).b();
452 return DefaultEither.newB(_e); 392 return DefaultEither.newB(_e);
453 } 393 }
454 }; 394 };
455 either = editor.edit(path, e); 395 either = editor.edit(path, e);
469 Children<Node> chs = node.getChildren(); 409 Children<Node> chs = node.getChildren();
470 final AtomicInteger counter = new AtomicInteger(0); 410 final AtomicInteger counter = new AtomicInteger(0);
471 IterableConverter.Converter<BoardMessage, Node> converter = new IterableConverter.Converter<BoardMessage, Node>() { 411 IterableConverter.Converter<BoardMessage, Node> converter = new IterableConverter.Converter<BoardMessage, Node>() {
472 public BoardMessage conv(Node _b) { 412 public BoardMessage conv(Node _b) {
473 String uuid = Integer.toString(counter.get()); 413 String uuid = Integer.toString(counter.get());
474 String author = new String(_b.getAttributes().get("author") 414 String author = new String(_b.getAttributes().get("author") .array());
475 .array()); 415 String message = new String(_b.getAttributes().get("mes").array());
476 String message = new String(_b.getAttributes().get("mes")
477 .array());
478 counter.incrementAndGet(); 416 counter.incrementAndGet();
479 return new BoardMessageImpl(author, message, uuid); 417 return new BoardMessageImpl(author, message, uuid);
480 } 418 }
481 }; 419 };
482 return new IterableConverter<BoardMessage, Node>(chs, converter); 420 return new IterableConverter<BoardMessage, Node>(chs, converter);
486 424
487 DefaultNodePath path = new DefaultNodePath(); 425 DefaultNodePath path = new DefaultNodePath();
488 try { 426 try {
489 for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) { 427 for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) {
490 if (!_nodeNum.substring(count, count + 1).equals("/")) 428 if (!_nodeNum.substring(count, count + 1).equals("/"))
491 path = path.add(Integer.parseInt(_nodeNum.substring(count, 429 path = path.add(Integer.parseInt(_nodeNum.substring(count,count + 1)));
492 count + 1)));
493 }
494 } catch (Exception _e) {
495 }
496 requestCounter.incrementAndGet();
497 JungleTree tree = jungle.getTreeByName(_boardName);
498 Node node = tree.getRootNode();
499
500 DefaultTraverser traverser = new DefaultTraverser();
501 TraversableNodeWrapper<Node> traversable = new TraversableNodeWrapper<Node>(
502 node);
503 DefaultEvaluator evaluator = new DefaultEvaluator(path);
504 Either<Error, Traversal<TraversableNodeWrapper<Node>>> ret = traverser
505 .traverse(traversable, evaluator);
506 if (ret.isA()) {
507 Assert.fail();
508 }
509
510 Traversal<TraversableNodeWrapper<Node>> traversal = ret.b();
511 TraversableNodeWrapper<Node> target = traversal.destination();
512 Children<Node> chs = target.getWrapped().getChildren();
513
514 final AtomicInteger counter = new AtomicInteger(0);
515 IterableConverter.Converter<BoardMessage, Node> converter = new IterableConverter.Converter<BoardMessage, Node>() {
516 public BoardMessage conv(Node _b) {
517 String uuid = Integer.toString(counter.get());
518 String author = new String(_b.getAttributes().get("author").array());
519 String message = new String(_b.getAttributes().get("mes").array());
520 counter.incrementAndGet();
521 return new BoardMessageImpl(author, message, uuid);
522 }
523 };
524 return new IterableConverter<BoardMessage, Node>(chs, converter);
525 }
526
527
528 public getAttributeImp getAttribute(String _boardName, String _nodeNum) {
529
530 DefaultNodePath path = new DefaultNodePath();
531 try {
532 for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) {
533 if (!_nodeNum.substring(count, count + 1).equals("/"))
534 path = path.add(Integer.parseInt(_nodeNum.substring(count,
535 count + 1)));
536 } 430 }
537 } catch (Exception _e) { 431 } catch (Exception _e) {
538 } 432 }
539 requestCounter.incrementAndGet(); 433 requestCounter.incrementAndGet();
540 JungleTree tree = jungle.getTreeByName(_boardName); 434 JungleTree tree = jungle.getTreeByName(_boardName);
548 Assert.fail(); 442 Assert.fail();
549 } 443 }
550 444
551 Traversal<TraversableNodeWrapper<Node>> traversal = ret.b(); 445 Traversal<TraversableNodeWrapper<Node>> traversal = ret.b();
552 TraversableNodeWrapper<Node> target = traversal.destination(); 446 TraversableNodeWrapper<Node> target = traversal.destination();
447 Children<Node> chs = target.getWrapped().getChildren();
448
449 final AtomicInteger counter = new AtomicInteger(0);
450 IterableConverter.Converter<BoardMessage, Node> converter = new IterableConverter.Converter<BoardMessage, Node>() {
451 public BoardMessage conv(Node _b) {
452 String uuid = Integer.toString(counter.get());
453 String message = new String(_b.getAttributes().get("mes").array());
454 counter.incrementAndGet();
455 return new BoardMessageImpl(null, message, uuid);
456 }
457 };
458 return new IterableConverter<BoardMessage, Node>(chs, converter);
459 }
460
461
462 public getAttributeImp getAttribute(String _boardName, String _nodeNum) {
463
464 DefaultNodePath path = new DefaultNodePath();
465 try {
466 for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) {
467 if (!_nodeNum.substring(count, count + 1).equals("/"))
468 path = path.add(Integer.parseInt(_nodeNum.substring(count,count + 1)));
469 }
470 } catch (Exception _e) {
471 }
472 requestCounter.incrementAndGet();
473 JungleTree tree = jungle.getTreeByName(_boardName);
474 Node node = tree.getRootNode();
475
476 DefaultTraverser traverser = new DefaultTraverser();
477 TraversableNodeWrapper<Node> traversable = new TraversableNodeWrapper<Node>(node);
478 DefaultEvaluator evaluator = new DefaultEvaluator(path);
479 Either<Error, Traversal<TraversableNodeWrapper<Node>>> ret = traverser.traverse(traversable, evaluator);
480 if (ret.isA()) {
481 Assert.fail();
482 }
483
484 Traversal<TraversableNodeWrapper<Node>> traversal = ret.b();
485 TraversableNodeWrapper<Node> target = traversal.destination();
553 return new getAttributeImp(target.getWrapped()); 486 return new getAttributeImp(target.getWrapped());
554 } 487 }
555 488
556 public int getRequestNum() { 489 public int getRequestNum() {
557 return requestCounter.get(); 490 return requestCounter.get();