@@ -0,0 +1,763 @@
+package transaction;%0A%0Aimport transaction.Lock.Token;%0A%0A/**%0A * A %7B@link TransactionContent%7D that gives write permissions on the dataVault%0A * @author Balazs Pete%0A *%0A * @param %3CKEY%3E%0A * @param %3CVALUE%3E%0A */%0Apublic abstract class SudoTransactionContent%3CKEY, VALUE, RETURN%3E extends TransactionContent%3CKEY, VALUE, RETURN%3E %7B%0A%0A%09/**%0A%09 * %0A%09 */%0A%09private static final long serialVersionUID = 3125515031068969990L;%0A%0A%09@Override%0A%09public void run() throws FailedTransactionException %7B%0A%09%09Token t = dataVault.writeLock();%0A%09%09try %7B%0A%09%09%09script(t);%0A%09%09%7D catch (LockException e) %7B%0A%09%09%09throw new FailedTransactionException(e.getMessage());%0A%09%09%7D finally %7B%0A%09%09%09dataVault.writeUnlock(t);%0A%09%09%7D%0A%09%7D%0A%09%0A%09@Override%0A%09public abstract void script(Token t) throws FailedTransactionException, LockException;%0A%0A%7D%0A

Add SudoTransactionContent allowing to modify the input data structure