1 /* Open Source Java Caching Service
2 * Copyright (C) 2002 Frank Karlstrøm
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public
5 * License as published by the Free Software Foundation; either
6 * version 2.1 of the License, or (at your option) any later version.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * The author can be contacted by email: fjankk@users.sourceforge.net
18 */
19 package org.fjank.jcache.collection;
20
21 import java.util.Collection;
22 import java.util.Iterator;
23 import org.fjank.jcache.CacheGroup;
24 import org.fjank.jcache.CacheObject;
25
26 /**Acts as a proxy to the collectiton returned from the Map.
27 * @author Frank Karlstrøm
28 *
29 */
30 public class CollectionProxy implements Collection {
31 private Collection coll;
32 private CacheGroup group;
33 /**
34 * @param collection
35 * @param group
36 */
37 public CollectionProxy(Collection collection, CacheGroup group) {
38 this.coll=collection;
39 this.group=group;
40 }
41
42 /* (non-Javadoc)
43 * @see java.lang.Object#hashCode()
44 */
45 public int hashCode() {
46 return coll.hashCode();
47 }
48
49 /**
50 * @param o
51 * @return
52 */
53 public boolean add(Object o) {
54 return coll.add(o);
55 }
56
57 /* (non-Javadoc)
58 * @see java.lang.Object#toString()
59 */
60 public String toString() {
61 return coll.toString();
62 }
63
64 /**
65 * @return
66 */
67 public Object[] toArray() {
68 return coll.toArray();
69 }
70
71 /**
72 * @param c
73 * @return
74 */
75 public boolean addAll(Collection c) {
76 return coll.addAll(c);
77 }
78
79 /**
80 * @param c
81 * @return
82 */
83 public boolean retainAll(Collection c) {
84 return coll.retainAll(c);
85 }
86
87 /**
88 * @param o
89 * @return
90 */
91 public boolean contains(Object o) {
92 //naive implementation, but it works.
93 for (Iterator iter = coll.iterator(); iter.hasNext();) {
94 CacheObject obj = (CacheObject) iter.next();
95 if(obj.get()==o) return true;
96 }
97 return false;
98 }
99
100 /**
101 *
102 */
103 public void clear() {
104 coll.clear();
105 }
106
107 /**
108 * @param c
109 * @return
110 */
111 public boolean containsAll(Collection c) {
112 return coll.containsAll(c);
113 }
114
115 /**
116 * @return
117 */
118 public int size() {
119 return coll.size();
120 }
121
122 /**
123 * @param c
124 * @return
125 */
126 public boolean removeAll(Collection c) {
127 return coll.removeAll(c);
128 }
129
130 /**
131 * @return
132 */
133 public boolean isEmpty() {
134 return coll.isEmpty();
135 }
136
137 /* (non-Javadoc)
138 * @see java.lang.Object#equals(java.lang.Object)
139 */
140 public boolean equals(Object obj) {
141 return coll.equals(obj);
142 }
143
144 /**
145 * @param o
146 * @return
147 */
148 public boolean remove(Object o) {
149 return coll.remove(o);
150 }
151
152 /**
153 * @return
154 */
155 public Iterator iterator() {
156 return coll.iterator();
157 }
158
159 /**
160 * @param a
161 * @return
162 */
163 public Object[] toArray(Object[] a) {
164 return coll.toArray(a);
165 }
166
167 }