package zendo.playground.various.transactional;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @author bogdan.mocanu
*/
public class TestClass {
public static void main( String[] args ) {
AtomicInteger account1 = new AtomicInteger( 25000 );
AtomicInteger account2 = new AtomicInteger( 0 );
Transactional trans = new Transactional();
trans.put( "account1", account1 );
trans.put( "account2", account2 );
//System.out.println( "Before all: " + account1 + " | " + account2 );
trans.execute( new Transactional.Execution() {
protected void execute() throws Exception {
AtomicInteger account1 = get( "account1" );
AtomicInteger account2 = get( "account2" );
System.out.println( "Before op: " + account1 + " | " + account2 );
account1.set( account1.get() - 5000 );
account2.set( account2.get() + 5000 );
System.out.println( "After op: " + account1 + " | " + account2 );
throw new NullPointerException();
// rollback();
}
} );
account1 = trans.get( "account1" );
account2 = trans.get( "account2" );
System.out.println( "Finish: " + account1 + " | " + account2 );
}
public static void main2( String[] args ) {
boolean someCondition = false;
AtomicInteger account1 = new AtomicInteger( 25000 );
AtomicInteger account2 = new AtomicInteger( 0 );
{ // transactional block
try {
System.out.println( "Before op: " + account1 + " | " + account2 );
account1.set( account1.get() - 5000 );
account2.set( account2.get() + 5000 );
System.out.println( "After op: " + account1 + " | " + account2 );
if ( someCondition ) {
throw new NullPointerException();
}
} catch ( Exception exception ) {
// rollback
}
} // END of transactional block
System.out.println( "Finish: " + account1 + " | " + account2 );
}
}