changeset 58:4851344e120e

fix bug LogUpdateCodeSegment and ChildLogCheckCodeSegment
author one
date Mon, 15 Jul 2013 10:13:34 +0900
parents 1bfd13f831ea
children 8a532ca5df80
files src/alice/jungle/codesegment/HashLogUpdateCodeSegment.java src/alice/jungle/codesegment/LogUpdateCodeSegment.java src/alice/jungle/core/NetworkDefaultJungle.java src/alice/jungle/persistence/AliceJournal.java src/jungle/test/alice/CheckDoubleTreeAttr.java src/jungle/test/alice/CopyAttrJungle2.java src/jungle/test/alice/DoubleJungleManager.java src/jungle/test/alice/HashSetConvertTest.java src/jungle/test/alice/LocalDoubleJungleTree.java src/jungle/test/alice/PutAttrJungle1.java src/jungle/test/bbs/NetworkJungleBulletinBoard.java src/jungle/test/bbs/codesegment/ChildLogCheckCodeSegment.java src/jungle/test/codesegment/persistence/AliceJournal.java src/test/alice/jungle/codesegment/CheckDoubleTreeAttr.java src/test/alice/jungle/codesegment/CopyAttrJungle2.java src/test/alice/jungle/codesegment/DoubleJungleManager.java src/test/alice/jungle/codesegment/HashSetConvertTest.java src/test/alice/jungle/codesegment/LocalDoubleJungleTree.java src/test/alice/jungle/codesegment/PutAttrJungle1.java
diffstat 19 files changed, 394 insertions(+), 393 deletions(-) [+]
line wrap: on
line diff
--- a/src/alice/jungle/codesegment/HashLogUpdateCodeSegment.java	Sun Jul 14 21:46:40 2013 +0900
+++ b/src/alice/jungle/codesegment/HashLogUpdateCodeSegment.java	Mon Jul 15 10:13:34 2013 +0900
@@ -22,5 +22,4 @@
 		ds.hash.add(str);
 		ods.put("hashLog", ds);
 	}
-
 }
--- a/src/alice/jungle/codesegment/LogUpdateCodeSegment.java	Sun Jul 14 21:46:40 2013 +0900
+++ b/src/alice/jungle/codesegment/LogUpdateCodeSegment.java	Mon Jul 15 10:13:34 2013 +0900
@@ -34,7 +34,7 @@
 	public LogUpdateCodeSegment(int index) {
 		parentLog.setKey("parent", "log", index);
 		host.setKey("host");
-		hashLog.setKey("hashLog");		
+		hashLog.setKey("hashLog");
 	}
 	
 	public void run() {
@@ -64,10 +64,10 @@
 		JungleTreeEditor editor = tree.getTreeEditor();
 		Either<DefaultError, Integer> e = checkTimeStamp(tree.getRootNode(), container.getTimeStamp());
 		Either<Error, JungleTreeEditor> either; 
-		if(e.isB()) {	
+		if(e.isA()) {	
 			either = JungleManager.edit(editor, log, container.getPosition());
 		} else {
-			either = JungleManager.edit(editor, log);
+			either = JungleManager.edit(editor, log, e.b());
 		}
 		if(either.isA()) {
 			throw new IllegalStateException();
@@ -79,7 +79,6 @@
 		}
 		ds.hash.add(container.getHashLogString());
 		ods.update("hashLog", ds);		
-		System.out.println("ods.put log container");
 		ods.put("log", container);
 		new LogUpdateCodeSegment(index);
 	}
@@ -103,7 +102,4 @@
 		}
 		return DefaultEither.newB(count);
 	}
-	
-	
-
 }
--- a/src/alice/jungle/core/NetworkDefaultJungle.java	Sun Jul 14 21:46:40 2013 +0900
+++ b/src/alice/jungle/core/NetworkDefaultJungle.java	Mon Jul 15 10:13:34 2013 +0900
@@ -3,6 +3,7 @@
 import java.util.Iterator;
 import java.util.concurrent.ConcurrentHashMap;
 
+import alice.jungle.persistence.AliceJournal;
 import alice.jungle.transaction.NetworkDefaultJungleTree;
 
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
@@ -15,7 +16,6 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultChangeSet;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
-import jungle.test.codesegment.persistence.AliceJournal;
 import fj.data.List;
 
 public class NetworkDefaultJungle implements Jungle {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/alice/jungle/persistence/AliceJournal.java	Mon Jul 15 10:13:34 2013 +0900
@@ -0,0 +1,83 @@
+package alice.jungle.persistence;
+
+import java.nio.ByteBuffer;
+
+import alice.jungle.datasegment.store.operations.DefaultNodeOperationContainer;
+import alice.jungle.datasegment.store.operations.DefaultTreeOperationContainer;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Journal;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
+
+public class AliceJournal implements Journal {
+	
+	private static final AliceChangeListWriter ALICE_WRITER = new AliceChangeListWriter();
+	private static final AliceChangeListReader ALICE_READER = new AliceChangeListReader();
+	@Override
+	public ChangeListReader getReader() {
+		return ALICE_READER;
+	}
+	@Override
+	public ChangeListWriter getWriter() {
+		return ALICE_WRITER;
+	}
+	
+	private static class AliceChangeListWriter implements ChangeListWriter
+	{
+		@Override
+		public Result write(ChangeList _operations)
+		{
+			for(TreeOperation op : _operations){
+				NodePath p = op.getNodePath();
+				NodeOperation nodeOp = op.getNodeOperation();
+				Command c = nodeOp.getCommand();
+				String args = "";
+				switch(c){
+					case PUT_ATTRIBUTE:
+						String key = nodeOp.getKey();
+						ByteBuffer value = nodeOp.getValue();
+						if(value.limit() < 100){
+							args = String.format("key:%s,value:%s",key,new String(value.array()));
+						}else{
+							args = String.format("key:%s,value:%d",key,value.limit());
+						}
+						break;
+					case DELETE_ATTRIBUTE:
+						args = String.format("key:%s",nodeOp.getKey());
+						break;
+					case APPEND_CHILD:
+						args = String.format("pos:%d",nodeOp.getPosition());
+						break;
+					case DELETE_CHILD:
+						args = String.format("pos:%d",nodeOp.getPosition());
+						break;
+				}
+				System.out.println(String.format("[%s:%s:%s]",c,p,args));
+			}
+			return Result.SUCCESS;
+		}
+	}
+	
+	private static class AliceChangeListReader implements ChangeListReader
+	{
+		@Override
+		public ChangeListReader newReader()
+		{
+			return this;
+		}
+
+		@Override
+		public ChangeList read()
+		{
+			return null;
+		}
+	}
+	
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jungle/test/alice/CheckDoubleTreeAttr.java	Mon Jul 15 10:13:34 2013 +0900
@@ -0,0 +1,58 @@
+package jungle.test.alice;
+
+import java.nio.ByteBuffer;
+import java.util.Iterator;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class CheckDoubleTreeAttr extends CodeSegment {
+	
+	Receiver arg1 = ids.create(CommandType.TAKE);
+	
+	public CheckDoubleTreeAttr() {
+		arg1.setKey("count");
+	}
+	
+	public void run() {
+		int count = arg1.asInteger();
+		
+		DoubleJungleManager djm = new DoubleJungleManager();
+		Jungle jungle1 = djm.getJungle1();
+		Jungle jungle2 = djm.getJungle2();
+		JungleTree tree1 = jungle1.getTreeByName("tree");
+		JungleTree tree2 = jungle2.getTreeByName("tree");
+		
+		Node node1 = tree1.getRootNode();
+		Node node2 = tree2.getRootNode();
+		Children<Node> chs1 = node1.getChildren();
+		Children<Node> chs2 = node2.getChildren();
+		
+		Iterator<Node> iter1 = chs1.iterator();
+		Iterator<Node> iter2 = chs2.iterator();
+		
+		for(; iter1.hasNext() && iter2.hasNext();) {
+			Node n1 = iter1.next();
+			Node n2 = iter2.next();
+			ByteBuffer b1 = n1.getAttributes().get("key");
+			ByteBuffer b2 = n2.getAttributes().get("key");
+			String str1 = new String(b1.array());
+			String str2 = new String(b2.array());
+			if(!str1.equals(str2)) {
+				System.out.println("Failed ");
+				System.out.println("str1 "+ str1);
+				System.out.println("str2 "+ str2);
+				System.exit(0);
+			} else { 
+				System.out.println("success: " + str1);
+			}
+		}
+		
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jungle/test/alice/CopyAttrJungle2.java	Mon Jul 15 10:13:34 2013 +0900
@@ -0,0 +1,55 @@
+package jungle.test.alice;
+
+import java.io.IOException;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+import jungle.test.bbs.JungleManager;
+import jungle.test.core.practice.PrintChildrenAttribute;
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+import alice.jungle.datasegment.store.operations.DefaultTreeOperationLogContainer;
+
+public class CopyAttrJungle2 extends CodeSegment {
+	
+	Receiver logReceiver = ids.create(CommandType.TAKE);
+	Receiver countReceiver = ids.create(CommandType.TAKE);
+	
+	public CopyAttrJungle2() {
+		logReceiver.setKey("log");
+		countReceiver.setKey("count2");
+	}
+
+	public void run() {
+		System.out.println("CopyAttrJungle2");
+		int count = countReceiver.asInteger();
+		DefaultTreeOperationLogContainer container = logReceiver.asClass(DefaultTreeOperationLogContainer.class);
+		DefaultTreeOperationLog log = null;
+		try {
+			log = container.convert();
+		} catch (IOException e) {
+			e.printStackTrace();
+			System.exit(0);
+		}
+		String treeName = container.getTreeName();
+		DoubleJungleManager djm = new DoubleJungleManager();
+		Jungle jungle2 = djm.getJungle2();
+		JungleTree tree = jungle2.getTreeByName(treeName);
+		
+		JungleTreeEditor editor = tree.getTreeEditor();
+		Either<Error, JungleTreeEditor> either = djm.edit(editor, log);
+		if (either.isA()) {
+			throw new IllegalStateException();				
+		}
+		editor = either.b();
+		editor.success();
+		new CheckDoubleTreeAttr();
+		ods.update("count", count);
+	}
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jungle/test/alice/DoubleJungleManager.java	Mon Jul 15 10:13:34 2013 +0900
@@ -0,0 +1,74 @@
+package jungle.test.alice;
+
+import java.nio.ByteBuffer;
+
+import alice.jungle.core.NetworkDefaultJungle;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DefaultTreeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+
+public class DoubleJungleManager {
+
+	static Jungle jungle1 = new NetworkDefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser()), "");
+	static Jungle jungle2 = new NetworkDefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser()), "");
+	
+	
+	public DoubleJungleManager() {
+		
+	}
+	
+	public Jungle getJungle1() {
+		return jungle1;
+	}
+	
+	public Jungle getJungle2() {
+		return jungle2;
+	}
+	
+	
+	public Either<Error, JungleTreeEditor> edit(JungleTreeEditor _editor ,TreeOperationLog _log) {
+		JungleTreeEditor editor = _editor;
+		Either<Error, JungleTreeEditor> either = null;
+		for (TreeOperation op : _log) { 
+			either = _edit(editor, op);
+			if(either.isA()) {
+				return either;
+			}
+			editor = either.b();
+		}
+		return either;
+	}
+	
+	private Either<Error, JungleTreeEditor> _edit(JungleTreeEditor editor,
+			TreeOperation op) {
+		NodePath path = op.getNodePath();
+		NodeOperation nodeOp = op.getNodeOperation();
+		Command c = nodeOp.getCommand();
+		String key = "";
+		switch (c) {
+		case PUT_ATTRIBUTE:
+			key = nodeOp.getKey();
+			ByteBuffer value = nodeOp.getValue();
+			return editor.putAttribute(path, key, value);
+		case DELETE_ATTRIBUTE:
+			key = nodeOp.getKey();
+			return editor.deleteAttribute(path, key);
+		case APPEND_CHILD:
+			return editor.addNewChildAt(path, 0);
+		case DELETE_CHILD:
+			return editor.deleteChildAt(path, 0);
+		}
+		return null;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jungle/test/alice/HashSetConvertTest.java	Mon Jul 15 10:13:34 2013 +0900
@@ -0,0 +1,41 @@
+package jungle.test.alice;
+
+import java.util.HashSet;
+
+import org.msgpack.annotation.Message;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class HashSetConvertTest extends CodeSegment {
+	
+	Receiver hash = ids.create(CommandType.TAKE);
+
+	public HashSetConvertTest() {
+		hash.setKey("hash");
+	}
+	
+	public static void main(String[] args) {
+		HashSetDataSegment h = new HashSetDataSegment();
+		h.hash.add("test1");
+		h.hash.add("test2");
+		
+		HashSetConvertTest cs = new HashSetConvertTest();
+		cs.ods.put("hash", h);
+	}
+	
+	public void run() {
+		HashSetDataSegment h = hash.asClass(HashSetDataSegment.class);
+		for(String s : h.hash ) {
+			System.out.println("s : "+s);
+		}
+		System.exit(0);
+	}
+	
+	@Message
+	private static class HashSetDataSegment {
+		public HashSet<String> hash = new HashSet<String>();		
+		public HashSetDataSegment() {}
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jungle/test/alice/LocalDoubleJungleTree.java	Mon Jul 15 10:13:34 2013 +0900
@@ -0,0 +1,20 @@
+package jungle.test.alice;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
+
+public class LocalDoubleJungleTree {
+
+	public static void main(String[] args) {
+		System.out.println("LocalDoubleJungleTree");
+		DoubleJungleManager djm = new DoubleJungleManager();
+		Jungle jungle1 = djm.getJungle1();
+		Jungle jungle2 = djm.getJungle2();
+		jungle1.createNewTree("tree");
+		jungle2.createNewTree("tree");
+		
+		PutAttrJungle1 cs = new PutAttrJungle1();
+		cs.ods.update("count1", 0);
+		
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jungle/test/alice/PutAttrJungle1.java	Mon Jul 15 10:13:34 2013 +0900
@@ -0,0 +1,47 @@
+package jungle.test.alice;
+
+import java.nio.ByteBuffer;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class PutAttrJungle1 extends CodeSegment {
+	
+	Receiver arg1 = ids.create(CommandType.TAKE);
+	
+	public PutAttrJungle1() {
+		arg1.setKey("count1");
+	}
+	
+	public void run() {
+		System.out.println("PutAttrJungle1");
+		int count = arg1.asInteger();
+		Jungle jungle1 = new DoubleJungleManager().getJungle1();
+		JungleTree tree = jungle1.getTreeByName("tree");
+		JungleTreeEditor editor = tree.getTreeEditor();
+		DefaultNodePath root = new DefaultNodePath();
+		Either<Error, JungleTreeEditor> either =  editor.addNewChildAt(root, 0);
+		if(either.isA()) {
+			throw new IllegalStateException();
+		}
+		editor = either.b();
+		either = editor.putAttribute(root.add(0), "key", ByteBuffer.wrap("message".getBytes()));
+		if(either.isA()) {
+			throw new IllegalStateException();
+		}
+		editor = either.b();
+		editor.success();
+		
+		new CopyAttrJungle2();
+		ods.update("count2", count);
+		
+	}
+
+}
--- a/src/jungle/test/bbs/NetworkJungleBulletinBoard.java	Sun Jul 14 21:46:40 2013 +0900
+++ b/src/jungle/test/bbs/NetworkJungleBulletinBoard.java	Mon Jul 15 10:13:34 2013 +0900
@@ -242,7 +242,6 @@
 		container.unconvert(_log);
 		container.setTimeStamp(timestamp);
 		HashLogUpdateCodeSegment cs = new HashLogUpdateCodeSegment();
-		container.getHashLogString();
 		cs.ods.put("log", container);
 		cs.ods.put("logString", container.getHashLogString());
 		System.out.println("putDataSegment : "+container.getHashLogString());
--- a/src/jungle/test/bbs/codesegment/ChildLogCheckCodeSegment.java	Sun Jul 14 21:46:40 2013 +0900
+++ b/src/jungle/test/bbs/codesegment/ChildLogCheckCodeSegment.java	Mon Jul 15 10:13:34 2013 +0900
@@ -32,9 +32,18 @@
 		childLog.setKey("local","childLog");
 		hashLog.setKey("hashLog");
 	}
+
+	public ChildLogCheckCodeSegment(int index) {
+		host.setKey("host");
+		childLog.setKey("local","childLog", index);
+		hashLog.setKey("hashLog");
+	}
+	
 	
 	public void run() {
 		System.out.println("--ChildLogCheckCodeSegment--");
+		int index = childLog.index;
+		HashSetDataSegment ds = hashLog.asClass(HashSetDataSegment.class);
 		String hostName = host.asString();
 		DefaultTreeOperationLogContainer container = childLog.asClass(DefaultTreeOperationLogContainer.class);		
 		DefaultTreeOperationLog log = null;
@@ -53,12 +62,11 @@
 		JungleTreeEditor editor = tree.getTreeEditor();
 		Either<DefaultError, Integer> e = checkTimeStamp(tree.getRootNode(), container.getTimeStamp());
 		Either<Error, JungleTreeEditor> either; 
-		if(e.isB()) {	
+		if(e.isA()) {	
 			either = JungleManager.edit(editor, log, container.getPosition());
 		} else {
-			either = JungleManager.edit(editor, log);
+			either = JungleManager.edit(editor, log, e.b());
 		}
-//		Either<Error, JungleTreeEditor> either = JungleManager.edit(editor, log);
 		if(either.isA()) {
 			throw new IllegalStateException();
 		}
@@ -67,11 +75,10 @@
 		if(either.isA()) {
 			throw new IllegalStateException();			
 		}
-		HashSetDataSegment ds = hashLog.asClass(HashSetDataSegment.class);
 		ds.hash.add(container.getHashLogString());
 		ods.update("hashLog", ds);
 		ods.put("log", container);
-		new ChildLogCheckCodeSegment();
+		new ChildLogCheckCodeSegment(index);
 		if(!hostName.equals("node0")) {
 			ods.put("parent", "childLog", container);
 		}
--- a/src/jungle/test/codesegment/persistence/AliceJournal.java	Sun Jul 14 21:46:40 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-package jungle.test.codesegment.persistence;
-
-import java.nio.ByteBuffer;
-
-import alice.jungle.datasegment.store.operations.DefaultNodeOperationContainer;
-import alice.jungle.datasegment.store.operations.DefaultTreeOperationContainer;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Journal;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
-
-public class AliceJournal implements Journal {
-	
-	private static final AliceChangeListWriter ALICE_WRITER = new AliceChangeListWriter();
-	private static final AliceChangeListReader ALICE_READER = new AliceChangeListReader();
-	@Override
-	public ChangeListReader getReader() {
-		return ALICE_READER;
-	}
-	@Override
-	public ChangeListWriter getWriter() {
-		return ALICE_WRITER;
-	}
-	
-	private static class AliceChangeListWriter implements ChangeListWriter
-	{
-		@Override
-		public Result write(ChangeList _operations)
-		{
-			for(TreeOperation op : _operations){
-				NodePath p = op.getNodePath();
-				NodeOperation nodeOp = op.getNodeOperation();
-				Command c = nodeOp.getCommand();
-				String args = "";
-				switch(c){
-					case PUT_ATTRIBUTE:
-						String key = nodeOp.getKey();
-						ByteBuffer value = nodeOp.getValue();
-						if(value.limit() < 100){
-							args = String.format("key:%s,value:%s",key,new String(value.array()));
-						}else{
-							args = String.format("key:%s,value:%d",key,value.limit());
-						}
-						break;
-					case DELETE_ATTRIBUTE:
-						args = String.format("key:%s",nodeOp.getKey());
-						break;
-					case APPEND_CHILD:
-						args = String.format("pos:%d",nodeOp.getPosition());
-						break;
-					case DELETE_CHILD:
-						args = String.format("pos:%d",nodeOp.getPosition());
-						break;
-				}
-				System.out.println(String.format("[%s:%s:%s]",c,p,args));
-			}
-			return Result.SUCCESS;
-		}
-	}
-	
-	private static class AliceChangeListReader implements ChangeListReader
-	{
-		@Override
-		public ChangeListReader newReader()
-		{
-			return this;
-		}
-
-		@Override
-		public ChangeList read()
-		{
-			return null;
-		}
-	}
-	
-	
-}
--- a/src/test/alice/jungle/codesegment/CheckDoubleTreeAttr.java	Sun Jul 14 21:46:40 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-package test.alice.jungle.codesegment;
-
-import java.nio.ByteBuffer;
-import java.util.Iterator;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
-import alice.codesegment.CodeSegment;
-import alice.datasegment.CommandType;
-import alice.datasegment.Receiver;
-
-public class CheckDoubleTreeAttr extends CodeSegment {
-	
-	Receiver arg1 = ids.create(CommandType.TAKE);
-	
-	public CheckDoubleTreeAttr() {
-		arg1.setKey("count");
-	}
-	
-	public void run() {
-		int count = arg1.asInteger();
-		
-		DoubleJungleManager djm = new DoubleJungleManager();
-		Jungle jungle1 = djm.getJungle1();
-		Jungle jungle2 = djm.getJungle2();
-		JungleTree tree1 = jungle1.getTreeByName("tree");
-		JungleTree tree2 = jungle2.getTreeByName("tree");
-		
-		Node node1 = tree1.getRootNode();
-		Node node2 = tree2.getRootNode();
-		Children<Node> chs1 = node1.getChildren();
-		Children<Node> chs2 = node2.getChildren();
-		
-		Iterator<Node> iter1 = chs1.iterator();
-		Iterator<Node> iter2 = chs2.iterator();
-		
-		for(; iter1.hasNext() && iter2.hasNext();) {
-			Node n1 = iter1.next();
-			Node n2 = iter2.next();
-			ByteBuffer b1 = n1.getAttributes().get("key");
-			ByteBuffer b2 = n2.getAttributes().get("key");
-			String str1 = new String(b1.array());
-			String str2 = new String(b2.array());
-			if(!str1.equals(str2)) {
-				System.out.println("Failed ");
-				System.out.println("str1 "+ str1);
-				System.out.println("str2 "+ str2);
-				System.exit(0);
-			} else { 
-				System.out.println("success: " + str1);
-			}
-		}
-		
-	}
-
-}
--- a/src/test/alice/jungle/codesegment/CopyAttrJungle2.java	Sun Jul 14 21:46:40 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-package test.alice.jungle.codesegment;
-
-import java.io.IOException;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-import jungle.test.bbs.JungleManager;
-import jungle.test.core.practice.PrintChildrenAttribute;
-import alice.codesegment.CodeSegment;
-import alice.datasegment.CommandType;
-import alice.datasegment.Receiver;
-import alice.jungle.datasegment.store.operations.DefaultTreeOperationLogContainer;
-
-public class CopyAttrJungle2 extends CodeSegment {
-	
-	Receiver logReceiver = ids.create(CommandType.TAKE);
-	Receiver countReceiver = ids.create(CommandType.TAKE);
-	
-	public CopyAttrJungle2() {
-		logReceiver.setKey("log");
-		countReceiver.setKey("count2");
-	}
-
-	public void run() {
-		System.out.println("CopyAttrJungle2");
-		int count = countReceiver.asInteger();
-		DefaultTreeOperationLogContainer container = logReceiver.asClass(DefaultTreeOperationLogContainer.class);
-		DefaultTreeOperationLog log = null;
-		try {
-			log = container.convert();
-		} catch (IOException e) {
-			e.printStackTrace();
-			System.exit(0);
-		}
-		String treeName = container.getTreeName();
-		DoubleJungleManager djm = new DoubleJungleManager();
-		Jungle jungle2 = djm.getJungle2();
-		JungleTree tree = jungle2.getTreeByName(treeName);
-		
-		JungleTreeEditor editor = tree.getTreeEditor();
-		Either<Error, JungleTreeEditor> either = djm.edit(editor, log);
-		if (either.isA()) {
-			throw new IllegalStateException();				
-		}
-		editor = either.b();
-		editor.success();
-		new CheckDoubleTreeAttr();
-		ods.update("count", count);
-	}
-	
-}
--- a/src/test/alice/jungle/codesegment/DoubleJungleManager.java	Sun Jul 14 21:46:40 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-package test.alice.jungle.codesegment;
-
-import java.nio.ByteBuffer;
-
-import alice.jungle.core.NetworkDefaultJungle;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DefaultTreeOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-
-public class DoubleJungleManager {
-
-	static Jungle jungle1 = new NetworkDefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser()), "");
-	static Jungle jungle2 = new NetworkDefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser()), "");
-	
-	
-	public DoubleJungleManager() {
-		
-	}
-	
-	public Jungle getJungle1() {
-		return jungle1;
-	}
-	
-	public Jungle getJungle2() {
-		return jungle2;
-	}
-	
-	
-	public Either<Error, JungleTreeEditor> edit(JungleTreeEditor _editor ,TreeOperationLog _log) {
-		JungleTreeEditor editor = _editor;
-		Either<Error, JungleTreeEditor> either = null;
-		for (TreeOperation op : _log) { 
-			either = _edit(editor, op);
-			if(either.isA()) {
-				return either;
-			}
-			editor = either.b();
-		}
-		return either;
-	}
-	
-	private Either<Error, JungleTreeEditor> _edit(JungleTreeEditor editor,
-			TreeOperation op) {
-		NodePath path = op.getNodePath();
-		NodeOperation nodeOp = op.getNodeOperation();
-		Command c = nodeOp.getCommand();
-		String key = "";
-		switch (c) {
-		case PUT_ATTRIBUTE:
-			key = nodeOp.getKey();
-			ByteBuffer value = nodeOp.getValue();
-			return editor.putAttribute(path, key, value);
-		case DELETE_ATTRIBUTE:
-			key = nodeOp.getKey();
-			return editor.deleteAttribute(path, key);
-		case APPEND_CHILD:
-			return editor.addNewChildAt(path, 0);
-		case DELETE_CHILD:
-			return editor.deleteChildAt(path, 0);
-		}
-		return null;
-	}
-}
--- a/src/test/alice/jungle/codesegment/HashSetConvertTest.java	Sun Jul 14 21:46:40 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-package test.alice.jungle.codesegment;
-
-import java.util.HashSet;
-
-import org.msgpack.annotation.Message;
-
-import alice.codesegment.CodeSegment;
-import alice.datasegment.CommandType;
-import alice.datasegment.Receiver;
-
-public class HashSetConvertTest extends CodeSegment {
-	
-	Receiver hash = ids.create(CommandType.TAKE);
-
-	public HashSetConvertTest() {
-		hash.setKey("hash");
-	}
-	
-	public static void main(String[] args) {
-		HashSetDataSegment h = new HashSetDataSegment();
-		h.hash.add("test1");
-		h.hash.add("test2");
-		
-		HashSetConvertTest cs = new HashSetConvertTest();
-		cs.ods.put("hash", h);
-	}
-	
-	public void run() {
-		HashSetDataSegment h = hash.asClass(HashSetDataSegment.class);
-		for(String s : h.hash ) {
-			System.out.println("s : "+s);
-		}
-		System.exit(0);
-	}
-	
-	@Message
-	private static class HashSetDataSegment {
-		public HashSet<String> hash = new HashSet<String>();		
-		public HashSetDataSegment() {}
-	}
-}
--- a/src/test/alice/jungle/codesegment/LocalDoubleJungleTree.java	Sun Jul 14 21:46:40 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-package test.alice.jungle.codesegment;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
-
-public class LocalDoubleJungleTree {
-
-	public static void main(String[] args) {
-		System.out.println("LocalDoubleJungleTree");
-		DoubleJungleManager djm = new DoubleJungleManager();
-		Jungle jungle1 = djm.getJungle1();
-		Jungle jungle2 = djm.getJungle2();
-		jungle1.createNewTree("tree");
-		jungle2.createNewTree("tree");
-		
-		PutAttrJungle1 cs = new PutAttrJungle1();
-		cs.ods.update("count1", 0);
-		
-	}
-
-}
--- a/src/test/alice/jungle/codesegment/PutAttrJungle1.java	Sun Jul 14 21:46:40 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-package test.alice.jungle.codesegment;
-
-import java.nio.ByteBuffer;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-import alice.codesegment.CodeSegment;
-import alice.datasegment.CommandType;
-import alice.datasegment.Receiver;
-
-public class PutAttrJungle1 extends CodeSegment {
-	
-	Receiver arg1 = ids.create(CommandType.TAKE);
-	
-	public PutAttrJungle1() {
-		arg1.setKey("count1");
-	}
-	
-	public void run() {
-		System.out.println("PutAttrJungle1");
-		int count = arg1.asInteger();
-		Jungle jungle1 = new DoubleJungleManager().getJungle1();
-		JungleTree tree = jungle1.getTreeByName("tree");
-		JungleTreeEditor editor = tree.getTreeEditor();
-		DefaultNodePath root = new DefaultNodePath();
-		Either<Error, JungleTreeEditor> either =  editor.addNewChildAt(root, 0);
-		if(either.isA()) {
-			throw new IllegalStateException();
-		}
-		editor = either.b();
-		either = editor.putAttribute(root.add(0), "key", ByteBuffer.wrap("message".getBytes()));
-		if(either.isA()) {
-			throw new IllegalStateException();
-		}
-		editor = either.b();
-		editor.success();
-		
-		new CopyAttrJungle2();
-		ods.update("count2", count);
-		
-	}
-
-}