mirror of
https://github.com/Qortal/altcoinj.git
synced 2025-02-12 18:25:51 +00:00
Some more tweaks to the Locks class.
This commit is contained in:
parent
9de6dca8c1
commit
9d87997736
@ -32,24 +32,31 @@ public class Locks {
|
||||
warnOnLockCycles();
|
||||
}
|
||||
|
||||
public static CycleDetectingLockFactory factory = null;
|
||||
private static CycleDetectingLockFactory.Policy policy;
|
||||
public static CycleDetectingLockFactory factory;
|
||||
|
||||
public static ReentrantLock lock(String name) {
|
||||
if (factory != null)
|
||||
return factory.newReentrantLock(name);
|
||||
else
|
||||
return new ReentrantLock();
|
||||
return factory.newReentrantLock(name);
|
||||
}
|
||||
|
||||
public static void warnOnLockCycles() {
|
||||
factory = CycleDetectingLockFactory.newInstance(CycleDetectingLockFactory.Policies.WARN);
|
||||
setPolicy(CycleDetectingLockFactory.Policies.WARN);
|
||||
}
|
||||
|
||||
public static void throwOnLockCycles() {
|
||||
factory = CycleDetectingLockFactory.newInstance(CycleDetectingLockFactory.Policies.THROW);
|
||||
setPolicy(CycleDetectingLockFactory.Policies.THROW);
|
||||
}
|
||||
|
||||
public static void ignoreLockCycles() {
|
||||
factory = null;
|
||||
setPolicy(CycleDetectingLockFactory.Policies.DISABLED);
|
||||
}
|
||||
|
||||
public static void setPolicy(CycleDetectingLockFactory.Policy policy) {
|
||||
Locks.policy = policy;
|
||||
factory = CycleDetectingLockFactory.newInstance(policy);
|
||||
}
|
||||
|
||||
public static CycleDetectingLockFactory.Policy getPolicy() {
|
||||
return policy;
|
||||
}
|
||||
}
|
||||
|
@ -918,11 +918,12 @@ public class WalletTest {
|
||||
|
||||
@Test
|
||||
public void lockCycles() {
|
||||
CycleDetectingLockFactory.Policy oldPolicy = Locks.getPolicy();
|
||||
Locks.throwOnLockCycles();
|
||||
final ReentrantLock lock = Locks.lock("test");
|
||||
wallet = new Wallet(params);
|
||||
lock.lock();
|
||||
int foo = wallet.getKeychainSize();
|
||||
wallet.getKeychainSize();
|
||||
lock.unlock();
|
||||
// Now make sure if we invert the lock, we get an exception.
|
||||
wallet.addEventListener(new AbstractWalletEventListener() {
|
||||
@ -937,6 +938,7 @@ public class WalletTest {
|
||||
}
|
||||
});
|
||||
wallet.addKey(new ECKey());
|
||||
Locks.setPolicy(oldPolicy);
|
||||
}
|
||||
|
||||
// There is a test for spending a coinbase transaction as it matures in BlockChainTest#coinbaseTransactionAvailability
|
||||
|
Loading…
x
Reference in New Issue
Block a user