Package org.apache.ojb.otm

Source Code of org.apache.ojb.otm.LockTestBase

package org.apache.ojb.otm;

/**
* This is the base abstract class for all isolation TestSuites
* based on the ODMG locking documentation
*/

import junit.framework.TestCase;
import org.apache.ojb.broker.Article;
import org.apache.ojb.broker.PersistenceBrokerFactory;
import org.apache.ojb.otm.core.Transaction;
import org.apache.ojb.otm.lock.LockingException;
import org.apache.ojb.otm.lock.ObjectLock;
import org.apache.ojb.otm.lock.isolation.TransactionIsolation;
import org.apache.ojb.otm.lock.wait.NoWaitStrategy;
import org.apache.ojb.otm.lock.wait.TimeoutStrategy;

public abstract class LockTestBase extends TestCase
{
    protected TestKit _kit;
    protected OTMConnection _conn1;
    protected OTMConnection _conn2;
    protected Transaction _tx1;
    protected Transaction _tx2;
    protected ObjectLock _lock;
    protected TransactionIsolation _isolation;

    public LockTestBase(String name)
    {
        super(name);
    }

    protected abstract TransactionIsolation newIsolation();

    public void setUp()
    {
        _kit = TestKit.getTestInstance();
        _kit.setLockWaitStrategy(new NoWaitStrategy());
        _isolation = newIsolation();
        try
        {
            _conn1 = _kit.acquireConnection(PersistenceBrokerFactory.getDefaultKey());
            _tx1 = _kit.getTransaction(_conn1);
            _tx1.begin();

            _conn2 = _kit.acquireConnection(PersistenceBrokerFactory.getDefaultKey());
            _tx2 = _kit.getTransaction(_conn2);
            _tx2.begin();

            Article obj =  Article.createInstance();
            _lock = new ObjectLock(_conn1.getIdentity(obj));
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }

    }

    protected boolean readLock(Transaction tx)
    {
        try
        {
            _isolation.readLock(tx, _lock);
            return true;
        }
        catch (LockingException ex)
        {
            return false;
        }
    }

    protected boolean writeLock(Transaction tx)
    {
        try
        {
            _isolation.writeLock(tx, _lock);
            return true;
        }
        catch (LockingException ex)
        {
            return false;
        }
    }

    protected boolean releaseLock(Transaction tx)
    {
        _lock.releaseLock(tx);
        return true;
    }

    public void tearDown()
    {
        try
        {
            _tx1.rollback();
      _conn1.close();
            _conn1 = null;

            _tx2.rollback();
      _conn2.close();
            _conn2 = null;
        }
        catch (Throwable t)
        {
        }
        _kit.setLockWaitStrategy(new TimeoutStrategy());
    }
}
TOP

Related Classes of org.apache.ojb.otm.LockTestBase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.