changeset 90:7058e85875a5

Merge with c5095a354dfc7565c6f2996ee378f2183822901e
author one
date Fri, 05 Sep 2014 19:49:35 +0900
parents 46a4539591e4 (current diff) c5095a354dfc (diff)
children 9225ff3e3210 ef68358ed0e8
files
diffstat 14 files changed, 73 insertions(+), 75 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultAttributes.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultAttributes.java	Fri Sep 05 19:49:35 2014 +0900
@@ -1,4 +1,4 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
 
 import java.nio.ByteBuffer;
 
@@ -26,7 +26,6 @@
 		
 		return DefaultEither.newB(newNode);
 	}
-	*/
 	
 	public TreeMap<String,ByteBuffer> getAttributesAsRawMap()
 	{
@@ -50,5 +49,5 @@
 	{
 		return null;
 	}
-	*/
 }
+*/
\ No newline at end of file
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java	Fri Sep 05 19:49:35 2014 +0900
@@ -3,7 +3,9 @@
 import fj.data.List;
 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.logger.OperationLog;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Direction;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal;
@@ -25,7 +27,6 @@
 	public Either<Error,TreeNode> edit(TreeNode _root,NodePath _path,NodeEditor _editor)
 	{
 		DefaultEvaluator e = new DefaultEvaluator(_path);
-		//TraversableNodeWrapper<T> wrap = new TraversableNodeWrapper<T>(_root);
 		Either<Error, Traversal> either = traverser.traverse(_root,e);
 		
 		if(either.isA()){
@@ -50,14 +51,13 @@
 		// target
 		Direction<TreeNode> targetDirection = path.head();
 		TreeNode target = targetDirection.getTarget();
-		//EditableNodeWrapper<T> wrapper = new EditableNodeWrapper<T>(target);
 		Either<Error,TreeNode> either = _editor.edit(target);
 		if(either.isA()){
 			return DefaultEither.newA(either.a());
 		}
 		
 		TreeNode newNode = either.b();
-		
+		OperationLog log = newNode.getLog();
 		// top
 		int pos = targetDirection.getPosition();
 		TreeNode child = newNode;
@@ -74,7 +74,7 @@
 			pos = parentDirection.getPosition();
 		}
 		
-		TreeNode newRoot = child;
+		TreeNode newRoot = new DefaultTreeNode(child,log);
 		return DefaultEither.newB(newRoot);
 	}
 }
\ No newline at end of file
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNode.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNode.java	Fri Sep 05 19:49:35 2014 +0900
@@ -1,6 +1,7 @@
 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
 
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.AttributesContainer;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
 
 public interface TreeNode extends AttributesContainer
 {
@@ -10,6 +11,9 @@
 	public TreeNodeAttributes getAttributes();
 	
 	public TreeNode createNewNode();
-	//public Node getAsNode();
+	
+	public OperationLog getLog();
+	
+	public void putLog(OperationLog _log);
 	
 }
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNodeHook.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNodeHook.java	Fri Sep 05 19:49:35 2014 +0900
@@ -1,4 +1,4 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger;
 
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor;
@@ -20,15 +20,11 @@
 	@Override
 	public Either<Error,TreeNode> edit(TreeNode _e)
 	{
-		//LoggingNode<T> loggingNode = new LoggingNode<T>(_e);
 		Either<Error,TreeNode> either = editor.edit(_e);
 		if(either.isA()){
 			return DefaultEither.newA(either.a());
 		}
-		log = editor.getLog();
 		TreeNode newLoggingNode = either.b();
-		//T newNode = newLoggingNode.getWrap();
-		//log = newLoggingNode.getOperationLog();
 		
 		return DefaultEither.newB(newLoggingNode);
 	}
@@ -38,3 +34,4 @@
 		return log;
 	}
 }
+*/
\ No newline at end of file
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/AppendChildAt.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/AppendChildAt.java	Fri Sep 05 19:49:35 2014 +0900
@@ -1,10 +1,6 @@
 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
 
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.AppendChildAtOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
@@ -30,11 +26,4 @@
 		return DefaultEither.newB(either.b());
 	}
 
-	@Override
-	public OperationLog getLog() {
-		OperationLog op = new DefaultOperationLog();
-		NodeOperation addNewChildAt = new AppendChildAtOperation(pos);
-		op = op.add(addNewChildAt);
-		return op;
-	}
 }
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteAttribute.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteAttribute.java	Fri Sep 05 19:49:35 2014 +0900
@@ -1,9 +1,6 @@
 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
 
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteAttributeOperation;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 
@@ -22,10 +19,4 @@
 		return _e.getAttributes().delete(key);
 	}
 
-	@Override
-	public OperationLog getLog() {
-		OperationLog op = new DefaultOperationLog();
-		DeleteAttributeOperation deleteAttribute = new DeleteAttributeOperation(key);
-		return op.add(deleteAttribute);
-	}
 }
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteChildAt.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteChildAt.java	Fri Sep 05 19:49:35 2014 +0900
@@ -1,10 +1,6 @@
 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
 
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 
@@ -23,10 +19,4 @@
 		return _e.getChildren().deleteChildAt(pos);
 	}
 
-	@Override
-	public OperationLog getLog() {
-		OperationLog op = new DefaultOperationLog();
-		NodeOperation deleteChildAt = new DeleteChildAtOperation(pos);
-		return op.add(deleteChildAt);
-	}
 }
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/NodeEditor.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/NodeEditor.java	Fri Sep 05 19:49:35 2014 +0900
@@ -1,12 +1,10 @@
 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
 
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 
 public interface NodeEditor
 {
 	public Either<Error,TreeNode> edit(TreeNode _e);
-	public OperationLog getLog();
 }
\ No newline at end of file
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/PutAttribute.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/PutAttribute.java	Fri Sep 05 19:49:35 2014 +0900
@@ -4,9 +4,6 @@
 
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 
@@ -28,10 +25,4 @@
 		return attrs.put(key,value);
 	}
 
-	@Override
-	public OperationLog getLog() {
-		OperationLog op = new DefaultOperationLog();
-		PutAttributeOperation putAttribute = new PutAttributeOperation(key,value);
-		return op.add(putAttribute);
-	}
 }
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultJungleTreeEditor.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultJungleTreeEditor.java	Fri Sep 05 19:49:35 2014 +0900
@@ -7,7 +7,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;
@@ -45,14 +44,14 @@
 	
 	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
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java	Fri Sep 05 19:49:35 2014 +0900
@@ -6,25 +6,40 @@
 import fj.data.List;
 import fj.data.TreeMap;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
 
 public class DefaultTreeNode implements TreeNode
 {
 	//private final DefaultNode wrap;
-	public List<TreeNode> children;
-	public TreeMap<String,ByteBuffer> attrs;
+	private List<TreeNode> children;
+	private TreeMap<String,ByteBuffer> attrs;
+	private OperationLog log;
 	
 	private static final List<TreeNode> NIL_LIST = List.nil();
 	private static final TreeMap<String,ByteBuffer> NIL_MAP = TreeMap.empty(Ord.stringOrd);
 	
 	public DefaultTreeNode()
 	{
-		this(NIL_LIST,NIL_MAP);
+		this(NIL_LIST,NIL_MAP,new DefaultOperationLog());
 	}
 	
 	public DefaultTreeNode(List<TreeNode> _children,TreeMap<String,ByteBuffer> _attrs)
 	{
+		this(_children, _attrs, new DefaultOperationLog());
+	}
+	
+	public DefaultTreeNode(TreeNode _node, OperationLog _log)
+	{
+		this(_node.getChildren().getChildrenAsRawList(), _node.getAttributes().getAttributesAsRawMap(), _log);
+	}
+	
+	
+	
+	public DefaultTreeNode(List<TreeNode> _children,TreeMap<String,ByteBuffer> _attrs, OperationLog _log){
 		attrs = _attrs;
 		children = _children;
+		log = _log;
 	}
 
 	@Override
@@ -36,7 +51,7 @@
 	@Override
 	public DefaultTreeNodeAttribute getAttributes()
 	{
-		return new DefaultTreeNodeAttribute(children, attrs);
+		return new DefaultTreeNodeAttribute(children, attrs,log);
 	}
 	
 	@Override
@@ -59,6 +74,17 @@
 	{
 		return new DefaultTreeNode(children,attrs);
 	}
+
+	@Override
+	public OperationLog getLog() {
+		OperationLog _log = log;
+		log = new DefaultOperationLog();
+		return _log;
+	}
 	
+	@Override
+	public void putLog(OperationLog _log){
+		log = _log;
+	}
 	
 }
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeAttribute.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeAttribute.java	Fri Sep 05 19:49:35 2014 +0900
@@ -7,6 +7,10 @@
 import fj.data.TreeMap;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteAttributeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditorError;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
@@ -16,11 +20,20 @@
 {
 	public List<TreeNode> children;
 	public TreeMap<String,ByteBuffer> attrs;
+	OperationLog log ;
 	
 	public DefaultTreeNodeAttribute(List<TreeNode> _children,TreeMap<String,ByteBuffer> _attrs)
 	{
 		children = _children;
 		attrs = _attrs;
+		log = new DefaultOperationLog();
+	}
+	
+	public DefaultTreeNodeAttribute(List<TreeNode> _children,TreeMap<String,ByteBuffer> _attrs,OperationLog _log)
+	{
+		children = _children;
+		attrs = _attrs;
+		log = _log;
 	}
 
 	@Override
@@ -41,8 +54,8 @@
 		
 		TreeMap<String,ByteBuffer> newMap = attrs.delete(_key);
 		
-		TreeNode newNode = new DefaultTreeNode(children,newMap);
-		
+		OperationLog op = new DefaultOperationLog();;
+		TreeNode newNode = new DefaultTreeNode(children,newMap,op.add(new DeleteAttributeOperation(_key)));
 		return DefaultEither.newB(newNode);
 	}
 
@@ -58,8 +71,7 @@
 		
 		//TreeMap<String,ByteBuffer> raw = attrs.getAttributesAsRawMap();
 		TreeMap<String,ByteBuffer> newMap = attrs.set(_key,_value);
-		
-		TreeNode newNode = new DefaultTreeNode(children,newMap);
+		TreeNode newNode = new DefaultTreeNode(children,newMap,log.add(new PutAttributeOperation(_key,_value)));
 		
 		return DefaultEither.newB(newNode);
 	}
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeChildren.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeChildren.java	Fri Sep 05 19:49:35 2014 +0900
@@ -8,6 +8,11 @@
 import fj.data.TreeMap;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeChildren;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.AppendChildAtOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditorError;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
@@ -26,7 +31,7 @@
 	
 	public List<TreeNode> children;
 	public TreeMap<String,ByteBuffer> attrs;
-	
+
 	public DefaultTreeNodeChildren(List<TreeNode> _children,TreeMap<String,ByteBuffer> _attrs)
 	{
 		children = _children;
@@ -54,12 +59,11 @@
 			return DefaultEither.newA(NodeEditorError.INDEX_OUT_OF_BOUNDS);
 		}
 		
-		
-		
 		P2<List<TreeNode>,List<TreeNode>> split = children.splitAt(_pos);
 		List<TreeNode> newChildren = split._1().snoc(new DefaultTreeNode()).append(split._2());
-		TreeNode newNode = new DefaultTreeNode(newChildren,attrs);
-		
+		OperationLog op = new DefaultOperationLog();
+		TreeNode newNode = new DefaultTreeNode(newChildren,attrs,op.add(new AppendChildAtOperation(_pos)));
+
 		return DefaultEither.newB(newNode);
 	}
 
@@ -73,8 +77,8 @@
 		P2<List<TreeNode>,List<TreeNode>> split = children.splitAt(_pos);
 		List<TreeNode> newChildren = split._1().append(split._2().tail());
 		
-		
-		TreeNode newNode = new DefaultTreeNode(newChildren,attrs);
+		OperationLog op = new DefaultOperationLog();
+		TreeNode newNode = new DefaultTreeNode(newChildren,attrs,op.add(new DeleteChildAtOperation(_pos)));
 		
 		return DefaultEither.newB(newNode);
 	}
--- a/src/test/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/impl/node/DefaultAttributesTest.java	Fri Sep 05 19:40:32 2014 +0900
+++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/impl/node/DefaultAttributesTest.java	Fri Sep 05 19:49:35 2014 +0900
@@ -10,11 +10,9 @@
 import fj.data.Option;
 import fj.data.TreeMap;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.AttributesTest;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultAttributes;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNodeAttribute;
 
 public class DefaultAttributesTest extends AttributesTest
 {