changeset 82:60d28fedcbf2

Remove unnecessary files and move some files
author one
date Wed, 16 Oct 2013 20:53:44 +0900
parents b9dd8ec0e66e
children b3ccefdf2b43
files 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/codesegment/local/HasFieldCodeSegment.java src/jungle/test/codesegment/local/StartLocalCodeSegment.java src/jungle/test/codesegment/log/practice/StartCodeSegment.java src/jungle/test/codesegment/log/practice/TestCodeSegment.java src/jungle/test/codesegment/log/practice/TestLocalAlice.java src/jungle/test/codesegment/operation/ShowAttribute.java src/jungle/test/codesegment/operation/StartJungleCodeSegment.java src/jungle/test/codesegment/operation/TestPutAttributeCodeSegment.java src/jungle/test/codesegment/persistence/TestJungle.java src/jungle/test/codesegment/remote/ClientCodeSegment.java src/jungle/test/codesegment/remote/ClientFirstSetKey.java src/jungle/test/codesegment/remote/HostCodeSegment.java src/jungle/test/codesegment/remote/HostFirstPut.java src/jungle/test/codesegment/remote/StartClientCodeSegment.java src/jungle/test/codesegment/remote/StartHostCodeSegment.java src/jungle/test/core/practice/LogReadCodeSegment.java src/jungle/test/core/practice/LogSendTest.java src/jungle/test/core/practice/PrintChildrenAttribute.java src/jungle/test/functionalJava/ListTest.java src/jungle/test/operations/messagepack/PackOperationLog.java src/test/java/alice/codesegment/local/HasFieldCodeSegment.java src/test/java/alice/codesegment/local/StartLocalCodeSegment.java src/test/java/alice/codesegment/remote/ClientCodeSegment.java src/test/java/alice/codesegment/remote/ClientFirstSetKey.java src/test/java/alice/codesegment/remote/HostCodeSegment.java src/test/java/alice/codesegment/remote/HostFirstPut.java src/test/java/alice/codesegment/remote/StartClientCodeSegment.java src/test/java/alice/codesegment/remote/StartHostCodeSegment.java src/test/java/alice/jungle/CheckDoubleTreeAttr.java src/test/java/alice/jungle/CopyAttrJungle2.java src/test/java/alice/jungle/DoubleJungleManager.java src/test/java/alice/jungle/HashSetConvertTest.java src/test/java/alice/jungle/LocalDoubleJungleTree.java src/test/java/alice/jungle/PutAttrJungle1.java src/test/java/alice/jungle/log/example/ListTest.java src/test/java/alice/jungle/log/example/LogReadCodeSegment.java src/test/java/alice/jungle/log/example/LogSendTest.java src/test/java/alice/jungle/log/example/PrintChildrenAttribute.java src/test/java/alice/jungle/log/example/StartCodeSegment.java src/test/java/alice/jungle/log/example/TestCodeSegment.java src/test/java/alice/jungle/log/example/TestLocalAlice.java src/test/java/alice/jungle/log/example/codesement/operation/ShowAttribute.java src/test/java/alice/jungle/log/example/codesement/operation/StartJungleCodeSegment.java src/test/java/alice/jungle/log/example/codesement/operation/TestPutAttributeCodeSegment.java
diffstat 50 files changed, 1059 insertions(+), 1130 deletions(-) [+]
line wrap: on
line diff
--- a/src/jungle/test/alice/CheckDoubleTreeAttr.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-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);
-			}
-		}
-		
-	}
-
-}
--- a/src/jungle/test/alice/CopyAttrJungle2.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-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.app.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.container.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/jungle/test/alice/DoubleJungleManager.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-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;
-	}
-}
--- a/src/jungle/test/alice/HashSetConvertTest.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-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() {}
-	}
-}
--- a/src/jungle/test/alice/LocalDoubleJungleTree.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-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);
-		
-	}
-
-}
--- a/src/jungle/test/alice/PutAttrJungle1.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-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/codesegment/local/HasFieldCodeSegment.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-package jungle.test.codesegment.local;
-
-import alice.codesegment.CodeSegment;
-import alice.datasegment.CommandType;
-import alice.datasegment.Receiver;
-
-public class HasFieldCodeSegment extends CodeSegment {
-	
-	Receiver arg1 = ids.create(CommandType.TAKE);
-	String str;
-	
-	public HasFieldCodeSegment(String s) {
-		str = s;
-	}
-	
-	
-	public void run() {
-		int count = arg1.asInteger();
-		System.out.println("-HasFieldCodeSegment- : "+str);
-		System.exit(0);
-	}
-
-}
--- a/src/jungle/test/codesegment/local/StartLocalCodeSegment.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-package jungle.test.codesegment.local;
-
-public class StartLocalCodeSegment {
-	
-	public static void main(String[] arg) {
-		HasFieldCodeSegment cs = new HasFieldCodeSegment("test");
-		cs.arg1.setKey("count");
-		cs.ods.update("count", 0);
-	}
-
-}
--- a/src/jungle/test/codesegment/log/practice/StartCodeSegment.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-package jungle.test.codesegment.log.practice;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.LinkedList;
-import java.util.List;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.AppendChildAtOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DefaultTreeOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteAttributeOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation;
-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 alice.codesegment.CodeSegment;
-import alice.jungle.datasegment.store.container.DefaultTreeOperationLogContainer;
-
-public class StartCodeSegment extends CodeSegment {
-
-	@Override
-	public void run() {
-		System.out.println("run StartCodeSegment");
-		
-		TestCodeSegment cs = new TestCodeSegment();
-		cs.arg1.setKey("log"); 
-		System.out.println("create TestCodeSegment");
-
-		DefaultTreeOperationLog log = getSampleOperationLog();
-		DefaultTreeOperationLogContainer logContainer = new DefaultTreeOperationLogContainer();
-		try {
-			logContainer.unconvert(log);
-			ods.update("local", "log", logContainer);
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
- 	}
-	
-	public DefaultTreeOperationLog getSampleOperationLog() {
-		String key = "hoge";
-		ByteBuffer b = ByteBuffer.wrap("messagepack value".getBytes());
-		DefaultNodePath nodePath1 = new DefaultNodePath();
-		nodePath1 = nodePath1.add(1);
-		DefaultNodePath nodePath2 = nodePath1.add(2);
-		AppendChildAtOperation appendChildOp1 = new AppendChildAtOperation(1);
-		AppendChildAtOperation appendChildOp2 = new AppendChildAtOperation(2);
-		PutAttributeOperation putOp = new PutAttributeOperation(key, b);
-		DeleteAttributeOperation deleteOp = new DeleteAttributeOperation("hoge");
-		DeleteChildAtOperation deleteChild = new DeleteChildAtOperation(2);
-		List<TreeOperation> list = new LinkedList<TreeOperation>();
-		list.add(new DefaultTreeOperation(new DefaultNodePath(), appendChildOp1));
-		list.add(new DefaultTreeOperation(nodePath1, appendChildOp2));
-		list.add(new DefaultTreeOperation(nodePath2, putOp));
-		list.add(new DefaultTreeOperation(nodePath2, deleteOp));
-		list.add(new DefaultTreeOperation(nodePath1, deleteChild));
-		DefaultTreeOperationLog log = new DefaultTreeOperationLog(list, list.size());
-		return log;
-	}
-
-}
--- a/src/jungle/test/codesegment/log/practice/TestCodeSegment.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-package jungle.test.codesegment.log.practice;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle;
-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.core.Node;
-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.DefaultTreeOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
-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;
-import alice.codesegment.CodeSegment;
-import alice.datasegment.CommandType;
-import alice.datasegment.Receiver;
-import alice.jungle.core.NetworkDefaultJungle;
-import alice.jungle.datasegment.store.container.DefaultTreeOperationLogContainer;
-import alice.jungle.transaction.NetworkDefaultJungleTreeEditor;
-import alice.test.topology.aquarium.FishPoint;
-
-import org.msgpack.MessagePack;
-import org.msgpack.type.Value;
-
-public class TestCodeSegment extends CodeSegment {
-	
-	static Jungle jungle = new NetworkDefaultJungle(null,"hoge",new DefaultTreeEditor(new DefaultTraverser()), "serverName");
-	
-	// create input datasegment arg1
-	Receiver arg1 = ids.create(CommandType.PEEK);
-	
-	public TestCodeSegment() {
-		arg1.setKey("log");
-		jungle.createNewTree("tree");
-	}
-	
-	@Override
-	public void run() {
-		System.out.println("type = " + arg1.type);
-		System.out.println("index = " + arg1.index);
-		System.out.println("data = " + arg1.getVal());
-		System.out.println(((Value)arg1.getVal()).getType());
-		
-		DefaultTreeOperationLogContainer convertedLogContainer = arg1.asClass(DefaultTreeOperationLogContainer.class);
-		TreeOperationLog convertedLog = null;
-		try {
-			convertedLog = convertedLogContainer.convert();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		printLog(convertedLog);
-
-		JungleTree tree = jungle.getTreeByName("tree");
-		NetworkDefaultJungleTreeEditor editor = (NetworkDefaultJungleTreeEditor) tree.getTreeEditor();
-/*
-		JungleTreeEditor tEditor = editor.setNewLogAndGetEditor(convertedLog);
-
-		Either<Error,JungleTreeEditor> either = tEditor.success();
-		if (either.isA()) {
-			throw new IllegalStateException();
-		}
-*/
-		System.exit(0);
-	}
-	
-	public void printLog(TreeOperationLog log) {
-		for (TreeOperation treeOp : log) {
-			NodePath path = treeOp.getNodePath();
-			NodeOperation nodeOp = treeOp.getNodeOperation();
-			Command c = nodeOp.getCommand();
-			String str = "";
-			switch (c) {
-			case PUT_ATTRIBUTE:
-				String k = nodeOp.getKey();
-				ByteBuffer value = nodeOp.getValue();
-				if (value.limit() < 100) {
-					str = String.format("key:%s,value:%s", k,
-							new String(value.array()));
-				} else {
-					str = String.format("key:%s,value:%d", k, value.limit());
-				}
-				break;
-			case DELETE_ATTRIBUTE:
-				str = String.format("key:%s", nodeOp.getKey());
-				break;
-			case APPEND_CHILD:
-				str = String.format("pos:%d", nodeOp.getPosition());
-				break;
-			case DELETE_CHILD:
-				str = String.format("pos:%d", nodeOp.getPosition());
-				break;
-			}
-			System.out.println(String.format("[%s:%s]", c,  str));
-			System.out.println("path:");
-			for (int i: path ) {
-				System.out.println(i);
-			}
-		}
-	}
-
-}
--- a/src/jungle/test/codesegment/log/practice/TestLocalAlice.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-package jungle.test.codesegment.log.practice;
-
-import alice.daemon.AliceDaemon;
-import alice.daemon.Config;
-
-public class TestLocalAlice {
-	public static void main(String args[]) {
-		new AliceDaemon(new Config(args)).listen(); // logger off
-		new StartCodeSegment().execute();
-	}
-	
-}
--- a/src/jungle/test/codesegment/operation/ShowAttribute.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-package jungle.test.codesegment.operation;
-
-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.core.Children;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
-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 jungle.app.bbs.JungleManager;
-import alice.codesegment.CodeSegment;
-import alice.datasegment.CommandType;
-import alice.datasegment.Receiver;
-
-public class ShowAttribute extends CodeSegment {
-	
-	Receiver arg1 = ids.create(CommandType.TAKE);
-	
-	public ShowAttribute() {
-		arg1.setKey("show");
-	}
-	
-	public void run() {
-		System.out.println("--ShowAttribute--");
-		
-		Jungle jungle = JungleManager.getJungle();
-		JungleTree tree = jungle.getTreeByName("tree");
-		Node node = tree.getRootNode();
-		Children<Node> chs = node.getChildren();
-		System.out.println("children size : "+chs.size());
-		for(Node n : chs) {
-			ByteBuffer b = n.getAttributes().get("key1");
-			System.out.println(new String(b.array()));
-		}
-		
-		System.exit(0);
-		
-		
-	}
-
-}
--- a/src/jungle/test/codesegment/operation/StartJungleCodeSegment.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-package jungle.test.codesegment.operation;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-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.store.operations.DefaultTreeOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
-import jungle.app.bbs.JungleManager;
-import alice.codesegment.CodeSegment;
-import alice.jungle.datasegment.store.container.DefaultTreeOperationContainer;
-
-public class StartJungleCodeSegment {
-	
-	public static void main(String[] args) {
-		System.out.println("--StartJungleCodeSegment--");
-		
-		JungleTree tree = JungleManager.createNewTree("tree");
-		JungleTreeEditor editor = tree.getTreeEditor();
-		DefaultNodePath path = new DefaultNodePath();
-		path = path.add(0);
-		editor.addNewChildAt(path, 0);
-		editor.success();
-		
-		TestPutAttributeCodeSegment cs = new TestPutAttributeCodeSegment();
-		DefaultTreeOperation treeOp = cs.getSampleOperation("message0");
-		DefaultTreeOperationContainer treeOperationContainer = new DefaultTreeOperationContainer();
-		try {
-			treeOperationContainer.unconvert(treeOp);
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		cs.ods.update("local", "log", treeOperationContainer);
-	}
-	
-}
--- a/src/jungle/test/codesegment/operation/TestPutAttributeCodeSegment.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-package jungle.test.codesegment.operation;
-
-import java.io.IOException;
-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.Command;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
-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.util.Either;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-import jungle.app.bbs.JungleManager;
-
-import org.msgpack.type.Value;
-
-import alice.codesegment.CodeSegment;
-import alice.datasegment.CommandType;
-import alice.datasegment.Receiver;
-import alice.jungle.datasegment.store.container.DefaultTreeOperationContainer;
-import alice.jungle.datasegment.store.container.DefaultTreeOperationLogContainer;
-import alice.jungle.transaction.NetworkDefaultJungleTreeEditor;
-
-public class TestPutAttributeCodeSegment extends CodeSegment {
-
-	Receiver arg1 = ids.create(CommandType.TAKE);
-
-	public TestPutAttributeCodeSegment() {
-		arg1.setKey("log");
-	}
-
-	public void run() {
-		System.out.println("--TestPutAttributeCodeSegment--");
-		DefaultTreeOperationContainer convertedOpContainer = arg1
-				.asClass(DefaultTreeOperationContainer.class);
-		TreeOperation convertedOp = null;
-		try {
-			convertedOp = convertedOpContainer.convert();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		Jungle jungle = JungleManager.getJungle();
-		JungleTree tree = jungle.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();
-		editor.success();
-		NetworkDefaultJungleTreeEditor nEditor = (NetworkDefaultJungleTreeEditor) tree
-				.getTreeEditor();
-		either = edit(nEditor, convertedOp);
-		if (either.isA()) {
-			throw new IllegalStateException();
-		}
-		editor = either.b();
-		editor.success();
-		if (arg1.index >= 10) {
-			new ShowAttribute();
-			ods.update("local", "show", 1);
-			return;
-		}
-		TestPutAttributeCodeSegment cs = new TestPutAttributeCodeSegment();
-		DefaultTreeOperation treeOp = cs.getSampleOperation("message"+ arg1.index);
-		DefaultTreeOperationContainer treeOperationContainer = new DefaultTreeOperationContainer();
-		try {
-			treeOperationContainer.unconvert(treeOp);
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		ods.update("local", "log", treeOperationContainer);
-	}
-
-	public DefaultTreeOperation getSampleOperation(String message) {
-		/* Create TreeOperation */
-		String key = "key1";
-		ByteBuffer b = ByteBuffer.wrap(message.getBytes());
-		PutAttributeOperation op = new PutAttributeOperation(key, b);
-		DefaultNodePath p = new DefaultNodePath();
-		p = p.add(0);
-		DefaultTreeOperation treeOp = new DefaultTreeOperation(p, op);
-		return treeOp;
-	}
-
-	public Either<Error, JungleTreeEditor> edit(JungleTreeEditor editor,
-			TreeOperation op) {
-		NodePath path = op.getNodePath();
-		NodeOperation nodeOp = op.getNodeOperation();
-		Command c = nodeOp.getCommand();
-		String str = "";
-		String key = "";
-		switch (c) {
-		case PUT_ATTRIBUTE:
-			key = nodeOp.getKey();
-			ByteBuffer value = nodeOp.getValue();
-			if (value.limit() < 100) {
-				str = String.format("key:%s,value:%s", key,
-						new String(value.array()));
-			} else {
-				str = String.format("key:%s,value:%d", key, value.limit());
-			}
-			return editor.putAttribute(path, key, value);
-		case DELETE_ATTRIBUTE:
-			key = nodeOp.getKey();
-			str = String.format("key:%s", nodeOp.getKey());
-			return editor.deleteAttribute(path, key);
-		case APPEND_CHILD:
-			str = String.format("pos:%d", nodeOp.getPosition());
-			return editor.addNewChildAt(path, 0);
-		case DELETE_CHILD:
-			str = String.format("pos:%d", nodeOp.getPosition());
-			return editor.deleteChildAt(path, 0);
-		}
-		return null;
-	}
-}
--- a/src/jungle/test/codesegment/persistence/TestJungle.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-package jungle.test.codesegment.persistence;
-
-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.TreeEditor;
-import jungle.app.bbs.JungleManager;
-import jungle.test.codesegment.operation.TestPutAttributeCodeSegment;
-
-public class TestJungle {
-	
-	public static void main(String[] args) {
-		JungleTree tree = JungleManager.createNewTree("tree1");
-		JungleTreeEditor editor = tree.getTreeEditor();
-
-		new TestPutAttributeCodeSegment().execute();
-		
-	}
-
-}
--- a/src/jungle/test/codesegment/remote/ClientCodeSegment.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-package jungle.test.codesegment.remote;
-
-import alice.codesegment.CodeSegment;
-import alice.datasegment.CommandType;
-import alice.datasegment.Receiver;
-
-public class ClientCodeSegment extends CodeSegment {
-	
-	Receiver arg1 = ids.create(CommandType.TAKE);
-	
-	public void run() {
-		System.out.println("--ClientCodeSegment--");
-		System.out.println("from : " + arg1.from);
-		System.out.println("index : "+ arg1.index);
-		int num = arg1.asInteger();
-		System.out.println("num : "+num);
-		num++;
-		ods.put("remote", "num", num);
-		System.exit(0);
-		
-	}
-
-}
--- a/src/jungle/test/codesegment/remote/ClientFirstSetKey.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-package jungle.test.codesegment.remote;
-
-import alice.codesegment.CodeSegment;
-
-public class ClientFirstSetKey extends CodeSegment {
-	
-	public void run() {
-		System.out.println("--ClientFirstSetKey--");
-		ClientCodeSegment cs = new ClientCodeSegment();
-		cs.arg1.setKey("remote","num");
-	}
-}
--- a/src/jungle/test/codesegment/remote/HostCodeSegment.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-package jungle.test.codesegment.remote;
-
-import alice.codesegment.CodeSegment;
-import alice.datasegment.CommandType;
-import alice.datasegment.Receiver;
-
-public class HostCodeSegment extends CodeSegment {
-	
-	Receiver arg1 = ids.create(CommandType.TAKE);
-	
-	public void run() {
-		System.out.println("--HostCodeSegment--");
-		System.out.println("index : "+ arg1.index);
-		System.out.println("from : "+ arg1.from);
-		int num = arg1.asInteger();
-		System.out.println("num : "+ num);
-		num++;
-		ods.put("local", "num", num);
-		System.exit(0);
-/*
-		HostCodeSegment cs = new HostCodeSegment();
-		cs.arg1.setKey("local","num");
-*/
-	}
-}
--- a/src/jungle/test/codesegment/remote/HostFirstPut.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-package jungle.test.codesegment.remote;
-
-import alice.codesegment.CodeSegment;
-
-public class HostFirstPut extends CodeSegment {
-	
-	public void run() {
-		System.out.println("--HostFirstPut--");
-		ods.put("local", "num", 0);
-		HostCodeSegment cs = new HostCodeSegment();
-		cs.arg1.setKey("local", "num", 1);
-	}
-}
--- a/src/jungle/test/codesegment/remote/StartClientCodeSegment.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-package jungle.test.codesegment.remote;
-
-import alice.datasegment.DataSegment;
-import alice.test.codesegment.remote.TestRemoteConfig;
-
-public class StartClientCodeSegment { 
-	
-	static public void main(String[] args) {
-		System.out.println("--StartClientCodeSegment--");
-		TestRemoteConfig conf = new TestRemoteConfig(args);
-		DataSegment.connect("remote", "", conf.hostname, conf.connectPort);
-		new ClientFirstSetKey().execute();
-	}	
-}
--- a/src/jungle/test/codesegment/remote/StartHostCodeSegment.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-package jungle.test.codesegment.remote;
-
-import alice.daemon.AliceDaemon;
-import alice.jungle.remote.RemoteConfig;
-
-public class StartHostCodeSegment {
-	
-	static public void main(String[] args) {
-		System.out.println("--StartHostCodeSegment--");
-		RemoteConfig conf = new RemoteConfig(args);
-		new AliceDaemon(conf).listen();
-		new HostFirstPut().execute();
-	}
-}
--- a/src/jungle/test/core/practice/LogReadCodeSegment.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-package jungle.test.core.practice;
-
-import java.io.IOException;
-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.Command;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-import jungle.app.bbs.JungleManager;
-import alice.codesegment.CodeSegment;
-import alice.datasegment.CommandType;
-import alice.datasegment.Receiver;
-import alice.jungle.datasegment.store.container.DefaultTreeOperationLogContainer;
-
-public class LogReadCodeSegment extends CodeSegment {
-	
-	Receiver arg1 = ids.create(CommandType.TAKE);
-	
-	public LogReadCodeSegment() {
-		arg1.setKey("log");
-	}
-
-	public void run() {
-		System.out.println("--LogReadCodeSegment--");
-		
-		DefaultTreeOperationLogContainer container = arg1.asClass(DefaultTreeOperationLogContainer.class);
-		DefaultTreeOperationLog log = null;
-		try {
-			log = container.convert();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		Jungle jungle = JungleManager.getJungle();
-		JungleTree tree = jungle.getTreeByName("tree");
-		JungleTreeEditor editor = tree.getTreeEditor();
-		Either<Error, JungleTreeEditor> either = edit(editor, log);
-		if (either.isA()) {
-			throw new IllegalStateException();				
-		}
-		editor = either.b();
-		editor.success();
-		new PrintChildrenAttribute("key1");
-		ods.update("key1", "key1");
-	}
-	
-	private 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 str = "";
-		String key = "";
-		switch (c) {
-		case PUT_ATTRIBUTE:
-			key = nodeOp.getKey();
-			ByteBuffer value = nodeOp.getValue();
-			if (value.limit() < 100) {
-				str = String.format("key:%s,value:%s", key,
-						new String(value.array()));
-			} else {
-				str = String.format("key:%s,value:%d", key, value.limit());
-			}
-			return editor.putAttribute(path, key, value);
-		case DELETE_ATTRIBUTE:
-			key = nodeOp.getKey();
-			str = String.format("key:%s", nodeOp.getKey());
-			return editor.deleteAttribute(path, key);
-		case APPEND_CHILD:
-			str = String.format("pos:%d", nodeOp.getPosition());
-			return editor.addNewChildAt(path, 0);
-		case DELETE_CHILD:
-			str = String.format("pos:%d", nodeOp.getPosition());
-			return editor.deleteChildAt(path, 0);
-		}
-		return null;
-	}
-}
--- a/src/jungle/test/core/practice/LogSendTest.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-package jungle.test.core.practice;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import alice.jungle.datasegment.store.container.DefaultTreeOperationLogContainer;
-import alice.jungle.transaction.NetworkDefaultJungleTreeEditor;
-
-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.store.impl.logger.TreeOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-import jungle.app.bbs.JungleManager;
-
-public class LogSendTest {
-	
-	public static void main(String[] args) {
-		System.out.println("Start LogSendTest");
-		JungleTree tree = JungleManager.createNewTree("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), "key1", ByteBuffer.wrap("first message".getBytes()));
-		if(either.isA()) {
-			throw new IllegalStateException();
-		}
-		NetworkDefaultJungleTreeEditor nEditor = (NetworkDefaultJungleTreeEditor) either.b();
-		TreeOperationLog log = nEditor.getTreeOperationLog();
-		
-		DefaultTreeOperationLogContainer container = new DefaultTreeOperationLogContainer();
-		try {
-			container.unconvert(log);
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		LogReadCodeSegment cs = new LogReadCodeSegment();
-		cs.ods.update("log", container);
-	}
-
-}
--- a/src/jungle/test/core/practice/PrintChildrenAttribute.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-package jungle.test.core.practice;
-
-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.core.Children;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
-import jungle.app.bbs.JungleManager;
-import alice.codesegment.CodeSegment;
-import alice.datasegment.CommandType;
-import alice.datasegment.Receiver;
-
-public class PrintChildrenAttribute extends CodeSegment {
-	
-	Receiver key = ids.create(CommandType.TAKE);
-	
-	public PrintChildrenAttribute(String _key) {
-		key.setKey(_key);
-	}
-	
-	public void run() {
-		System.out.println("--PrintChildrenAttribute--");
-		String k = key.asString();
-		System.out.println("key : "+ k);
-		Jungle jungle = JungleManager.getJungle();
-		JungleTree tree = jungle.getTreeByName("tree");
-		Node node = tree.getRootNode();
-		Children<Node> chs = node.getChildren();
-		System.out.println("children size : "+chs.size());
-		for(Node n : chs) {
-			ByteBuffer b = n.getAttributes().get(k);
-			System.out.println(new String(b.array()));
-		}
-		
-		System.exit(0);
-
-	}
-	
-
-}
--- a/src/jungle/test/functionalJava/ListTest.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-package jungle.test.functionalJava;
-
-import java.util.Iterator;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import fj.P2;
-import fj.data.List;
-
-public class ListTest {
-	
-	public static void main(String[] args) {
-		List<Integer> list = List.nil();
-		list = list.cons(2);
-		list = list.cons(3);
-		list = list.cons(5);
-		list = list.snoc(1);
-		System.out.println("list :"+list);		
-		System.out.println("list.reverse() :"+list.reverse());		
-		System.out.println("list.index(0) :"+list.index(0));		
-		System.out.println("list.head() :"+ list.head());		
-		System.out.println("list.tail() :"+list.tail());		
-		System.out.println("list.splitAt(2)");
-		P2<List<Integer>, List<Integer>> p2 = list.splitAt(2);
-		List<Integer> list1 = p2._1();
-		List<Integer> list2 = p2._2();
-		System.out.println(list1);
-		System.out.println(list2);
-		
-		final int INSERT_NUM = 4;
-		list = insertInteger(list, INSERT_NUM);
-		System.out.println("newList :"+ list);
-		
-		
-		
-	}
-	
-	public static List<Integer> insertInteger(List<Integer> list, final int insertNum) {
-		int count = 0;
-		for(Iterator<Integer> iter = list.iterator(); iter.hasNext();){
-			int num = iter.next();
-			if(insertNum > num ) {
-				break;
-			}
-			count++;
-		}
-		P2<List<Integer>, List<Integer>> p2 = list.splitAt(count);
-		List<Integer> newList = List.nil();
-		newList = p2._2().cons(insertNum);
-		newList = p2._1().append(newList);
-		return newList;
-	}
-	
-
-}
--- a/src/jungle/test/operations/messagepack/PackOperationLog.java	Wed Oct 16 19:57:18 2013 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-package jungle.test.operations.messagepack;
-
-import java.io.IOException;
-import java.util.Iterator;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
-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;
-
-import org.msgpack.MessagePack;
-import org.msgpack.type.Value;
-
-import alice.jungle.operations.NetworkAppendChildAtOperation;
-import alice.jungle.operations.NetworkNodePath;
-import alice.jungle.operations.NetworkTreeOperationLog;
-
-public class PackOperationLog {
-
-	public static void main(String[] args) throws IOException {
-		MessagePack msgpack = new MessagePack();
-		final NetworkTreeOperationLog n = new NetworkTreeOperationLog();
-		NetworkNodePath p = new NetworkNodePath();
-		p = p.add(1).add(2).add(3);
-		System.out.println(p.toString());
-		NetworkTreeOperationLog n2 = n.add(p, new NetworkAppendChildAtOperation(1));
-		System.out.println("n.length() = "+n.length());
-
-		Value v = msgpack.unconvert(n2);
-		final NetworkTreeOperationLog log = msgpack.convert(v, NetworkTreeOperationLog.class);
-
-		System.out.println("nn.lenght() = " + log.length());
-		ChangeList list = new ChangeList(){
-			@Override
-			public Iterator<TreeOperation> iterator(){
-				return log.iterator();
-			}
-		};
-		for (TreeOperation op : list) {
-			NodePath nPath = op.getNodePath();
-			NodeOperation nodeOp = op.getNodeOperation();
-			Command c = nodeOp.getCommand();
-			System.out.println("Command : "+ c.toString());
-			System.out.println(nPath.toString());
-		}
-	}
-	
-	
-	
-	
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/codesegment/local/HasFieldCodeSegment.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,23 @@
+package test.java.alice.codesegment.local;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class HasFieldCodeSegment extends CodeSegment {
+	
+	Receiver arg1 = ids.create(CommandType.TAKE);
+	String str;
+	
+	public HasFieldCodeSegment(String s) {
+		str = s;
+	}
+	
+	
+	public void run() {
+		int count = arg1.asInteger();
+		System.out.println("-HasFieldCodeSegment- : "+str);
+		System.exit(0);
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/codesegment/local/StartLocalCodeSegment.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,11 @@
+package test.java.alice.codesegment.local;
+
+public class StartLocalCodeSegment {
+	
+	public static void main(String[] arg) {
+		HasFieldCodeSegment cs = new HasFieldCodeSegment("test");
+		cs.arg1.setKey("count");
+		cs.ods.update("count", 0);
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/codesegment/remote/ClientCodeSegment.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,23 @@
+package test.java.alice.codesegment.remote;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class ClientCodeSegment extends CodeSegment {
+	
+	Receiver arg1 = ids.create(CommandType.TAKE);
+	
+	public void run() {
+		System.out.println("--ClientCodeSegment--");
+		System.out.println("from : " + arg1.from);
+		System.out.println("index : "+ arg1.index);
+		int num = arg1.asInteger();
+		System.out.println("num : "+num);
+		num++;
+		ods.put("remote", "num", num);
+		System.exit(0);
+		
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/codesegment/remote/ClientFirstSetKey.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,12 @@
+package test.java.alice.codesegment.remote;
+
+import alice.codesegment.CodeSegment;
+
+public class ClientFirstSetKey extends CodeSegment {
+	
+	public void run() {
+		System.out.println("--ClientFirstSetKey--");
+		ClientCodeSegment cs = new ClientCodeSegment();
+		cs.arg1.setKey("remote","num");
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/codesegment/remote/HostCodeSegment.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,25 @@
+package test.java.alice.codesegment.remote;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class HostCodeSegment extends CodeSegment {
+	
+	Receiver arg1 = ids.create(CommandType.TAKE);
+	
+	public void run() {
+		System.out.println("--HostCodeSegment--");
+		System.out.println("index : "+ arg1.index);
+		System.out.println("from : "+ arg1.from);
+		int num = arg1.asInteger();
+		System.out.println("num : "+ num);
+		num++;
+		ods.put("local", "num", num);
+		System.exit(0);
+/*
+		HostCodeSegment cs = new HostCodeSegment();
+		cs.arg1.setKey("local","num");
+*/
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/codesegment/remote/HostFirstPut.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,13 @@
+package test.java.alice.codesegment.remote;
+
+import alice.codesegment.CodeSegment;
+
+public class HostFirstPut extends CodeSegment {
+	
+	public void run() {
+		System.out.println("--HostFirstPut--");
+		ods.put("local", "num", 0);
+		HostCodeSegment cs = new HostCodeSegment();
+		cs.arg1.setKey("local", "num", 1);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/codesegment/remote/StartClientCodeSegment.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,14 @@
+package test.java.alice.codesegment.remote;
+
+import alice.datasegment.DataSegment;
+import alice.test.codesegment.remote.TestRemoteConfig;
+
+public class StartClientCodeSegment { 
+	
+	static public void main(String[] args) {
+		System.out.println("--StartClientCodeSegment--");
+		TestRemoteConfig conf = new TestRemoteConfig(args);
+		DataSegment.connect("remote", "", conf.hostname, conf.connectPort);
+		new ClientFirstSetKey().execute();
+	}	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/codesegment/remote/StartHostCodeSegment.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,14 @@
+package test.java.alice.codesegment.remote;
+
+import alice.daemon.AliceDaemon;
+import alice.jungle.remote.RemoteConfig;
+
+public class StartHostCodeSegment {
+	
+	static public void main(String[] args) {
+		System.out.println("--StartHostCodeSegment--");
+		RemoteConfig conf = new RemoteConfig(args);
+		new AliceDaemon(conf).listen();
+		new HostFirstPut().execute();
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/jungle/CheckDoubleTreeAttr.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,58 @@
+package test.java.alice.jungle;
+
+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/test/java/alice/jungle/CopyAttrJungle2.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,56 @@
+package test.java.alice.jungle;
+
+import java.io.IOException;
+
+import test.java.alice.jungle.log.example.PrintChildrenAttribute;
+
+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.app.bbs.JungleManager;
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+import alice.jungle.datasegment.store.container.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/test/java/alice/jungle/DoubleJungleManager.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,74 @@
+package test.java.alice.jungle;
+
+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/test/java/alice/jungle/HashSetConvertTest.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,41 @@
+package test.java.alice.jungle;
+
+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/test/java/alice/jungle/LocalDoubleJungleTree.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,20 @@
+package test.java.alice.jungle;
+
+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/test/java/alice/jungle/PutAttrJungle1.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,47 @@
+package test.java.alice.jungle;
+
+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);
+		
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/jungle/log/example/ListTest.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,54 @@
+package test.java.alice.jungle.log.example;
+
+import java.util.Iterator;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import fj.P2;
+import fj.data.List;
+
+public class ListTest {
+	
+	public static void main(String[] args) {
+		List<Integer> list = List.nil();
+		list = list.cons(2);
+		list = list.cons(3);
+		list = list.cons(5);
+		list = list.snoc(1);
+		System.out.println("list :"+list);		
+		System.out.println("list.reverse() :"+list.reverse());		
+		System.out.println("list.index(0) :"+list.index(0));		
+		System.out.println("list.head() :"+ list.head());		
+		System.out.println("list.tail() :"+list.tail());		
+		System.out.println("list.splitAt(2)");
+		P2<List<Integer>, List<Integer>> p2 = list.splitAt(2);
+		List<Integer> list1 = p2._1();
+		List<Integer> list2 = p2._2();
+		System.out.println(list1);
+		System.out.println(list2);
+		
+		final int INSERT_NUM = 4;
+		list = insertInteger(list, INSERT_NUM);
+		System.out.println("newList :"+ list);
+		
+		
+		
+	}
+	
+	public static List<Integer> insertInteger(List<Integer> list, final int insertNum) {
+		int count = 0;
+		for(Iterator<Integer> iter = list.iterator(); iter.hasNext();){
+			int num = iter.next();
+			if(insertNum > num ) {
+				break;
+			}
+			count++;
+		}
+		P2<List<Integer>, List<Integer>> p2 = list.splitAt(count);
+		List<Integer> newList = List.nil();
+		newList = p2._2().cons(insertNum);
+		newList = p2._1().append(newList);
+		return newList;
+	}
+	
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/jungle/log/example/LogReadCodeSegment.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,98 @@
+package test.java.alice.jungle.log.example;
+
+import java.io.IOException;
+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.Command;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+import jungle.app.bbs.JungleManager;
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+import alice.jungle.datasegment.store.container.DefaultTreeOperationLogContainer;
+
+public class LogReadCodeSegment extends CodeSegment {
+	
+	Receiver arg1 = ids.create(CommandType.TAKE);
+	
+	public LogReadCodeSegment() {
+		arg1.setKey("log");
+	}
+
+	public void run() {
+		System.out.println("--LogReadCodeSegment--");
+		
+		DefaultTreeOperationLogContainer container = arg1.asClass(DefaultTreeOperationLogContainer.class);
+		DefaultTreeOperationLog log = null;
+		try {
+			log = container.convert();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		Jungle jungle = JungleManager.getJungle();
+		JungleTree tree = jungle.getTreeByName("tree");
+		JungleTreeEditor editor = tree.getTreeEditor();
+		Either<Error, JungleTreeEditor> either = edit(editor, log);
+		if (either.isA()) {
+			throw new IllegalStateException();				
+		}
+		editor = either.b();
+		editor.success();
+		new PrintChildrenAttribute("key1");
+		ods.update("key1", "key1");
+	}
+	
+	private 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 str = "";
+		String key = "";
+		switch (c) {
+		case PUT_ATTRIBUTE:
+			key = nodeOp.getKey();
+			ByteBuffer value = nodeOp.getValue();
+			if (value.limit() < 100) {
+				str = String.format("key:%s,value:%s", key,
+						new String(value.array()));
+			} else {
+				str = String.format("key:%s,value:%d", key, value.limit());
+			}
+			return editor.putAttribute(path, key, value);
+		case DELETE_ATTRIBUTE:
+			key = nodeOp.getKey();
+			str = String.format("key:%s", nodeOp.getKey());
+			return editor.deleteAttribute(path, key);
+		case APPEND_CHILD:
+			str = String.format("pos:%d", nodeOp.getPosition());
+			return editor.addNewChildAt(path, 0);
+		case DELETE_CHILD:
+			str = String.format("pos:%d", nodeOp.getPosition());
+			return editor.deleteChildAt(path, 0);
+		}
+		return null;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/jungle/log/example/LogSendTest.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,47 @@
+package test.java.alice.jungle.log.example;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+import alice.jungle.datasegment.store.container.DefaultTreeOperationLogContainer;
+import alice.jungle.transaction.NetworkDefaultJungleTreeEditor;
+
+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.store.impl.logger.TreeOperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+import jungle.app.bbs.JungleManager;
+
+public class LogSendTest {
+	
+	public static void main(String[] args) {
+		System.out.println("Start LogSendTest");
+		JungleTree tree = JungleManager.createNewTree("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), "key1", ByteBuffer.wrap("first message".getBytes()));
+		if(either.isA()) {
+			throw new IllegalStateException();
+		}
+		NetworkDefaultJungleTreeEditor nEditor = (NetworkDefaultJungleTreeEditor) either.b();
+		TreeOperationLog log = nEditor.getTreeOperationLog();
+		
+		DefaultTreeOperationLogContainer container = new DefaultTreeOperationLogContainer();
+		try {
+			container.unconvert(log);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		LogReadCodeSegment cs = new LogReadCodeSegment();
+		cs.ods.update("log", container);
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/jungle/log/example/PrintChildrenAttribute.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,41 @@
+package test.java.alice.jungle.log.example;
+
+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.core.Children;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
+import jungle.app.bbs.JungleManager;
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class PrintChildrenAttribute extends CodeSegment {
+	
+	Receiver key = ids.create(CommandType.TAKE);
+	
+	public PrintChildrenAttribute(String _key) {
+		key.setKey(_key);
+	}
+	
+	public void run() {
+		System.out.println("--PrintChildrenAttribute--");
+		String k = key.asString();
+		System.out.println("key : "+ k);
+		Jungle jungle = JungleManager.getJungle();
+		JungleTree tree = jungle.getTreeByName("tree");
+		Node node = tree.getRootNode();
+		Children<Node> chs = node.getChildren();
+		System.out.println("children size : "+chs.size());
+		for(Node n : chs) {
+			ByteBuffer b = n.getAttributes().get(k);
+			System.out.println(new String(b.array()));
+		}
+		
+		System.exit(0);
+
+	}
+	
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/jungle/log/example/StartCodeSegment.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,60 @@
+package test.java.alice.jungle.log.example;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.LinkedList;
+import java.util.List;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.AppendChildAtOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DefaultTreeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteAttributeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation;
+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 alice.codesegment.CodeSegment;
+import alice.jungle.datasegment.store.container.DefaultTreeOperationLogContainer;
+
+public class StartCodeSegment extends CodeSegment {
+
+	@Override
+	public void run() {
+		System.out.println("run StartCodeSegment");
+		
+		TestCodeSegment cs = new TestCodeSegment();
+		cs.arg1.setKey("log"); 
+		System.out.println("create TestCodeSegment");
+
+		DefaultTreeOperationLog log = getSampleOperationLog();
+		DefaultTreeOperationLogContainer logContainer = new DefaultTreeOperationLogContainer();
+		try {
+			logContainer.unconvert(log);
+			ods.update("local", "log", logContainer);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+ 	}
+	
+	public DefaultTreeOperationLog getSampleOperationLog() {
+		String key = "hoge";
+		ByteBuffer b = ByteBuffer.wrap("messagepack value".getBytes());
+		DefaultNodePath nodePath1 = new DefaultNodePath();
+		nodePath1 = nodePath1.add(1);
+		DefaultNodePath nodePath2 = nodePath1.add(2);
+		AppendChildAtOperation appendChildOp1 = new AppendChildAtOperation(1);
+		AppendChildAtOperation appendChildOp2 = new AppendChildAtOperation(2);
+		PutAttributeOperation putOp = new PutAttributeOperation(key, b);
+		DeleteAttributeOperation deleteOp = new DeleteAttributeOperation("hoge");
+		DeleteChildAtOperation deleteChild = new DeleteChildAtOperation(2);
+		List<TreeOperation> list = new LinkedList<TreeOperation>();
+		list.add(new DefaultTreeOperation(new DefaultNodePath(), appendChildOp1));
+		list.add(new DefaultTreeOperation(nodePath1, appendChildOp2));
+		list.add(new DefaultTreeOperation(nodePath2, putOp));
+		list.add(new DefaultTreeOperation(nodePath2, deleteOp));
+		list.add(new DefaultTreeOperation(nodePath1, deleteChild));
+		DefaultTreeOperationLog log = new DefaultTreeOperationLog(list, list.size());
+		return log;
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/jungle/log/example/TestCodeSegment.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,109 @@
+package test.java.alice.jungle.log.example;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle;
+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.core.Node;
+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.DefaultTreeOperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
+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;
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+import alice.jungle.core.NetworkDefaultJungle;
+import alice.jungle.datasegment.store.container.DefaultTreeOperationLogContainer;
+import alice.jungle.transaction.NetworkDefaultJungleTreeEditor;
+import alice.test.topology.aquarium.FishPoint;
+
+import org.msgpack.MessagePack;
+import org.msgpack.type.Value;
+
+public class TestCodeSegment extends CodeSegment {
+	
+	static Jungle jungle = new NetworkDefaultJungle(null,"hoge",new DefaultTreeEditor(new DefaultTraverser()), "serverName");
+	
+	// create input datasegment arg1
+	Receiver arg1 = ids.create(CommandType.PEEK);
+	
+	public TestCodeSegment() {
+		arg1.setKey("log");
+		jungle.createNewTree("tree");
+	}
+	
+	@Override
+	public void run() {
+		System.out.println("type = " + arg1.type);
+		System.out.println("index = " + arg1.index);
+		System.out.println("data = " + arg1.getVal());
+		System.out.println(((Value)arg1.getVal()).getType());
+		
+		DefaultTreeOperationLogContainer convertedLogContainer = arg1.asClass(DefaultTreeOperationLogContainer.class);
+		TreeOperationLog convertedLog = null;
+		try {
+			convertedLog = convertedLogContainer.convert();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		printLog(convertedLog);
+
+		JungleTree tree = jungle.getTreeByName("tree");
+		NetworkDefaultJungleTreeEditor editor = (NetworkDefaultJungleTreeEditor) tree.getTreeEditor();
+/*
+		JungleTreeEditor tEditor = editor.setNewLogAndGetEditor(convertedLog);
+
+		Either<Error,JungleTreeEditor> either = tEditor.success();
+		if (either.isA()) {
+			throw new IllegalStateException();
+		}
+*/
+		System.exit(0);
+	}
+	
+	public void printLog(TreeOperationLog log) {
+		for (TreeOperation treeOp : log) {
+			NodePath path = treeOp.getNodePath();
+			NodeOperation nodeOp = treeOp.getNodeOperation();
+			Command c = nodeOp.getCommand();
+			String str = "";
+			switch (c) {
+			case PUT_ATTRIBUTE:
+				String k = nodeOp.getKey();
+				ByteBuffer value = nodeOp.getValue();
+				if (value.limit() < 100) {
+					str = String.format("key:%s,value:%s", k,
+							new String(value.array()));
+				} else {
+					str = String.format("key:%s,value:%d", k, value.limit());
+				}
+				break;
+			case DELETE_ATTRIBUTE:
+				str = String.format("key:%s", nodeOp.getKey());
+				break;
+			case APPEND_CHILD:
+				str = String.format("pos:%d", nodeOp.getPosition());
+				break;
+			case DELETE_CHILD:
+				str = String.format("pos:%d", nodeOp.getPosition());
+				break;
+			}
+			System.out.println(String.format("[%s:%s]", c,  str));
+			System.out.println("path:");
+			for (int i: path ) {
+				System.out.println(i);
+			}
+		}
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/jungle/log/example/TestLocalAlice.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,12 @@
+package test.java.alice.jungle.log.example;
+
+import alice.daemon.AliceDaemon;
+import alice.daemon.Config;
+
+public class TestLocalAlice {
+	public static void main(String args[]) {
+		new AliceDaemon(new Config(args)).listen(); // logger off
+		new StartCodeSegment().execute();
+	}
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/jungle/log/example/codesement/operation/ShowAttribute.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,44 @@
+package test.java.alice.jungle.log.example.codesement.operation;
+
+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.core.Children;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
+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 jungle.app.bbs.JungleManager;
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class ShowAttribute extends CodeSegment {
+	
+	Receiver arg1 = ids.create(CommandType.TAKE);
+	
+	public ShowAttribute() {
+		arg1.setKey("show");
+	}
+	
+	public void run() {
+		System.out.println("--ShowAttribute--");
+		
+		Jungle jungle = JungleManager.getJungle();
+		JungleTree tree = jungle.getTreeByName("tree");
+		Node node = tree.getRootNode();
+		Children<Node> chs = node.getChildren();
+		System.out.println("children size : "+chs.size());
+		for(Node n : chs) {
+			ByteBuffer b = n.getAttributes().get("key1");
+			System.out.println(new String(b.array()));
+		}
+		
+		System.exit(0);
+		
+		
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/jungle/log/example/codesement/operation/StartJungleCodeSegment.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,38 @@
+package test.java.alice.jungle.log.example.codesement.operation;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+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.store.operations.DefaultTreeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
+import jungle.app.bbs.JungleManager;
+import alice.codesegment.CodeSegment;
+import alice.jungle.datasegment.store.container.DefaultTreeOperationContainer;
+
+public class StartJungleCodeSegment {
+	
+	public static void main(String[] args) {
+		System.out.println("--StartJungleCodeSegment--");
+		
+		JungleTree tree = JungleManager.createNewTree("tree");
+		JungleTreeEditor editor = tree.getTreeEditor();
+		DefaultNodePath path = new DefaultNodePath();
+		path = path.add(0);
+		editor.addNewChildAt(path, 0);
+		editor.success();
+		
+		TestPutAttributeCodeSegment cs = new TestPutAttributeCodeSegment();
+		DefaultTreeOperation treeOp = cs.getSampleOperation("message0");
+		DefaultTreeOperationContainer treeOperationContainer = new DefaultTreeOperationContainer();
+		try {
+			treeOperationContainer.unconvert(treeOp);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		cs.ods.update("local", "log", treeOperationContainer);
+	}
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/alice/jungle/log/example/codesement/operation/TestPutAttributeCodeSegment.java	Wed Oct 16 20:53:44 2013 +0900
@@ -0,0 +1,125 @@
+package test.java.alice.jungle.log.example.codesement.operation;
+
+import java.io.IOException;
+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.Command;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
+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.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+import jungle.app.bbs.JungleManager;
+
+import org.msgpack.type.Value;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+import alice.jungle.datasegment.store.container.DefaultTreeOperationContainer;
+import alice.jungle.datasegment.store.container.DefaultTreeOperationLogContainer;
+import alice.jungle.transaction.NetworkDefaultJungleTreeEditor;
+
+public class TestPutAttributeCodeSegment extends CodeSegment {
+
+	Receiver arg1 = ids.create(CommandType.TAKE);
+
+	public TestPutAttributeCodeSegment() {
+		arg1.setKey("log");
+	}
+
+	public void run() {
+		System.out.println("--TestPutAttributeCodeSegment--");
+		DefaultTreeOperationContainer convertedOpContainer = arg1
+				.asClass(DefaultTreeOperationContainer.class);
+		TreeOperation convertedOp = null;
+		try {
+			convertedOp = convertedOpContainer.convert();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		Jungle jungle = JungleManager.getJungle();
+		JungleTree tree = jungle.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();
+		editor.success();
+		NetworkDefaultJungleTreeEditor nEditor = (NetworkDefaultJungleTreeEditor) tree
+				.getTreeEditor();
+		either = edit(nEditor, convertedOp);
+		if (either.isA()) {
+			throw new IllegalStateException();
+		}
+		editor = either.b();
+		editor.success();
+		if (arg1.index >= 10) {
+			new ShowAttribute();
+			ods.update("local", "show", 1);
+			return;
+		}
+		TestPutAttributeCodeSegment cs = new TestPutAttributeCodeSegment();
+		DefaultTreeOperation treeOp = cs.getSampleOperation("message"+ arg1.index);
+		DefaultTreeOperationContainer treeOperationContainer = new DefaultTreeOperationContainer();
+		try {
+			treeOperationContainer.unconvert(treeOp);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		ods.update("local", "log", treeOperationContainer);
+	}
+
+	public DefaultTreeOperation getSampleOperation(String message) {
+		/* Create TreeOperation */
+		String key = "key1";
+		ByteBuffer b = ByteBuffer.wrap(message.getBytes());
+		PutAttributeOperation op = new PutAttributeOperation(key, b);
+		DefaultNodePath p = new DefaultNodePath();
+		p = p.add(0);
+		DefaultTreeOperation treeOp = new DefaultTreeOperation(p, op);
+		return treeOp;
+	}
+
+	public Either<Error, JungleTreeEditor> edit(JungleTreeEditor editor,
+			TreeOperation op) {
+		NodePath path = op.getNodePath();
+		NodeOperation nodeOp = op.getNodeOperation();
+		Command c = nodeOp.getCommand();
+		String str = "";
+		String key = "";
+		switch (c) {
+		case PUT_ATTRIBUTE:
+			key = nodeOp.getKey();
+			ByteBuffer value = nodeOp.getValue();
+			if (value.limit() < 100) {
+				str = String.format("key:%s,value:%s", key,
+						new String(value.array()));
+			} else {
+				str = String.format("key:%s,value:%d", key, value.limit());
+			}
+			return editor.putAttribute(path, key, value);
+		case DELETE_ATTRIBUTE:
+			key = nodeOp.getKey();
+			str = String.format("key:%s", nodeOp.getKey());
+			return editor.deleteAttribute(path, key);
+		case APPEND_CHILD:
+			str = String.format("pos:%d", nodeOp.getPosition());
+			return editor.addNewChildAt(path, 0);
+		case DELETE_CHILD:
+			str = String.format("pos:%d", nodeOp.getPosition());
+			return editor.deleteChildAt(path, 0);
+		}
+		return null;
+	}
+}