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);