You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2004/12/06 13:28:38 UTC

cvs commit: db-ojb/src/java/org/apache/ojb/odmg LocalTxManager.java TransactionTable.java

arminw      2004/12/06 04:28:38

  Modified:    src/java/org/apache/ojb/odmg Tag: OJB_1_0_RELEASE
                        LocalTxManager.java
  Removed:     src/java/org/apache/ojb/odmg Tag: OJB_1_0_RELEASE
                        TransactionTable.java
  Log:
  make TransactionTable inner class
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.5.2.1   +96 -27    db-ojb/src/java/org/apache/ojb/odmg/LocalTxManager.java
  
  Index: LocalTxManager.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/odmg/LocalTxManager.java,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -u -r1.5 -r1.5.2.1
  --- LocalTxManager.java	4 Apr 2004 23:53:38 -0000	1.5
  +++ LocalTxManager.java	6 Dec 2004 12:28:38 -0000	1.5.2.1
  @@ -1,10 +1,5 @@
   package org.apache.ojb.odmg;
   
  -import org.apache.ojb.broker.util.configuration.Configuration;
  -import org.apache.ojb.broker.util.logging.Logger;
  -import org.apache.ojb.broker.util.logging.LoggerFactory;
  -import org.odmg.TransactionNotInProgressException;
  -
   /* Copyright 2002-2004 The Apache Software Foundation
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
  @@ -19,10 +14,23 @@
    * See the License for the specific language governing permissions and
    * limitations under the License.
    */
  +
  +import java.util.Hashtable;
  +
  +import org.apache.ojb.broker.util.configuration.Configuration;
  +import org.odmg.Transaction;
  +import org.odmg.TransactionNotInProgressException;
  +
  +/**
  + * In a non-appserver environment, without a transaction manager, we can
  + * safely associate the current ODMG transaction with the calling thread.
  + *
  + * @author <a href="mailto:armin@codeAuLait.de">Armin Waibel</a>
  + * @author <a href="mailto:mattbaird@yahoo.com">Matthew Baird</a>
  + * @version $Id$
  + */
   public class LocalTxManager implements OJBTxManager
   {
  -    private static Logger log = LoggerFactory.getLogger(LocalTxManager.class);
  -
       /**
        * Internal table which provides mapping between threads and transactions.
        * This is required because a Thread can join a Transaction already in
  @@ -40,15 +48,16 @@
   
       /**
        * Returns the current transaction for the calling thread.
  -     * @throws org.odmg.TransactionNotInProgressException {@link org.odmg.TransactionNotInProgressException} if no transaction was found.
  +     *
  +     * @throws org.odmg.TransactionNotInProgressException
  +     *          {@link org.odmg.TransactionNotInProgressException} if no transaction was found.
        */
       public TransactionImpl getCurrentTransaction()
       {
           TransactionImpl tx = (TransactionImpl) tx_table.get(Thread.currentThread());
  -        if (tx == null)
  +        if(tx == null)
           {
  -            throw new TransactionNotInProgressException(
  -                    "Calling method needed transaction, but no transaction found for current thread :-(");
  +            throw new TransactionNotInProgressException("Calling method needed transaction, but no transaction found for current thread :-(");
           }
           return tx;
       }
  @@ -62,35 +71,95 @@
           return (TransactionImpl) tx_table.get(Thread.currentThread());
       }
   
  -	/**
  -	 * add the current transaction to the map key'd by the calling thread.
  -	 */
  +    /**
  +     * add the current transaction to the map key'd by the calling thread.
  +     */
       public void registerTx(TransactionImpl tx)
       {
           tx_table.put(Thread.currentThread(), tx);
       }
   
  -	/**
  -	 * remove the current transaction from the map key'd by the calling thread.
  -	 */
  +    /**
  +     * remove the current transaction from the map key'd by the calling thread.
  +     */
       public void deregisterTx(Object token)
       {
           tx_table.remove(Thread.currentThread());
       }
  -    
  -	/**
  -	 * included to keep interface contract consistent.
  -	 */
  +
  +    /**
  +     * included to keep interface contract consistent.
  +     */
       public void abortExternalTx(TransactionImpl odmgTrans)
       {
  -    	/**
  -    	 * no op
  -    	 */
  +        /**
  +         * no op
  +         */
       }
  -    
  +
       public void configure(Configuration config)
       {
  -    	
  +
  +    }
  +
  +
  +    //=======================================================
  +    // inner class
  +    //=======================================================
  +    /**
  +     * TransactionTable provides a mapping between the calling
  +     * thread and the Transaction it is currently using.
  +     * One thread can be joined with one transaction at
  +     * a certain point in time. But a thread can join with
  +     * different transactions subsequently.
  +     * This mapping from threads to Transactions is based on ODMG.
  +     *
  +     * @author Thomas Mahler & David Dixon-Peugh
  +     */
  +    static final class TransactionTable
  +    {
  +        /**
  +         * the internal Hashtable mapping Transactions to threads
  +         */
  +        private Hashtable m_table = new Hashtable();
  +
  +        /**
  +         * Creates new TransactionTable
  +         */
  +        public TransactionTable()
  +        {
  +        }
  +
  +        /**
  +         * Retreive a Transaction associated with a thread.
  +         *
  +         * @param key_thread The thread to lookup.
  +         * @return The transaction associated with the thread.
  +         */
  +        public Transaction get(Thread key_thread)
  +        {
  +            return (Transaction) m_table.get(key_thread);
  +        }
  +
  +        /**
  +         * Store the Thread/Transaction pair in the TransactionTable
  +         *
  +         * @param key_thread Thread that the transaction will be associated to
  +         * @param value_tx   Transaction to be associated with the thread
  +         */
  +        public void put(Thread key_thread, Transaction value_tx)
  +        {
  +            m_table.put(key_thread, value_tx);
  +        }
  +
  +        /**
  +         * Remove the entry for the thread
  +         *
  +         * @param key_thread Thread to be removed.
  +         */
  +        public void remove(Thread key_thread)
  +        {
  +            m_table.remove(key_thread);
  +        }
       }
  -    
   }
  
  
  

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