KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mchange > v2 > c3p0 > util > ConnectionEventSupport


1 /*
2  * Distributed as part of c3p0 v.0.9.1
3  *
4  * Copyright (C) 2005 Machinery For Change, Inc.
5  *
6  * Author: Steve Waldman <swaldman@mchange.com>
7  *
8  * This library is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License version 2.1, as
10  * published by the Free Software Foundation.
11  *
12  * This software is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public License
18  * along with this software; see the file LICENSE. If not, write to the
19  * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */

22
23
24 package com.mchange.v2.c3p0.util;
25
26 import java.util.*;
27 import java.sql.*;
28 import javax.sql.*;
29
30 public class ConnectionEventSupport
31 {
32     PooledConnection source;
33     HashSet mlisteners = new HashSet();
34
35     public ConnectionEventSupport(PooledConnection source)
36     { this.source = source; }
37
38     public synchronized void addConnectionEventListener(ConnectionEventListener mlistener)
39     {mlisteners.add(mlistener);}
40
41     public synchronized void removeConnectionEventListener(ConnectionEventListener mlistener)
42     {mlisteners.remove(mlistener);}
43
44     public void fireConnectionClosed()
45     {
46     Set mlCopy;
47
48     synchronized (this)
49         { mlCopy = (Set) mlisteners.clone(); }
50
51     ConnectionEvent evt = new ConnectionEvent(source);
52     for (Iterator i = mlCopy.iterator(); i.hasNext();)
53         {
54         ConnectionEventListener cl = (ConnectionEventListener) i.next();
55         cl.connectionClosed(evt);
56         }
57     }
58
59     public void fireConnectionErrorOccurred(SQLException error)
60     {
61     Set mlCopy;
62
63     synchronized (this)
64         { mlCopy = (Set) mlisteners.clone(); }
65
66     ConnectionEvent evt = new ConnectionEvent(source, error);
67     for (Iterator i = mlCopy.iterator(); i.hasNext();)
68         {
69         ConnectionEventListener cl = (ConnectionEventListener) i.next();
70         cl.connectionErrorOccurred(evt);
71         }
72     }
73 }
74
75
76
77
Popular Tags