Mercurial > hg > Members > tatsuki > bench > jungle-core
annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java @ 181:7282ee629af3
add miss
author | tatsuki |
---|---|
date | Tue, 17 Mar 2015 15:38:27 +0900 |
parents | 817febd9c69b |
children |
rev | line source |
---|---|
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction; |
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
2 |
169 | 3 |
45 | 4 import java.util.Iterator; |
179 | 5 import java.util.concurrent.atomic.AtomicReference; |
103 | 6 |
174 | 7 import fj.data.TreeMap; |
45 | 8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; |
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter; | |
179 | 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeContext; |
54 | 11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; |
53 | 12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog; |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; | |
154 | 14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; |
45 | 15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultError; | |
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; |
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; |
149 | 19 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; |
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
20 |
154 | 21 public class DefaultTransactionManager implements TransactionManager { |
179 | 22 private final AtomicReference<TreeContext> repository; |
154 | 23 private final TreeContext tip; |
24 private final ChangeListWriter writer; | |
25 private final String uuid; | |
26 | |
27 public DefaultTransactionManager(ChangeListWriter _writer, TreeContext _tip, | |
179 | 28 AtomicReference<TreeContext> _repository, String _uuid) { |
154 | 29 repository = _repository; |
30 tip = _tip; | |
31 writer = _writer; | |
32 uuid = _uuid; | |
33 } | |
34 | |
35 @Override | |
179 | 36 public Either<Error, TransactionManager> commit(TreeNode newRoot, final TreeOperationLog _log) { |
37 long currentRevision = tip.revision(); | |
154 | 38 long nextRevision = currentRevision + 1; |
39 | |
179 | 40 final String _treeName = tip.getTreeName(); |
154 | 41 ChangeList list = new ChangeList() { |
42 @Override | |
43 public Iterator<TreeOperation> iterator() { | |
44 return _log.iterator(); | |
45 } | |
46 | |
47 @Override | |
48 public String getTreeName() { | |
49 return _treeName; | |
50 } | |
51 | |
52 @Override | |
53 public String uuid() { | |
54 return uuid; | |
55 } | |
135 | 56 |
154 | 57 }; |
181 | 58 |
179 | 59 InterfaceTraverser traverser = new InterfaceTraverser(newRoot, true); |
60 traverser.createIndex(); | |
61 TreeMap<String, TreeMap<String, TreeMap<TreeNode, TreeNode>>> index = traverser.getIndex(); | |
62 ParentIndex parentIndex = traverser.getParentIndex(); | |
63 TreeContext newTreeContext = new DefaultTreeContext(newRoot , tip, list, uuid, _treeName, nextRevision,index,parentIndex.getParentIndex()); | |
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
64 |
179 | 65 if (repository.compareAndSet(newTreeContext.prev(),newTreeContext)) { |
66 TransactionManager txManager = new DefaultTransactionManager(writer, newTreeContext, repository, uuid); | |
67 return DefaultEither.newB(txManager); | |
154 | 68 } |
179 | 69 |
70 return DefaultEither.newA((Error) new DefaultError()); | |
154 | 71 } |
45 | 72 |
154 | 73 @Override |
74 public String getUUID() { | |
75 return uuid; | |
76 } | |
77 | |
78 @Override | |
79 public long getRevision() { | |
179 | 80 return tip.revision(); |
154 | 81 } |
38
cb9fabaedfd4
added tests and changed testing provider to junit47
Shoshi TAMAKI
parents:
diff
changeset
|
82 } |