EMMA Coverage Report (generated Thu Jan 20 11:39:44 EST 2011)
[all classes][com.hammurapi.store]

COVERAGE SUMMARY FOR SOURCE FILE [DeputyReadWriteLock.java]

nameclass, %method, %block, %line, %
DeputyReadWriteLock.java100% (1/1)20%  (1/5)51%  (35/69)36%  (4/11)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class DeputyReadWriteLock100% (1/1)20%  (1/5)51%  (35/69)36%  (4/11)
DeputyReadWriteLock (DeputyLock, DeputyLock): void 0%   (0/1)0%   (0/9)0%   (0/4)
createDeputy (): DeputyReadWriteLock 0%   (0/1)0%   (0/19)0%   (0/1)
readLock (): Lock 0%   (0/1)0%   (0/3)0%   (0/1)
writeLock (): Lock 0%   (0/1)0%   (0/3)0%   (0/1)
DeputyReadWriteLock (ReadWriteLock, boolean, boolean): void 100% (1/1)100% (35/35)100% (4/4)

1package com.hammurapi.store;
2 
3import java.util.concurrent.locks.Lock;
4import java.util.concurrent.locks.ReadWriteLock;
5 
6/**
7 * This lock acts on behalf of another lock and acquires its own locks
8 * only if the master doesn't hold corresponding locks. This class is used
9 * to distribute store operations to multiple threads/processes.
10 * @author Pavel Vlasov
11 *
12 */
13public class DeputyReadWriteLock implements ReadWriteLock {
14        
15        private DeputyLock readLock;
16        private DeputyLock writeLock;
17        
18        public DeputyReadWriteLock(ReadWriteLock master, boolean readLocked, boolean writeLocked) {
19                this.readLock = new DeputyLock(master.readLock(), readLocked || writeLocked, false, null);
20                this.writeLock = new DeputyLock(master.writeLock(), writeLocked, !writeLocked && readLocked, "Read lock is already held, can't upgrade to write lock, locks can only be downgraded.");
21        }
22        
23        protected DeputyReadWriteLock(DeputyLock readLock, DeputyLock writeLock) {
24                this.readLock = readLock;
25                this.writeLock = writeLock;
26        }
27 
28        @Override
29        public Lock readLock() {
30                return readLock;
31        }
32 
33        @Override
34        public Lock writeLock() {
35                return writeLock;
36        }
37        
38        public DeputyReadWriteLock createDeputy() {
39                return new DeputyReadWriteLock(this, readLock.isLocked() || writeLock.isLocked(), writeLock.isLocked());
40        }
41 
42}

[all classes][com.hammurapi.store]
EMMA 2.0.5312 EclEmma Fix 2 (C) Vladimir Roubtsov