diff src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java @ 179:817febd9c69b

change transaction
author tatsuki
date Tue, 17 Mar 2015 11:19:04 +0900
parents a2598139df64
children 066d9c5758dc
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java	Sun Mar 15 20:52:15 2015 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java	Tue Mar 17 11:19:04 2015 +0900
@@ -2,32 +2,30 @@
 
 import fj.data.TreeMap;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeContext;
 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.transaction.AtomicReservableReference;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultJungleTreeEditor;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTransactionManager;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
 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;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.GetOldTreeError;
-import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexManager;
 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex;
 
+import java.util.concurrent.atomic.AtomicReference;
+
 public class DefaultJungleTree implements JungleTree {
 
-  private final AtomicReservableReference<TreeContext> repository;
+  private final AtomicReference<TreeContext> repository;
   private final String uuid;
   private final ChangeListWriter writer;
   private final TreeEditor treeEditor;
 
   public DefaultJungleTree(TreeContext tc, String uuid, ChangeListWriter writer, TreeEditor editor) {
-    this.repository = new AtomicReservableReference<TreeContext>(tc);
+    this.repository = new AtomicReference<TreeContext>(tc);
     this.uuid = uuid;
     this.writer = writer;
     this.treeEditor = editor;
@@ -37,7 +35,7 @@
   public JungleTreeEditor getTreeEditor() {
     TreeContext tc = repository.get();
     DefaultTransactionManager txManager = new DefaultTransactionManager(writer, tc, repository, uuid);
-    TreeNode root = tc.getTreeNode();
+    TreeNode root = tc.getRoot();
     return new DefaultJungleTreeEditor(root, txManager, treeEditor);
   }
 
@@ -49,62 +47,53 @@
   @Override
   public TreeNode getRootNode() {
     TreeContext tc = repository.get();
-    ChangeSet cs = tc.getChangeSet();
-    return cs.getRoot();
+    return tc.getRoot();
   }
 
   @Override
   public InterfaceTraverser getTraverser(boolean useIndex) {
-    AtomicReservableReference<TreeContext>.Reservation reservation = repository.getReservation();
-    IndexManager indexManager = new IndexManager(reservation);
     TreeMap<String, TreeMap<String, TreeMap<TreeNode, TreeNode>>> index = getIndex();
     ParentIndex parentIndex = getParentIndex();
-    return new InterfaceTraverser(getRootNode(), index, parentIndex, indexManager, useIndex);
+    return new InterfaceTraverser(repository.get().getRoot(), index, parentIndex, useIndex);
   }
 
   @Override
   public ParentIndex getParentIndex() {
     TreeContext tc = repository.get();
-    ChangeSet cs = tc.getChangeSet();
-    return cs.getParentIndex();
+    return tc.getParentIndex();
   }
 
   @Override
   public TreeMap<String, TreeMap<String, TreeMap<TreeNode, TreeNode>>> getIndex() {
     TreeContext tc = repository.get();
-    ChangeSet cs = tc.getChangeSet();
-    return cs.getIndex();
+    return tc.getIndex();
   }
 
   @Override
   public long revision() {
     TreeContext tc = repository.get();
-    ChangeSet cs = tc.getChangeSet();
-    return cs.revision();
+    return tc.revision();
   }
 
   @Override
   public Either<Error, JungleTree> getOldTree(long revision) {
     TreeContext tc = repository.get();
-    ChangeSet cs = tc.getChangeSet();
 
-    for (; cs.revision() != revision;) {
-      cs = cs.prev();
-      if (cs == null)
+    for (; tc.revision() != revision;) {
+      tc = tc.prev();
+      if (tc == null)
         return DefaultEither.newA(GetOldTreeError.OLD_TREE_NOT_FOUND);
     }
 
-    TreeNode root = cs.getRoot();
 
-    TreeContext oldTc = new DefaultTreeContext(root, cs);
     String oldTreeUuid = uuid + revision;
-    JungleTree oldTree = new DefaultJungleTree(oldTc, oldTreeUuid, writer, treeEditor);
+    JungleTree oldTree = new DefaultJungleTree(tc, oldTreeUuid, writer, treeEditor);
     return DefaultEither.newB(oldTree);
   }
 
   @Override
   public Either<Error, TreeNode> getNodeOfPath(NodePath path) {
-    TreeNode node = repository.get().getTreeNode();
+    TreeNode node = repository.get().getRoot();
     for (int num : path) {
       if (num == -1)
         continue;