Author: boisvert
Date: Sat Feb 24 08:32:46 2007
New Revision: 511298

URL: http://svn.apache.org/viewvc?view=rev&rev=511298
Log:
Fix potential NPE due to concurrent race

Modified:
    
incubator/ode/trunk/minerva/src/main/java/org/opentools/minerva/connector/jdbc/BaseManagedConnection.java

Modified: 
incubator/ode/trunk/minerva/src/main/java/org/opentools/minerva/connector/jdbc/BaseManagedConnection.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/minerva/src/main/java/org/opentools/minerva/connector/jdbc/BaseManagedConnection.java?view=diff&rev=511298&r1=511297&r2=511298
==============================================================================
--- 
incubator/ode/trunk/minerva/src/main/java/org/opentools/minerva/connector/jdbc/BaseManagedConnection.java
 (original)
+++ 
incubator/ode/trunk/minerva/src/main/java/org/opentools/minerva/connector/jdbc/BaseManagedConnection.java
 Sat Feb 24 08:32:46 2007
@@ -51,12 +51,16 @@
     }
 
     public void addConnectionEventListener(ConnectionEventListener listener) {
+        synchronized (this) {
         listeners.add(listener);
     }
+    }
 
     public void removeConnectionEventListener(ConnectionEventListener 
listener) {
+        synchronized (this) {
         listeners.remove(listener);
     }
+    }
 
     public void setLogWriter(PrintWriter writer) throws ResourceException {
         logger = writer;
@@ -67,8 +71,10 @@
     }
 
     public void destroy() throws ResourceException {
+        synchronized (this) {
         listeners.clear();
         listeners = null;
+        }
         logger = null;
         user = null;
     }
@@ -78,7 +84,10 @@
     }
 
     protected void fireConnectionEvent(ConnectionEvent evt) {
-        List<ConnectionEventListener> local = new 
ArrayList<ConnectionEventListener>(listeners);
+        List<ConnectionEventListener> local;
+        synchronized (this) {
+            local = new ArrayList<ConnectionEventListener>(listeners);
+        }
         for(int i=local.size()-1; i >= 0; i--) {
             if(evt.getId() == ConnectionEvent.CONNECTION_CLOSED) {
                 local.get(i).connectionClosed(evt);


Reply via email to