KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mchange > v2 > coalesce > AbstractWeakCoalescer


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.coalesce;
25
26 import java.util.*;
27 import java.lang.ref.WeakReference JavaDoc;
28
29 class AbstractWeakCoalescer implements Coalescer
30 {
31     Map wcoalesced;
32
33     AbstractWeakCoalescer( Map wcoalesced )
34     { this.wcoalesced = wcoalesced; }
35
36     public Object JavaDoc coalesce( Object JavaDoc o )
37     {
38     //System.err.println("AbstractWeakCoalescer.coalesce( " + o + " )");
39
Object JavaDoc out = null;
40
41     WeakReference JavaDoc wr = (WeakReference JavaDoc) wcoalesced.get( o );
42     if ( wr != null )
43         out = wr.get(); //there is a conceivable race that would
44
//permit wr be cleared
45
if ( out == null )
46         {
47         wcoalesced.put( o , new WeakReference JavaDoc(o) );
48         out = o;
49         }
50     return out;
51     }
52
53     public int countCoalesced()
54     { return wcoalesced.size(); }
55
56     public Iterator iterator()
57     { return new CoalescerIterator( wcoalesced.keySet().iterator() ); }
58 }
59
60
61
62
Popular Tags