Transaction isolation level

These transaction isolation levels are supported:

The transaction isolation level can only be set before a transaction is started. The isolation level is in effect until a transaction commits or rolls-back. Example 4.5, “Transaction isolation level” demonstrates starting a serializable and a read committed - snapshot transaction.

Example 4.5. Transaction isolation level

//     $Revision: 1.1.2.1 $

package com.kabira.snippets.transactions;

import com.kabira.platform.Transaction;
import com.kabira.platform.Transaction.Rollback;

/**
 * Transaction isolation level
 * <p>
 * <h2> Target Nodes</h2>
 * <ul>
 * <li> <b>domainnode</b> = A
 * </ul>
 */
public class IsolationLevel
{
    /**
     * Main entry point
     * @param args  Not used
     */
    public static void main(String [] args)
    {
        Transaction.Properties properties =  new Transaction.Properties();

        //
        //  Run a serializable transaction
        //
        properties.setTransactionName("Serializable");
        properties.setIsolationLevel(
            Transaction.IsolationLevel.SERIALIZABLE);
        new Transaction()
        {
            @Override
            protected void run() throws Rollback
            {
                System.out.println(
                    getActiveTransactionProperties().getTransactionName()
                    + " using isolation level "
                    + getActiveTransactionProperties().getIsolationLevel());
            }
        }.execute(properties);

        //
        //  Run a read committed snapshot transaction
        //
        properties.setTransactionName("Read Committed - Snapshot");
        properties.setIsolationLevel(
            Transaction.IsolationLevel.READ_COMMITTED_SNAPSHOT);
        new Transaction()
        {
            @Override
            protected void run() throws Rollback
            {
                System.out.println(
                    getActiveTransactionProperties().getTransactionName()
                    + " using isolation level "
                    + getActiveTransactionProperties().getIsolationLevel());
            }
        }.execute(properties);
    }
}

When this snippet is run it outputs:

[A] Serializable using isolation level SERIALIZABLE
[A] Read Committed - Snapshot using isolation level READ_COMMITTED_SNAPSHOT