changeset 178:d6944d788121

fit Junglecore
author tatsuki
date Thu, 04 Sep 2014 13:12:25 +0900
parents 89db8388db0f
children 2828205bdc3a
files src/main/java/alice/jungle/core/NetworkDefaultJungle.java src/main/java/alice/jungle/datasegment/transformer/NetworkAppendChildAt.java src/main/java/alice/jungle/persistent/PersistentJungle.java src/main/java/alice/jungle/persistent/PersistentJungleTree.java src/main/java/alice/jungle/persistent/PersistentTransactionManager.java src/main/java/alice/jungle/transaction/NetworkDefaultJungleTree.java src/main/java/alice/jungle/transaction/NetworkDefaultJungleTreeEditor.java src/main/java/alice/jungle/transaction/NetworkTransactionManager.java src/main/java/app/bbs/NetworkJungleBulletinBoard.java src/test/java/alice/jungle/PersistentJournalTest.java
diffstat 10 files changed, 75 insertions(+), 152 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/alice/jungle/core/NetworkDefaultJungle.java	Mon Sep 01 17:16:20 2014 +0900
+++ b/src/main/java/alice/jungle/core/NetworkDefaultJungle.java	Thu Sep 04 13:12:25 2014 +0900
@@ -57,8 +57,8 @@
 		};
 		TreeNode root = new DefaultTreeNode();
 		ChangeSet set = new DefaultChangeSet(root,null,list,uuid,_name, 0);
-		DefaultTreeContext<DefaultTreeNode> tc = new DefaultTreeContext<DefaultTreeNode>(root,set);
-		JungleTree newTree = new NetworkDefaultJungleTree<DefaultTreeNode>(_name, tc,uuid,journal.getWriter(),editor);
+		DefaultTreeContext tc = new DefaultTreeContext(root,set);
+		JungleTree newTree = new NetworkDefaultJungleTree(_name, tc,uuid,journal.getWriter(),editor);
 		if(trees.putIfAbsent(_name,newTree) != null){
 			return null;
 		}
--- a/src/main/java/alice/jungle/datasegment/transformer/NetworkAppendChildAt.java	Mon Sep 01 17:16:20 2014 +0900
+++ b/src/main/java/alice/jungle/datasegment/transformer/NetworkAppendChildAt.java	Thu Sep 04 13:12:25 2014 +0900
@@ -24,7 +24,7 @@
 	}
 
 	@Override
-	public <T extends TreeNode> Either<Error, TreeNode> edit(T _e) {
+	public Either<Error, TreeNode> edit(TreeNode _e) {
 		Either<Error,TreeNode> either = _e.getChildren().addNewChildAt(pos);
 		if(either.isA()){
 			// error
@@ -33,10 +33,4 @@
 		return DefaultEither.newB(either.b());
 	}
 
-	@Override
-	public OperationLog getLog() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
 }
--- a/src/main/java/alice/jungle/persistent/PersistentJungle.java	Mon Sep 01 17:16:20 2014 +0900
+++ b/src/main/java/alice/jungle/persistent/PersistentJungle.java	Thu Sep 04 13:12:25 2014 +0900
@@ -54,8 +54,8 @@
 		};
 		TreeNode root = new DefaultTreeNode();
 		ChangeSet set = new PersistentChangeSet(root,null,list,uuid,_name,0);
-		DefaultTreeContext<DefaultTreeNode> tc = new DefaultTreeContext<DefaultTreeNode>(root,set);
-		JungleTree newTree = new PersistentJungleTree<DefaultTreeNode>(_name, tc,uuid, journal.getWriter(),editor);
+		DefaultTreeContext tc = new DefaultTreeContext(root,set);
+		JungleTree newTree = new PersistentJungleTree(_name, tc,uuid, journal.getWriter(),editor);
 		if(trees.putIfAbsent(_name,newTree) != null){
 			return null;
 		}
--- a/src/main/java/alice/jungle/persistent/PersistentJungleTree.java	Mon Sep 01 17:16:20 2014 +0900
+++ b/src/main/java/alice/jungle/persistent/PersistentJungleTree.java	Thu Sep 04 13:12:25 2014 +0900
@@ -10,17 +10,17 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultJungleTreeEditor;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext;
 
-public class PersistentJungleTree <T extends TreeNode> implements JungleTree {
-	private final AtomicReservableReference<TreeContext<T>> repository;
+public class PersistentJungleTree implements JungleTree {
+	private final AtomicReservableReference<TreeContext> repository;
 	private final String uuid;
 	private final String treeName;
 	private final ChangeListWriter writer;
 	private final TreeEditor editor;
 
-	public PersistentJungleTree(String _treeName, TreeContext<T> _tc,String _uuid, ChangeListWriter _writer,TreeEditor _editor)
+	public PersistentJungleTree(String _treeName, TreeContext _tc,String _uuid, ChangeListWriter _writer,TreeEditor _editor)
 	{
 		treeName = _treeName;
-		repository = new AtomicReservableReference<TreeContext<T>>(_tc);
+		repository = new AtomicReservableReference<TreeContext>(_tc);
 		uuid = _uuid;
 		writer = _writer;
 		editor = _editor;
@@ -29,16 +29,16 @@
 	@Override
 	public JungleTreeEditor getTreeEditor()
 	{
-		TreeContext<T> tc = repository.get();
-		PersistentTransactionManager<T> txManager = new PersistentTransactionManager<T>(treeName, writer,tc,repository,uuid);
+		TreeContext tc = repository.get();
+		PersistentTransactionManager txManager = new PersistentTransactionManager(treeName, writer,tc,repository,uuid);
 		TreeNode root = tc.getTreeNode();
-		return new DefaultJungleTreeEditor<T>(root,txManager,editor);
+		return new DefaultJungleTreeEditor(root,txManager,editor);
 	}
 
 	@Override
 	public TreeNode getRootNode()
 	{
-		TreeContext<T> tc = repository.get();
+		TreeContext tc = repository.get();
 		ChangeSet cs = tc.getChangeSet();
 		return cs.getRoot();
 	}
--- a/src/main/java/alice/jungle/persistent/PersistentTransactionManager.java	Mon Sep 01 17:16:20 2014 +0900
+++ b/src/main/java/alice/jungle/persistent/PersistentTransactionManager.java	Thu Sep 04 13:12:25 2014 +0900
@@ -15,15 +15,15 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 
-public class PersistentTransactionManager<T extends TreeNode> implements TransactionManager<T> { 
-	private final AtomicReservableReference<TreeContext<T>> repository;
-	private final TreeContext<T> tip;
+public class PersistentTransactionManager implements TransactionManager { 
+	private final AtomicReservableReference<TreeContext> repository;
+	private final TreeContext tip;
 	private final ChangeListWriter writer;
 	private final String uuid;		
 	private final String treeName;	
 
-	public PersistentTransactionManager(String _treeName, ChangeListWriter _writer,TreeContext<T> _tip,
-			AtomicReservableReference<TreeContext<T>> _repository,String _uuid)
+	public PersistentTransactionManager(String _treeName, ChangeListWriter _writer,TreeContext _tip,
+			AtomicReservableReference<TreeContext> _repository,String _uuid)
 	{
 		repository = _repository;
 		tip = _tip;
@@ -33,7 +33,7 @@
 	}
 	
 	@Override
-	public Either<Error, TransactionManager<T>> commit(TreeNode _newRoot,final TreeOperationLog _log) {
+	public Either<Error, TransactionManager> commit(TreeNode _newRoot,final TreeOperationLog _log) {
 		ChangeSet cs = tip.getChangeSet();
 		long currentRevision = cs.revision();
 		long nextRevision = currentRevision + 1;
@@ -41,7 +41,7 @@
 		PersistentChangeList list = new PersistentChangeList(uuid, treeName, _log);
 		TreeNode root = _newRoot;
 		PersistentChangeSet newCs = new PersistentChangeSet(root, cs, list, uuid, treeName, nextRevision);
-		DefaultTreeContext<T> newContext = new DefaultTreeContext<T>(_newRoot,newCs);
+		DefaultTreeContext newContext = new DefaultTreeContext(_newRoot,newCs);
 		
 		@SuppressWarnings("rawtypes")
 		Reservation reservation = repository.makeReservation(tip, newContext);
@@ -53,7 +53,7 @@
 			return DefaultEither.newA((Error)new DefaultError());
 		}
 		reservation.confirm();
-		TransactionManager<T> txManager = new PersistentTransactionManager<T>(treeName, writer, newContext, repository, uuid);
+		TransactionManager txManager = new PersistentTransactionManager(treeName, writer, newContext, repository, uuid);
 		return DefaultEither.newB(txManager);
 	}
 
--- a/src/main/java/alice/jungle/transaction/NetworkDefaultJungleTree.java	Mon Sep 01 17:16:20 2014 +0900
+++ b/src/main/java/alice/jungle/transaction/NetworkDefaultJungleTree.java	Thu Sep 04 13:12:25 2014 +0900
@@ -9,17 +9,17 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext;
 
-public class NetworkDefaultJungleTree<T extends TreeNode> implements JungleTree {
-	private final AtomicReservableReference<TreeContext<T>> repository;
+public class NetworkDefaultJungleTree implements JungleTree {
+	private final AtomicReservableReference<TreeContext> repository;
 	private final String uuid;
 	private final String treeName;
 	private final ChangeListWriter writer;
 	private final TreeEditor editor;
 	
-	public NetworkDefaultJungleTree(String _treeName, TreeContext<T> _tc,String _uuid,ChangeListWriter _writer,TreeEditor _editor)
+	public NetworkDefaultJungleTree(String _treeName, TreeContext _tc,String _uuid,ChangeListWriter _writer,TreeEditor _editor)
 	{
 		treeName = _treeName;
-		repository = new AtomicReservableReference<TreeContext<T>>(_tc);
+		repository = new AtomicReservableReference<TreeContext>(_tc);
 		uuid = _uuid;
 		writer = _writer;
 		editor = _editor;
@@ -28,17 +28,17 @@
 	@Override
 	public JungleTreeEditor getTreeEditor()
 	{
-		TreeContext<T> tc = repository.get();
-		NetworkTransactionManager<T> txManager = new NetworkTransactionManager<T>(treeName, writer,tc,repository,uuid);
+		TreeContext tc = repository.get();
+		NetworkTransactionManager txManager = new NetworkTransactionManager(treeName, writer,tc,repository,uuid);
 		TreeNode root = tc.getTreeNode();
-		return new NetworkDefaultJungleTreeEditor<T>(treeName, root,txManager,editor);
+		return new NetworkDefaultJungleTreeEditor(treeName, root,txManager,editor);
 	}
 	
 	@Override
 	public JungleTreeEditor getLocalTreeEditor()
 	{
-		TreeContext<T> tc = repository.get();
-		NetworkTransactionManager<T> txManager = new NetworkTransactionManager<T>(treeName, writer,tc,repository,uuid);
+		TreeContext tc = repository.get();
+		NetworkTransactionManager txManager = new NetworkTransactionManager(treeName, writer,tc,repository,uuid);
 		TreeNode root = tc.getTreeNode();
 		return NetworkDefaultJungleTreeEditor.NewLocalJungleTreeEditor(treeName,root,txManager, editor);
 	}
@@ -46,7 +46,7 @@
 	@Override
 	public TreeNode getRootNode()
 	{
-		TreeContext<T> tc = repository.get();
+		TreeContext tc = repository.get();
 		ChangeSet cs = tc.getChangeSet();
 		return cs.getRoot();
 	}
--- a/src/main/java/alice/jungle/transaction/NetworkDefaultJungleTreeEditor.java	Mon Sep 01 17:16:20 2014 +0900
+++ b/src/main/java/alice/jungle/transaction/NetworkDefaultJungleTreeEditor.java	Thu Sep 04 13:12:25 2014 +0900
@@ -12,7 +12,6 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
 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.LoggingNodeHook;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
 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;
@@ -29,21 +28,21 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter;
 
-public class NetworkDefaultJungleTreeEditor<T extends TreeNode> implements JungleTreeEditor {
+public class NetworkDefaultJungleTreeEditor implements JungleTreeEditor {
 
-	private final TransactionManager<T> txManager;
+	private final TransactionManager txManager;
 	private final TreeNode root;
 	private final TreeEditor editor;
 	private final String treeName;
 	private final TreeOperationLog log;
 	private boolean exportLog;
 
-	public NetworkDefaultJungleTreeEditor(String _treeName, TreeNode _root,TransactionManager<T> _txManager,TreeEditor _editor)
+	public NetworkDefaultJungleTreeEditor(String _treeName, TreeNode _root,TransactionManager _txManager,TreeEditor _editor)
 	{
 		this(_treeName, _root,_txManager,_editor,new DefaultTreeOperationLog());
 	}
 	
-	public NetworkDefaultJungleTreeEditor(String _treeName, TreeNode _root,TransactionManager<T> _txManager,TreeEditor _editor, TreeOperationLog _log)
+	public NetworkDefaultJungleTreeEditor(String _treeName, TreeNode _root,TransactionManager _txManager,TreeEditor _editor, TreeOperationLog _log)
 	{
 		treeName = _treeName;
 		root = _root;
@@ -53,28 +52,28 @@
 		exportLog = true;
 	}
 	
-	public static <T1 extends TreeNode> NetworkDefaultJungleTreeEditor<T1> NewLocalJungleTreeEditor(String _treeName, TreeNode _root,TransactionManager<T1> _txManager,TreeEditor _editor) {
-		NetworkDefaultJungleTreeEditor<T1> treeEditor = new NetworkDefaultJungleTreeEditor<T1>(_treeName, _root,_txManager,_editor,new DefaultTreeOperationLog());
+	public static  NetworkDefaultJungleTreeEditor NewLocalJungleTreeEditor(String _treeName, TreeNode _root,TransactionManager _txManager,TreeEditor _editor) {
+		NetworkDefaultJungleTreeEditor treeEditor = new NetworkDefaultJungleTreeEditor(_treeName, _root,_txManager,_editor,new DefaultTreeOperationLog());
 		treeEditor.exportLog = false;
 		return treeEditor;
 	}
 
-	public static <T1 extends TreeNode> NetworkDefaultJungleTreeEditor<T1> NewLocalJungleTreeEditor(String _treeName, TreeNode _root,TransactionManager<T1> _txManager,TreeEditor _editor, TreeOperationLog _log) {
-		NetworkDefaultJungleTreeEditor<T1> treeEditor = new NetworkDefaultJungleTreeEditor<T1>(_treeName, _root,_txManager,_editor,_log);
+	public static  NetworkDefaultJungleTreeEditor NewLocalJungleTreeEditor(String _treeName, TreeNode _root,TransactionManager _txManager,TreeEditor _editor, TreeOperationLog _log) {
+		NetworkDefaultJungleTreeEditor treeEditor = new NetworkDefaultJungleTreeEditor(_treeName, _root,_txManager,_editor,_log);
 		treeEditor.exportLog = false;
 		return treeEditor;
 	}
 	
 	private Either<Error,JungleTreeEditor> _edit(final NodePath _path,NodeEditor _e)
 	{
-		LoggingNodeHook hook = new LoggingNodeHook(_e);
-		Either<Error,TreeNode> either = editor.edit(root,_path,hook);
+		//LoggingNodeHook hook = new LoggingNodeHook(_e);
+		Either<Error,TreeNode> either = editor.edit(root,_path,_e);
 		if(either.isA()){
 			return DefaultEither.newA(either.a());
 		}
 		
 		TreeNode newNode = either.b();
-		OperationLog newLog = hook.getLog();
+		OperationLog newLog = newNode.getLog();
 		
 		IterableConverter.Converter<TreeOperation,NodeOperation> converter = new IterableConverter.Converter<TreeOperation,NodeOperation>(){
 			@Override
@@ -89,7 +88,7 @@
 		
 		JungleTreeEditor newEditor;
 		if(exportLog) {
-			newEditor = new NetworkDefaultJungleTreeEditor<T>(treeName, newNode,txManager,editor,newTreeOpLog);
+			newEditor = new NetworkDefaultJungleTreeEditor(treeName, newNode,txManager,editor,newTreeOpLog);
 		} else {
 			newEditor = NetworkDefaultJungleTreeEditor.NewLocalJungleTreeEditor(treeName, newNode, txManager, editor, newTreeOpLog);
 		}
@@ -133,7 +132,7 @@
 	@Override
 	public Either<Error,JungleTreeEditor> success()
 	{
-		Either<Error,TransactionManager<T>> either = txManager.commit(root,log);
+		Either<Error,TransactionManager> either = txManager.commit(root,log);
 		if(either.isA()){
 			return DefaultEither.newA(either.a());
 		}
@@ -145,8 +144,8 @@
 			}	
 		}
 
-		TransactionManager<T> newTxManager = either.b();
-		JungleTreeEditor newTreeEditor = new NetworkDefaultJungleTreeEditor<T>(treeName, root,newTxManager,editor);
+		TransactionManager newTxManager = either.b();
+		JungleTreeEditor newTreeEditor = new NetworkDefaultJungleTreeEditor(treeName, root,newTxManager,editor);
 		
 		return DefaultEither.newB(newTreeEditor);
 	}
--- a/src/main/java/alice/jungle/transaction/NetworkTransactionManager.java	Mon Sep 01 17:16:20 2014 +0900
+++ b/src/main/java/alice/jungle/transaction/NetworkTransactionManager.java	Thu Sep 04 13:12:25 2014 +0900
@@ -20,17 +20,17 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 
-public class NetworkTransactionManager<T extends TreeNode> implements TransactionManager<T> 
+public class NetworkTransactionManager implements TransactionManager
 {
 
-	private final AtomicReservableReference<TreeContext<T>> repository;
-	private final TreeContext<T> tip;
+	private final AtomicReservableReference<TreeContext> repository;
+	private final TreeContext tip;
 	private final ChangeListWriter writer;
 	private final String uuid;	
 	private final String treeName;	
 	
-	public NetworkTransactionManager(String _treeName, ChangeListWriter _writer,TreeContext<T> _tip,
-			AtomicReservableReference<TreeContext<T>> _repository,String _uuid)
+	public NetworkTransactionManager(String _treeName, ChangeListWriter _writer,TreeContext _tip,
+			AtomicReservableReference<TreeContext> _repository,String _uuid)
 	{
 		repository = _repository;
 		tip = _tip;
@@ -40,7 +40,7 @@
 	}
 	
 	@Override
-	public Either<Error, TransactionManager<T>> commit(TreeNode _newRoot,final TreeOperationLog _log) {
+	public Either<Error, TransactionManager> commit(TreeNode _newRoot,final TreeOperationLog _log) {
 		ChangeSet cs = tip.getChangeSet();
 		long currentRevision = cs.revision();
 		long nextRevision = currentRevision + 1;
@@ -62,7 +62,7 @@
 		
 		TreeNode root = _newRoot;
 		DefaultChangeSet newCs = new DefaultChangeSet(root, cs, list, uuid, treeName, nextRevision);
-		DefaultTreeContext<T> newContext = new DefaultTreeContext<T>(_newRoot,newCs);
+		DefaultTreeContext newContext = new DefaultTreeContext(_newRoot,newCs);
 		
 		@SuppressWarnings("rawtypes")
 		Reservation reservation = repository.makeReservation(tip, newContext);
@@ -74,7 +74,7 @@
 			return DefaultEither.newA((Error)new DefaultError());
 		}
 		reservation.confirm();
-		TransactionManager<T> txManager = new NetworkTransactionManager<T>(treeName, writer, newContext, repository, uuid);
+		TransactionManager txManager = new NetworkTransactionManager(treeName, writer, newContext, repository, uuid);
 		return DefaultEither.newB(txManager);
 	}
 
--- a/src/main/java/app/bbs/NetworkJungleBulletinBoard.java	Mon Sep 01 17:16:20 2014 +0900
+++ b/src/main/java/app/bbs/NetworkJungleBulletinBoard.java	Thu Sep 04 13:12:25 2014 +0900
@@ -125,7 +125,7 @@
 	public Iterable<String> getBoards() {
 		JungleTree tree = jungle.getTreeByName("boards");
 		TreeNode node = tree.getRootNode();
-		Children<TreeNode> chs = node.getChildren();
+		Children chs = node.getChildren();
 
 		IterableConverter.Converter<String, TreeNode> converter = new IterableConverter.Converter<String, TreeNode>() {
 			public String conv(TreeNode _b) {
@@ -186,8 +186,7 @@
 		NodeEditor e = new NodeEditor() {
 			ByteBuffer tBuffer2 = ByteBuffer.allocate(16);
 
-			public <T extends TreeNode> Either<Error, TreeNode> edit(T _e) {
-				TreeNode node = _e;
+			public Either<Error, TreeNode> edit(TreeNode node) {
 				node = node.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
 				node = node.getAttributes().put("mes", ByteBuffer.wrap(_initMessage.getBytes())).b();
 				node = node.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
@@ -196,15 +195,6 @@
 				return DefaultEither.newB(node);
 			}
 
-			@Override
-			public OperationLog getLog() {
-				OperationLog op = new DefaultOperationLog();
-				op = op.add(new PutAttributeOperation("author", ByteBuffer.wrap(_author.getBytes())));
-				op = op.add(new PutAttributeOperation("mes", ByteBuffer.wrap(_initMessage.getBytes())));
-				op = op.add(new PutAttributeOperation("key", ByteBuffer.wrap(_editKey.getBytes())));
-				op = op.add(new PutAttributeOperation("timestamp", tBuffer2));
-				return op;
-			}
 		};
 
 		either = editor.edit(root.add(0), e);
@@ -242,13 +232,13 @@
 			// TraversableNodeWrapper<Node> traversable = new
 			// TraversableNodeWrapper<Node>(node);
 			DefaultEvaluator evaluator = new DefaultEvaluator(path);
-			Either<Error, Traversal<TreeNode>> ret = traverser.traverse(node,
+			Either<Error, Traversal> ret = traverser.traverse(node,
 					evaluator);
 			if (ret.isA()) {
 				Assert.fail();
 			}
 
-			Traversal<TreeNode> traversal = ret.b();
+			Traversal traversal = ret.b();
 			TreeNode target = traversal.destination();
 			int size = target.getChildren().size();
 			JungleTreeEditor editor = tree.getTreeEditor();
@@ -260,20 +250,12 @@
 
 			NodeEditor e = new NodeEditor() {
 
-				public <T extends TreeNode> Either<Error, TreeNode> edit(T _e) {
-					TreeNode node = _e;
+				public Either<Error, TreeNode> edit(TreeNode node) {
 					node = node.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
 					node = node.getAttributes().put("timestamp", tBuffer).b();
 					return DefaultEither.newB(node);
 				}
 
-				@Override
-				public OperationLog getLog() {
-					OperationLog op = new DefaultOperationLog();
-					op = op.add(new PutAttributeOperation("mes", ByteBuffer.wrap(_message.getBytes())));
-					op = op.add(new PutAttributeOperation("timestamp", tBuffer));
-					return op;
-				}
 			};
 			path = path.add(size);
 			either = editor.edit(path, e);
@@ -311,8 +293,7 @@
 			editor = either.b();
 
 			NodeEditor e = new NodeEditor() {
-				public <T extends TreeNode> Either<Error, TreeNode> edit(T _e) {
-					TreeNode node = _e;
+				public Either<Error, TreeNode> edit(TreeNode node) {
 					node = node.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
 					node = node.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
 					node = node.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
@@ -320,15 +301,6 @@
 					return DefaultEither.newB(node);
 				}
 
-				@Override
-				public OperationLog getLog() {
-					OperationLog op = new DefaultOperationLog();
-					op = op.add(new PutAttributeOperation("author", ByteBuffer.wrap(_author.getBytes())));
-					op = op.add(new PutAttributeOperation("mes", ByteBuffer.wrap(_message.getBytes())));
-					op = op.add(new PutAttributeOperation("key", ByteBuffer.wrap(_editKey.getBytes())));
-					op = op.add(new PutAttributeOperation("timestamp", tBuffer));
-					return op;
-				}
 			};
 			path = path.add(size);
 			either = editor.edit(path, e);
@@ -360,8 +332,7 @@
 			}
 			JungleTreeEditor editor = tree.getTreeEditor();
 			NodeEditor e = new NodeEditor() {
-				public <T extends TreeNode> Either<Error, TreeNode> edit(T _e) {
-					TreeNode node = _e;
+				public Either<Error, TreeNode> edit(TreeNode node) {
 					System.out.println(new String(node.getAttributes().get("mes").array()));
 					node = node.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
 					node = node.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
@@ -371,15 +342,6 @@
 					return DefaultEither.newB(node);
 				}
 
-				@Override
-				public OperationLog getLog() {
-					OperationLog op = new DefaultOperationLog();
-					op = op.add(new PutAttributeOperation("author", ByteBuffer.wrap(_author.getBytes())));
-					op = op.add(new PutAttributeOperation("mes", ByteBuffer.wrap(_message.getBytes())));
-					op = op.add(new PutAttributeOperation("key", ByteBuffer.wrap(_editKey.getBytes())));
-					op = op.add(new PutAttributeOperation("timestamp", tBuffer));
-					return op;
-				}
 			};
 			either = editor.edit(path, e);
 			if (either.isA()) {
@@ -413,11 +375,10 @@
 			NodeEditor e = new NodeEditor() {
 				String str;
 
-				public <T extends TreeNode> Either<Error, TreeNode> edit(T _e) {
-					TreeNode node = _e;
+				public Either<Error, TreeNode> edit(TreeNode node) {
 					str = "0";
 					int count = 0;
-					for (; _e.getAttributes().get("mes" + String.valueOf(count)) != null; count++) {
+					for (; node.getAttributes().get("mes" + String.valueOf(count)) != null; count++) {
 					}
 					str = String.valueOf(count);
 					node = node.getAttributes().put("mes" + str,ByteBuffer.wrap(_message.getBytes())).b();
@@ -425,13 +386,6 @@
 					return DefaultEither.newB(node);
 				}
 
-				@Override
-				public OperationLog getLog() {
-					OperationLog op = new DefaultOperationLog();
-					op = op.add(new PutAttributeOperation("mes" + str,ByteBuffer.wrap(_message.getBytes())));
-					op = op.add(new PutAttributeOperation("timestamp" + str,tBuffer));
-					return op;
-				}
 			};
 			either = editor.edit(path, e);
 			if (either.isA()) {
@@ -462,21 +416,13 @@
 
 			JungleTreeEditor editor = tree.getTreeEditor();
 			NodeEditor e = new NodeEditor() {
-				public <T extends TreeNode> Either<Error, TreeNode> edit(T _e) {
-					TreeNode node = _e;
+				public Either<Error, TreeNode> edit(TreeNode node) {
 					// EnableNodeWrapper<T> node = _e.getWrap();
 					node = node.getAttributes().put("mes" + id,ByteBuffer.wrap(_message.getBytes())).b();
 					node = node.getAttributes().put("timestamp" + id, tBuffer).b();
 					return DefaultEither.newB(node);
 				}
 
-				@Override
-				public OperationLog getLog() {
-					OperationLog op = new DefaultOperationLog();
-					op = op.add(new PutAttributeOperation("mes"+ id, ByteBuffer.wrap(_message.getBytes())));
-					op = op.add(new PutAttributeOperation("timestamp"+ id, tBuffer));
-					return op;
-				}
 			};
 			either = editor.edit(path, e);
 			if (either.isA()) {
@@ -538,13 +484,12 @@
 
 			JungleTreeEditor editor = tree.getTreeEditor();
 			NodeEditor e = new NodeEditor() {
-				public <T extends TreeNode> Either<Error, TreeNode> edit(T _e) {
-					TreeNode node = _e;
+				public Either<Error, TreeNode> edit(TreeNode node) {
 					node = node.getAttributes().delete("mes" + id).b();
 					node = node.getAttributes().delete("timestamp" + id).b();
 					int count = Integer.parseInt(id);
 					for (; node.getAttributes().get("mes" + String.valueOf(count + 1)) != null;) {
-						node = node.getAttributes().put("mes" + count,_e.getAttributes().get("mes"+ String.valueOf(count + 1))).b();
+						node = node.getAttributes().put("mes" + count,node.getAttributes().get("mes"+ String.valueOf(count + 1))).b();
 						node = node.getAttributes().put("timestamp" + count, tBuffer).b();
 						count++;
 					}
@@ -556,10 +501,6 @@
 					return DefaultEither.newB(node);
 				}
 
-				@Override
-				public OperationLog getLog() {
-					return new DefaultOperationLog();
-				}
 			};
 			either = editor.edit(path, e);
 			if (either.isA()) {
@@ -584,24 +525,13 @@
 
 			JungleTreeEditor editor = tree.getTreeEditor();
 			NodeEditor e = new NodeEditor() {
-				public <T extends TreeNode> Either<Error, TreeNode> edit(T _e) {
-					TreeNode node = _e;
+				public Either<Error, TreeNode> edit(TreeNode node) {
 					node = node.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
 					node = node.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
 					node = node.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
 					node = node.getAttributes().put("timestamp", tBuffer).b();
 					return DefaultEither.newB(node);
 				}
-
-				@Override
-				public OperationLog getLog() {
-					OperationLog op = new DefaultOperationLog();
-					op = op.add(new PutAttributeOperation("author", ByteBuffer.wrap(_author.getBytes())));
-					op = op.add(new PutAttributeOperation("mes", ByteBuffer.wrap(_message.getBytes())));
-					op = op.add(new PutAttributeOperation("key", ByteBuffer.wrap(_editKey.getBytes())));
-					op = op.add(new PutAttributeOperation("timestamp", tBuffer));
-					return op;
-				}
 			};
 			either = editor.edit(path, e);
 			if (either.isA()) {
@@ -617,7 +547,7 @@
 		requestCounter.incrementAndGet();
 		JungleTree tree = jungle.getTreeByName(_boardName);
 		TreeNode node = tree.getRootNode();
-		Children<TreeNode> chs = node.getChildren();
+		Children chs = node.getChildren();
 		final AtomicInteger counter = new AtomicInteger(0);
 		IterableConverter.Converter<BoardMessage, TreeNode> converter = new IterableConverter.Converter<BoardMessage, TreeNode>() {
 			public BoardMessage conv(TreeNode _b) {
@@ -649,15 +579,15 @@
 		// TraversableNodeWrapper<Node> traversable = new
 		// TraversableNodeWrapper<Node>(node);
 		DefaultEvaluator evaluator = new DefaultEvaluator(path);
-		Either<Error, Traversal<TreeNode>> ret = traverser.traverse(node,
+		Either<Error, Traversal> ret = traverser.traverse(node,
 				evaluator);
 		if (ret.isA()) {
 			Assert.fail();
 		}
 
-		Traversal<TreeNode> traversal = ret.b();
+		Traversal traversal = ret.b();
 		TreeNode target = traversal.destination();
-		Children<TreeNode> chs = target.getChildren();
+		Children chs = target.getChildren();
 
 		final AtomicInteger counter = new AtomicInteger(0);
 		IterableConverter.Converter<BoardMessage, TreeNode> converter = new IterableConverter.Converter<BoardMessage, TreeNode>() {
@@ -691,13 +621,13 @@
 		// TraversableNodeWrapper<Node> traversable = new
 		// TraversableNodeWrapper<Node>(node);
 		DefaultEvaluator evaluator = new DefaultEvaluator(path);
-		Either<Error, Traversal<TreeNode>> ret = traverser.traverse(node,
+		Either<Error, Traversal> ret = traverser.traverse(node,
 				evaluator);
 		if (ret.isA()) {
 			Assert.fail();
 		}
 
-		Traversal<TreeNode> traversal = ret.b();
+		Traversal traversal = ret.b();
 		TreeNode target = traversal.destination();
 		return new getAttributeImp(target);
 	}
--- a/src/test/java/alice/jungle/PersistentJournalTest.java	Mon Sep 01 17:16:20 2014 +0900
+++ b/src/test/java/alice/jungle/PersistentJournalTest.java	Thu Sep 04 13:12:25 2014 +0900
@@ -63,8 +63,8 @@
 		JungleTree tree2 = jungle2.getTreeByName("hoge");
 		TreeNode node1 = tree1.getRootNode();
 		TreeNode node2 = tree2.getRootNode();
-		Children<TreeNode> child1 = node1.getChildren();
-		Children<TreeNode> child2 = node2.getChildren();
+		Children child1 = node1.getChildren();
+		Children child2 = node2.getChildren();
 		assertEquals(child1.size(), child2.size());
 		Either<Error, TreeNode> either1 = child1.at(pos);
 		Either<Error, TreeNode> either2 = child1.at(pos);