Package org.apache.ojb.odmg.locking

Examples of org.apache.ojb.odmg.locking.LockManager


     *
     * @exception  LockNotGrantedException    Description of Exception
     */
    void doSingleLock(ClassDescriptor cld, Object obj, Identity oid, int lockMode) throws LockNotGrantedException
    {
        LockManager lm = implementation.getLockManager();
        if (cld.isAcceptLocks())
        {
            if (lockMode == Transaction.READ)
            {
                if (log.isDebugEnabled()) log.debug("Do READ lock on object: " + oid);
                if(!lm.readLock(this, oid, obj))
                {
                    throw new LockNotGrantedException("Can not lock for READ: " + oid);
                }
            }
            else if (lockMode == Transaction.WRITE)
            {
                if (log.isDebugEnabled()) log.debug("Do WRITE lock on object: " + oid);
                if(!lm.writeLock(this, oid, obj))
                {
                    throw new LockNotGrantedException("Can not lock for WRITE: " + oid);
                }
            }
            else if (lockMode == Transaction.UPGRADE)
            {
                if (log.isDebugEnabled()) log.debug("Do UPGRADE lock on object: " + oid);
                if(!lm.upgradeLock(this, oid, obj))
                {
                    throw new LockNotGrantedException("Can not lock for UPGRADE: " + oid);
                }
            }
        }
View Full Code Here


     */
    protected synchronized void doClose()
    {
        try
        {
            LockManager lm = getImplementation().getLockManager();
            Enumeration en = objectEnvelopeTable.elements();
            while (en.hasMoreElements())
            {
                ObjectEnvelope oe = (ObjectEnvelope) en.nextElement();
                lm.releaseLock(this, oe.getIdentity(), oe.getObject());
            }

            //remove locks for objects which haven't been materialized yet
            for (Iterator it = unmaterializedLocks.iterator(); it.hasNext();)
            {
                lm.releaseLock(this, it.next());
            }

            // this tx is no longer interested in materialization callbacks
            unRegisterFromAllIndirectionHandlers();
            unRegisterFromAllCollectionProxies();
View Full Code Here

        Article a = new Article();
        a.setArticleId(333);

        tx1.begin();
        tx2.begin();
        LockManager lm = LockManagerFactory.getLockManager();
        boolean success1 = lm.writeLock(tx1, a);
        boolean success2 = lm.writeLock(tx2, a);

        boolean success3 = lm.releaseLock(tx1, a);

        assertTrue("1st lock should succeed", success1);
        assertTrue("2nd lock should not succeed", !success2);
        assertTrue("release should succeed", success3);
View Full Code Here

        Article a2 = new Article();
        a2.setArticleId(333);

        tx1.begin();
        tx2.begin();
        LockManager lm = LockManagerFactory.getLockManager();

        assertFalse(tx1.getGUID().equals(tx2.getGUID()));

        assertTrue("1st lock should succeed", lm.writeLock(tx1, a1));
        assertFalse("2nd lock should not succeed", lm.writeLock(tx2, a2));
        lm.releaseLock(tx2, a2);
        lm.releaseLock(tx2, a1);
        assertFalse(lm.checkWrite(tx2, a1));
        assertFalse(lm.checkWrite(tx2, a2));
        assertTrue(lm.checkWrite(tx1, a1));
        assertTrue(lm.checkWrite(tx1, a2));
        //assertFalse("2nd release should not succeed", lm.releaseLock(tx2, a2));
        //assertFalse("2nd release should not succeed", lm.releaseLock(tx2, a1));
        assertTrue("release should succeed", lm.releaseLock(tx1, a2));
        assertTrue("2nd object lock should succeed", lm.writeLock(tx2, a2));
        assertTrue("release 2nd object lock should succeed", lm.releaseLock(tx2, a2));

        try
        {
            tx1.abort();
            tx2.abort();
View Full Code Here

        tx.begin();
        for (int i = 0; i < arr.length; i++)
        {
            tx.lock(arr[i], Transaction.WRITE);
        }
        LockManager lm = LockManagerFactory.getLockManager();
        boolean success = lm.writeLock(tx, arr[(loops - 2)]);
        assertTrue("lock should succeed", success);
        tx.commit();

        TransactionImpl tx2 = (TransactionImpl) odmg2.newTransaction();
        tx2.begin();
        success = lm.writeLock(tx2, arr[(loops - 2)]);
        assertTrue("lock should succeed", success);

        OQLQuery query = odmg2.newOQLQuery();
        String sql = "select allArticles from " + Article.class.getName() +
                " where articleName = \"" + PRE + "testLockLoop" + "\"";
View Full Code Here

        Article a = new Article();
        a.setArticleId(333);

        tx1.begin();
        tx2.begin();
        LockManager lm = LockManagerFactory.getLockManager();
        boolean success1 = lm.writeLock(tx1, a);
        boolean success2 = lm.writeLock(tx2, a);

        boolean success3 = lm.releaseLock(tx1, a);

        assertTrue("1st lock should succeed", success1);
        assertTrue("2nd lock should not succeed", !success2);
        assertTrue("release should succeed", success3);
View Full Code Here

        Article a2 = new Article();
        a2.setArticleId(333);

        tx1.begin();
        tx2.begin();
        LockManager lm = LockManagerFactory.getLockManager();

        assertFalse(tx1.getGUID().equals(tx2.getGUID()));

        assertTrue("1st lock should succeed", lm.writeLock(tx1, a1));
        assertFalse("2nd lock should not succeed", lm.writeLock(tx2, a2));
        lm.releaseLock(tx2, a2);
        lm.releaseLock(tx2, a1);
        assertFalse(lm.checkWrite(tx2, a1));
        assertFalse(lm.checkWrite(tx2, a2));
        assertTrue(lm.checkWrite(tx1, a1));
        assertTrue(lm.checkWrite(tx1, a2));
        //assertFalse("2nd release should not succeed", lm.releaseLock(tx2, a2));
        //assertFalse("2nd release should not succeed", lm.releaseLock(tx2, a1));
        assertTrue("release should succeed", lm.releaseLock(tx1, a2));
        assertTrue("2nd object lock should succeed", lm.writeLock(tx2, a2));
        assertTrue("release 2nd object lock should succeed", lm.releaseLock(tx2, a2));

        try
        {
            tx1.abort();
            tx2.abort();
View Full Code Here

        tx.begin();
        for(int i = 0; i < arr.length; i++)
        {
            tx.lock(arr[i], Transaction.WRITE);
        }
        LockManager lm = LockManagerFactory.getLockManager();
        boolean success = lm.writeLock(tx, arr[(loops - 2)]);
        assertTrue("lock should succeed", success);
        tx.commit();

        TransactionImpl tx2 = (TransactionImpl) odmg2.newTransaction();
        tx2.begin();
        success = lm.writeLock(tx2, arr[(loops - 2)]);
        assertTrue("lock should succeed", success);

        OQLQuery query = odmg2.newOQLQuery();
        String sql = "select allArticles from " + Article.class.getName() +
                " where articleName = \"" + PRE + "testLockLoop" + "\"";
View Full Code Here

            assignReferenceFKs(
                    obj,
                    this.getBroker().getClassDescriptor(obj.getClass()).getObjectReferenceDescriptors());
        }

        LockManager lm = LockManagerFactory.getLockManager();
        if (lockMode == Transaction.READ)
        {
            if (!lm.readLock(this, obj))
            {
                throw new LockNotGrantedException("Can not lock for READ: " + obj);
            }
        }
        else if (lockMode == Transaction.WRITE)
        {
            if (!lm.writeLock(this, obj))
            {
                throw new LockNotGrantedException("Can not lock for WRITE: " + obj);
            }
        }
        else if (lockMode == Transaction.UPGRADE)
        {
            if (!lm.upgradeLock(this, obj))
            {
                throw new LockNotGrantedException("Can not lock for UPGRADE: " + obj);
            }
        }
        try
        {
            if (log.isDebugEnabled()) log.debug("registering lock on object at " + System.currentTimeMillis());
            register(obj, lockMode);
        }
        catch (Throwable t)
        {
            log.error("Locking obj " + obj + " with lock mode " + lockMode + " failed", t);
            lm.releaseLock(this, obj);
            throw new LockNotGrantedException(t.getMessage());
        }
    }
View Full Code Here

     *
     * @exception  LockNotGrantedException    Description of Exception
     */
    void doSingleLock(ClassDescriptor cld, Object obj, Identity oid, int lockMode) throws LockNotGrantedException
    {
        LockManager lm = lm = implementation.getLockManager();
        if (cld.isAcceptLocks())
        {
            if (lockMode == Transaction.READ)
            {
                if (log.isDebugEnabled()) log.debug("Do READ lock on object: " + oid);
                if(!lm.readLock(this, oid, obj))
                {
                    throw new LockNotGrantedException("Can not lock for READ: " + oid);
                }
            }
            else if (lockMode == Transaction.WRITE)
            {
                if (log.isDebugEnabled()) log.debug("Do WRITE lock on object: " + oid);
                if(!lm.writeLock(this, oid, obj))
                {
                    throw new LockNotGrantedException("Can not lock for WRITE: " + oid);
                }
            }
            else if (lockMode == Transaction.UPGRADE)
            {
                if (log.isDebugEnabled()) log.debug("Do UPGRADE lock on object: " + oid);
                if(!lm.upgradeLock(this, oid, obj))
                {
                    throw new LockNotGrantedException("Can not lock for UPGRADE: " + oid);
                }
            }
        }
View Full Code Here

TOP

Related Classes of org.apache.ojb.odmg.locking.LockManager

Copyright © 2018 www.massapicom. 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.