You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ps...@apache.org on 2009/10/25 21:36:15 UTC

svn commit: r829642 - in /commons/proper/dbcp/trunk/src: java/org/apache/commons/dbcp/managed/BasicManagedDataSource.java test/org/apache/commons/dbcp/managed/TestBasicManagedDataSource.java

Author: psteitz
Date: Sun Oct 25 20:36:14 2009
New Revision: 829642

URL: http://svn.apache.org/viewvc?rev=829642&view=rev
Log:
Improved thread-safety.

Modified:
    commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/managed/BasicManagedDataSource.java
    commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/managed/TestBasicManagedDataSource.java

Modified: commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/managed/BasicManagedDataSource.java
URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/managed/BasicManagedDataSource.java?rev=829642&r1=829641&r2=829642&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/managed/BasicManagedDataSource.java (original)
+++ commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/managed/BasicManagedDataSource.java Sun Oct 25 20:36:14 2009
@@ -53,11 +53,11 @@
  */
 public class BasicManagedDataSource extends BasicDataSource {
     /** Transaction Registry */
-    protected TransactionRegistry transactionRegistry;
+    private TransactionRegistry transactionRegistry;
     /** Transaction Manager */
-    protected TransactionManager transactionManager;
+    private TransactionManager transactionManager;
     /** XA datasource class name */
-    protected String xaDataSource;
+    private String xaDataSource;
     /** XA datasource instance */
     private XADataSource xaDataSourceInstance;
 
@@ -89,15 +89,23 @@
      * Gets the required transaction manager property.
      * @return the transaction manager used to enlist connections
      */
-    public TransactionManager getTransactionManager() {
+    public synchronized TransactionManager getTransactionManager() {
         return transactionManager;
     }
+    
+    /**
+     * Gets the transaction registry.
+     * @return the transaction registry associating XAResources with managed connections
+     */
+    protected synchronized TransactionRegistry getTransactionRegistry() {
+        return transactionRegistry;
+    }
 
     /**
      * Sets the required transaction manager property.
      * @param transactionManager the transaction manager used to enlist connections
      */
-    public void setTransactionManager(TransactionManager transactionManager) {
+    public synchronized void setTransactionManager(TransactionManager transactionManager) {
         this.transactionManager = transactionManager;
     }
 
@@ -105,7 +113,7 @@
      * Gets the optional XADataSource class name.
      * @return the optional XADataSource class name
      */
-    public String getXADataSource() {
+    public synchronized String getXADataSource() {
         return xaDataSource;
     }
 
@@ -113,7 +121,7 @@
      * Sets the optional XADataSource class name.
      * @param xaDataSource the optional XADataSource class name
      */
-    public void setXADataSource(String xaDataSource) {
+    public synchronized void setXADataSource(String xaDataSource) {
         this.xaDataSource = xaDataSource;
     }
 

Modified: commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/managed/TestBasicManagedDataSource.java
URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/managed/TestBasicManagedDataSource.java?rev=829642&r1=829641&r2=829642&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/managed/TestBasicManagedDataSource.java (original)
+++ commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/managed/TestBasicManagedDataSource.java Sun Oct 25 20:36:14 2009
@@ -63,13 +63,13 @@
         basicManagedDataSource.setMaxIdle(1); 
         // Create and register a connection
         ManagedConnection conn = (ManagedConnection) basicManagedDataSource.getConnection();
-        basicManagedDataSource.transactionRegistry.registerConnection(conn, new LocalXAResource(conn));
+        basicManagedDataSource.getTransactionRegistry().registerConnection(conn, new LocalXAResource(conn));
         // Create another connection and return it to the pool
         ManagedConnection conn2 = (ManagedConnection) basicManagedDataSource.getConnection();
         conn2.close();
         conn.close(); // No room at the inn - this will trigger reallyClose(), which should unregister
         try {
-            basicManagedDataSource.transactionRegistry.getXAResource(conn);
+            basicManagedDataSource.getTransactionRegistry().getXAResource(conn);
             fail("Expecting SQLException - XAResources orphaned");
         } catch (SQLException ex) {
             // expected