You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by bo...@apache.org on 2007/02/24 17:32:46 UTC
svn commit: r511298 -
/incubator/ode/trunk/minerva/src/main/java/org/opentools/minerva/connector/jdbc/BaseManagedConnection.java
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);