db-ojb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Armin Waibel <arm...@apache.org>
Subject Re: [patch] a couple more quick fixes
Date Thu, 10 Jun 2004 14:16:09 GMT
Hi,

I tried to apply Roberts patches in Eclipse3.0M9 without success.
Could someone else check in these patches?

regards,
Armin

Robert Sfeir wrote:
> No biggie here.  I am working on fixing recursions.  These will take a 
> bit longer since i need to understand what the code is doing better.  
> There are 14 instances of Tail Recursions.
> 
> 
> ------------------------------------------------------------------------
> 
> Index: AbstractTransactionManagerFactory.java
> ===================================================================
> RCS file: /home/cvspublic/db-ojb/src/java/org/apache/ojb/broker/transaction/tm/AbstractTransactionManagerFactory.java,v
> retrieving revision 1.1
> diff -r1.1 AbstractTransactionManagerFactory.java
> 103c103
> <                 throw new TransactionManagerFactoryException("Can't lookup transaction
manager:" + EOL + msg.toString());
> ---
> 
>>                throw new TransactionManagerFactoryException("Can't lookup transaction
manager:" + EOL + msg);
>>
>>
>>------------------------------------------------------------------------
>>
>>Index: PBKey.java
>>===================================================================
>>RCS file: /home/cvspublic/db-ojb/src/java/org/apache/ojb/broker/PBKey.java,v
>>retrieving revision 1.10
>>diff -r1.10 PBKey.java
>>77c77
>><             hashCode = new String(this.jcdAlias + this.user + this.password).hashCode();
>>---
>>
>>>            hashCode = ( this.jcdAlias + this.user + this.password ).hashCode();
>>>
>>>
>>>------------------------------------------------------------------------
>>>
>>>Index: ReadCommittedStrategy.java
>>>===================================================================
>>>RCS file: /home/cvspublic/db-ojb/src/java/org/apache/ojb/odmg/locking/ReadCommittedStrategy.java,v
>>>retrieving revision 1.4
>>>diff -r1.4 ReadCommittedStrategy.java
>>>1c1
>>>< package org.apache.ojb.odmg.locking;
>>>
>>>---
>>>
>>>>package org.apache.ojb.odmg.locking;
>>>
>>>17,186c17,176
>>>< 
>>>
>>>< import org.apache.ojb.odmg.TransactionImpl;
>>>
>>>< 
>>>
>>>< /**
>>>
>>><  * The implementation of the Commited Reads Locking stra
>>>
>>><  * ReadCommitted - Reads and Writes require locks.
>>>
>>><  *
>>>
>>><  * Locks are acquired for reading and modifying the database.
>>>
>>><  * Locks are released after reading but locks on modified objects
>>>
>>><  * are held until EOT.
>>>
>>><  *
>>>
>>><  * Allows:
>>>
>>><  * Non-Repeatable Reads
>>>
>>><  * Phantom Readstegy.
>>>
>>><  *
>>>
>>><  * @author Thomas Mahler & David Dixon-Peugh
>>>
>>><  */
>>>
>>>< public class ReadCommittedStrategy extends AbstractLockStrategy
>>>
>>>< {
>>>
>>>< 
>>>
>>><     /**
>>>
>>><      * acquire a read lock on Object obj for Transaction tx.
>>>
>>><      * @param tx the transaction requesting the lock
>>>
>>><      * @param obj the Object to be locked
>>>
>>><      * @return true if successful, else false
>>>
>>><      *
>>>
>>><      */
>>>
>>><     public boolean readLock(TransactionImpl tx, Object obj)
>>>
>>><     {
>>>
>>>< 
>>>
>>><         LockEntry writer = getWriter(obj);
>>>
>>><         if (writer == null)
>>>
>>><         {
>>>
>>><             addReader(tx, obj);
>>>
>>><             // if there has been a successful write locking, try again
>>>
>>><             if (getWriter(obj) == null)
>>>
>>><                 return true;
>>>
>>><             else
>>>
>>><             {
>>>
>>><                 removeReader(tx, obj);
>>>
>>><                 return readLock(tx, obj);
>>>
>>><             }
>>>
>>><         }
>>>
>>><         if (writer.isOwnedBy(tx))
>>>
>>><         {
>>>
>>><             return true;    // If I'm the writer, I can read.
>>>
>>><         }
>>>
>>><         else
>>>
>>><         {
>>>
>>><             return false;
>>>
>>><         }
>>>
>>><     }
>>>
>>>< 
>>>
>>><     /**
>>>
>>><      * acquire a write lock on Object obj for Transaction tx.
>>>
>>><      * @param tx the transaction requesting the lock
>>>
>>><      * @param obj the Object to be locked
>>>
>>><      * @return true if successful, else false
>>>
>>><      *
>>>
>>><      */
>>>
>>><     public boolean writeLock(TransactionImpl tx, Object obj)
>>>
>>><     {
>>>
>>><         LockEntry writer = getWriter(obj);
>>>
>>><         // if there is no writer yet we can try to get the global write lock
>>>
>>><         if (writer == null)
>>>
>>><         {
>>>
>>><             // if lock could be acquired return true
>>>
>>><             if (setWriter(tx, obj))
>>>
>>><                 return true;
>>>
>>><             // else try again
>>>
>>><             else
>>>
>>><                 return writeLock(tx, obj);
>>>
>>><         }
>>>
>>><         if (writer.isOwnedBy(tx))
>>>
>>><         {
>>>
>>><             return true;    // If I'm the writer, then I can write.
>>>
>>><         }
>>>
>>>< 
>>>
>>><         return false;
>>>
>>><     }
>>>
>>>< 
>>>
>>><     /**
>>>
>>><      * acquire a lock upgrade (from read to write) lock on Object obj for
Transaction tx.
>>>
>>><      * @param tx the transaction requesting the lock
>>>
>>><      * @param obj the Object to be locked
>>>
>>><      * @return true if successful, else false
>>>
>>><      *
>>>
>>><      */
>>>
>>><     public boolean upgradeLock(TransactionImpl tx, Object obj)
>>>
>>><     {
>>>
>>><         LockEntry writer = getWriter(obj);
>>>
>>><         if (writer == null)
>>>
>>><         {
>>>
>>><             // if lock could be acquired return true
>>>
>>><             if (setWriter(tx, obj))
>>>
>>><                 return true;
>>>
>>><             // else try again
>>>
>>><             else
>>>
>>><                 return upgradeLock(tx, obj);
>>>
>>><         }
>>>
>>><         if (writer.isOwnedBy(tx))
>>>
>>><         {
>>>
>>><             return true;    // If I already have Write, then I've upgraded.
>>>
>>><         }
>>>
>>>< 
>>>
>>><         return false;
>>>
>>><     }
>>>
>>>< 
>>>
>>><     /**
>>>
>>><      * release a lock on Object obj for Transaction tx.
>>>
>>><      * @param tx the transaction releasing the lock
>>>
>>><      * @param obj the Object to be unlocked
>>>
>>><      * @return true if successful, else false
>>>
>>><      *
>>>
>>><      */
>>>
>>><     public boolean releaseLock(TransactionImpl tx, Object obj)
>>>
>>><     {
>>>
>>><         LockEntry writer = getWriter(obj);
>>>
>>>< 
>>>
>>><         if (writer != null && writer.isOwnedBy(tx))
>>>
>>><         {
>>>
>>><             removeWriter(writer);
>>>
>>><             return true;
>>>
>>><         }
>>>
>>>< 
>>>
>>><         if (hasReadLock(tx, obj))
>>>
>>><         {
>>>
>>><             removeReader(tx, obj);
>>>
>>><             return true;
>>>
>>><         }
>>>
>>><         return false;
>>>
>>><     }
>>>
>>>< 
>>>
>>><     /**
>>>
>>><      * checks whether the specified Object obj is read-locked by Transaction
tx.
>>>
>>><      * @param tx the transaction
>>>
>>><      * @param obj the Object to be checked
>>>
>>><      * @return true if lock exists, else false
>>>
>>><      */
>>>
>>><     public boolean checkRead(TransactionImpl tx, Object obj)
>>>
>>><     {
>>>
>>><         if (hasReadLock(tx, obj))
>>>
>>><         {
>>>
>>><             return true;
>>>
>>><         }
>>>
>>><         LockEntry writer = getWriter(obj);
>>>
>>><         if (writer.isOwnedBy(tx))
>>>
>>><         {
>>>
>>><             return true;
>>>
>>><         }
>>>
>>><         return false;
>>>
>>><     }
>>>
>>>< 
>>>
>>><     /**
>>>
>>><      * checks whether the specified Object obj is write-locked by Transaction
tx.
>>>
>>><      * @param tx the transaction
>>>
>>><      * @param obj the Object to be checked
>>>
>>><      * @return true if lock exists, else false
>>>
>>><      */
>>>
>>><     public boolean checkWrite(TransactionImpl tx, Object obj)
>>>
>>><     {
>>>
>>><         LockEntry writer = getWriter(obj);
>>>
>>><         if (writer == null)
>>>
>>><             return false;
>>>
>>><         else if (writer.isOwnedBy(tx))
>>>
>>><             return true;
>>>
>>><         else
>>>
>>><             return false;
>>>
>>><     }
>>>
>>>< }
>>>
>>>---
>>>
>>>>import org.apache.ojb.odmg.TransactionImpl;
>>>>
>>>>/**
>>>> * The implementation of the Commited Reads Locking stra
>>>> * ReadCommitted - Reads and Writes require locks.
>>>> *
>>>> * Locks are acquired for reading and modifying the database.
>>>> * Locks are released after reading but locks on modified objects
>>>> * are held until EOT.
>>>> *
>>>> * Allows:
>>>> * Non-Repeatable Reads
>>>> * Phantom Readstegy.
>>>> *
>>>> * @author Thomas Mahler & David Dixon-Peugh
>>>> */
>>>>public class ReadCommittedStrategy extends AbstractLockStrategy
>>>>{
>>>>
>>>>    /**
>>>>     * acquire a read lock on Object obj for Transaction tx.
>>>>     * @param tx the transaction requesting the lock
>>>>     * @param obj the Object to be locked
>>>>     * @return true if successful, else false
>>>>     *
>>>>     */
>>>>    public boolean readLock(TransactionImpl tx, Object obj)
>>>>    {
>>>>
>>>>        LockEntry writer = getWriter(obj);
>>>>        if (writer == null)
>>>>        {
>>>>            addReader(tx, obj);
>>>>            // if there has been a successful write locking, try again
>>>>            if (getWriter(obj) == null)
>>>>                return true;
>>>>            else
>>>>            {
>>>>                removeReader(tx, obj);
>>>>                return readLock(tx, obj);
>>>>            }
>>>>        }
>>>>      return writer.isOwnedBy( tx );
>>>>    }
>>>>
>>>>    /**
>>>>     * acquire a write lock on Object obj for Transaction tx.
>>>>     * @param tx the transaction requesting the lock
>>>>     * @param obj the Object to be locked
>>>>     * @return true if successful, else false
>>>>     *
>>>>     */
>>>>    public boolean writeLock(TransactionImpl tx, Object obj)
>>>>    {
>>>>        LockEntry writer = getWriter(obj);
>>>>        // if there is no writer yet we can try to get the global write lock
>>>>        if (writer == null)
>>>>        {
>>>>            // if lock could be acquired return true
>>>>            if (setWriter(tx, obj))
>>>>                return true;
>>>>            // else try again
>>>>            else
>>>>                return writeLock(tx, obj);
>>>>        }
>>>>        if (writer.isOwnedBy(tx))
>>>>        {
>>>>            return true;    // If I'm the writer, then I can write.
>>>>        }
>>>>
>>>>        return false;
>>>>    }
>>>>
>>>>    /**
>>>>     * acquire a lock upgrade (from read to write) lock on Object obj for
Transaction tx.
>>>>     * @param tx the transaction requesting the lock
>>>>     * @param obj the Object to be locked
>>>>     * @return true if successful, else false
>>>>     *
>>>>     */
>>>>    public boolean upgradeLock(TransactionImpl tx, Object obj)
>>>>    {
>>>>        LockEntry writer = getWriter(obj);
>>>>        if (writer == null)
>>>>        {
>>>>            // if lock could be acquired return true
>>>>            if (setWriter(tx, obj))
>>>>                return true;
>>>>            // else try again
>>>>            else
>>>>                return upgradeLock(tx, obj);
>>>>        }
>>>>        if (writer.isOwnedBy(tx))
>>>>        {
>>>>            return true;    // If I already have Write, then I've upgraded.
>>>>        }
>>>>
>>>>        return false;
>>>>    }
>>>>
>>>>    /**
>>>>     * release a lock on Object obj for Transaction tx.
>>>>     * @param tx the transaction releasing the lock
>>>>     * @param obj the Object to be unlocked
>>>>     * @return true if successful, else false
>>>>     *
>>>>     */
>>>>    public boolean releaseLock(TransactionImpl tx, Object obj)
>>>>    {
>>>>        LockEntry writer = getWriter(obj);
>>>>
>>>>        if (writer != null && writer.isOwnedBy(tx))
>>>>        {
>>>>            removeWriter(writer);
>>>>            return true;
>>>>        }
>>>>
>>>>        if (hasReadLock(tx, obj))
>>>>        {
>>>>            removeReader(tx, obj);
>>>>            return true;
>>>>        }
>>>>        return false;
>>>>    }
>>>>
>>>>    /**
>>>>     * checks whether the specified Object obj is read-locked by Transaction
tx.
>>>>     * @param tx the transaction
>>>>     * @param obj the Object to be checked
>>>>     * @return true if lock exists, else false
>>>>     */
>>>>    public boolean checkRead(TransactionImpl tx, Object obj)
>>>>    {
>>>>        if (hasReadLock(tx, obj))
>>>>        {
>>>>            return true;
>>>>        }
>>>>        LockEntry writer = getWriter(obj);
>>>>        if (writer.isOwnedBy(tx))
>>>>        {
>>>>            return true;
>>>>        }
>>>>        return false;
>>>>    }
>>>>
>>>>    /**
>>>>     * checks whether the specified Object obj is write-locked by Transaction
tx.
>>>>     * @param tx the transaction
>>>>     * @param obj the Object to be checked
>>>>     * @return true if lock exists, else false
>>>>     */
>>>>    public boolean checkWrite(TransactionImpl tx, Object obj)
>>>>    {
>>>>        LockEntry writer = getWriter(obj);
>>>>        if (writer == null)
>>>>            return false;
>>>>        else return writer.isOwnedBy( tx );
>>>>    }
>>>>}
>>>
>>>
>>>
>>>------------------------------------------------------------------------
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
>>>For additional commands, e-mail: ojb-dev-help@db.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org


Mime
View raw message