diff src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java @ 54:650fe2a0dccc

modified tests
author Shoshi TAMAKI
date Fri, 08 Feb 2013 17:08:42 +0900
parents ed890dcb673e
children 57e965b73c9e
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java	Fri Feb 08 12:32:37 2013 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java	Fri Feb 08 17:08:42 2013 +0900
@@ -5,6 +5,8 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference.Reservation;
@@ -13,26 +15,27 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 
-public class DefaultTransactionManager implements TransactionManager
+public class DefaultTransactionManager<T extends TreeNode<T>> implements TransactionManager<T>
 {
-	private final AtomicReservableReference<DefaultChangeSet> repository;
-	private final DefaultChangeSet tip;
+	private final AtomicReservableReference<TreeContext<T>> repository;
+	private final TreeContext<T> tip;
 	private final ChangeListWriter writer;
 	private final String uuid;
 	
-	public DefaultTransactionManager(ChangeListWriter _writer,DefaultChangeSet _changeSet,
-			AtomicReservableReference<DefaultChangeSet> _repository,String _uuid)
+	public DefaultTransactionManager(ChangeListWriter _writer,TreeContext<T> _tip,
+			AtomicReservableReference<TreeContext<T>> _repository,String _uuid)
 	{
 		repository = _repository;
-		tip = _changeSet;
+		tip = _tip;
 		writer = _writer;
 		uuid = _uuid;
 	}
 	
 	@Override
-	public Either<Error,TransactionManager> commit(Node _newRoot,final TreeOperationLog _log)
+	public Either<Error,TransactionManager<T>> commit(T _newRoot,final TreeOperationLog _log)
 	{
-		long currentRevision = tip.revision();
+		ChangeSet cs = tip.getChangeSet();
+		long currentRevision = cs.revision();
 		long nextRevision = currentRevision + 1;
 		
 		ChangeList list = new ChangeList(){
@@ -42,15 +45,19 @@
 			}
 		};
 		
-		DefaultChangeSet changeSet = new DefaultChangeSet(_newRoot,tip,list,uuid,nextRevision);
-		Reservation reservation = repository.makeReservation(tip,changeSet);
+		Node root = _newRoot.getAsNode();
+		DefaultChangeSet newCs = new DefaultChangeSet(root,cs,list,uuid,nextRevision);
+		DefaultTreeContext<T> newContext = new DefaultTreeContext<T>(_newRoot,newCs);
+		
+		@SuppressWarnings("rawtypes")
+		Reservation reservation = repository.makeReservation(tip,newContext);
 		if(reservation == null){
 			return DefaultEither.newA((Error)new DefaultError());
 		}
 		Result r = writer.write(list);
 		if(r == Result.SUCCESS){
 			reservation.confirm();
-			TransactionManager txManager = new DefaultTransactionManager(writer,changeSet,repository,uuid);
+			TransactionManager<T> txManager = new DefaultTransactionManager<T>(writer,newContext,repository,uuid);
 			return DefaultEither.newB(txManager);
 		}
 		
@@ -66,6 +73,7 @@
 	@Override
 	public long getRevision()
 	{
-		return tip.revision();
+		ChangeSet cs = tip.getChangeSet();
+		return cs.revision();
 	}
 }