mirror of
https://github.com/Qortal/altcoinj.git
synced 2025-02-13 02:35:52 +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();
|
warnOnLockCycles();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CycleDetectingLockFactory factory = null;
|
private static CycleDetectingLockFactory.Policy policy;
|
||||||
|
public static CycleDetectingLockFactory factory;
|
||||||
|
|
||||||
public static ReentrantLock lock(String name) {
|
public static ReentrantLock lock(String name) {
|
||||||
if (factory != null)
|
return factory.newReentrantLock(name);
|
||||||
return factory.newReentrantLock(name);
|
|
||||||
else
|
|
||||||
return new ReentrantLock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void warnOnLockCycles() {
|
public static void warnOnLockCycles() {
|
||||||
factory = CycleDetectingLockFactory.newInstance(CycleDetectingLockFactory.Policies.WARN);
|
setPolicy(CycleDetectingLockFactory.Policies.WARN);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void throwOnLockCycles() {
|
public static void throwOnLockCycles() {
|
||||||
factory = CycleDetectingLockFactory.newInstance(CycleDetectingLockFactory.Policies.THROW);
|
setPolicy(CycleDetectingLockFactory.Policies.THROW);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ignoreLockCycles() {
|
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
|
@Test
|
||||||
public void lockCycles() {
|
public void lockCycles() {
|
||||||
|
CycleDetectingLockFactory.Policy oldPolicy = Locks.getPolicy();
|
||||||
Locks.throwOnLockCycles();
|
Locks.throwOnLockCycles();
|
||||||
final ReentrantLock lock = Locks.lock("test");
|
final ReentrantLock lock = Locks.lock("test");
|
||||||
wallet = new Wallet(params);
|
wallet = new Wallet(params);
|
||||||
lock.lock();
|
lock.lock();
|
||||||
int foo = wallet.getKeychainSize();
|
wallet.getKeychainSize();
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
// Now make sure if we invert the lock, we get an exception.
|
// Now make sure if we invert the lock, we get an exception.
|
||||||
wallet.addEventListener(new AbstractWalletEventListener() {
|
wallet.addEventListener(new AbstractWalletEventListener() {
|
||||||
@ -937,6 +938,7 @@ public class WalletTest {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
wallet.addKey(new ECKey());
|
wallet.addKey(new ECKey());
|
||||||
|
Locks.setPolicy(oldPolicy);
|
||||||
}
|
}
|
||||||
|
|
||||||
// There is a test for spending a coinbase transaction as it matures in BlockChainTest#coinbaseTransactionAvailability
|
// There is a test for spending a coinbase transaction as it matures in BlockChainTest#coinbaseTransactionAvailability
|
||||||
|
Loading…
x
Reference in New Issue
Block a user