1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.cache;
17
18 import java.util.ArrayList;
19 import java.io.Serializable;
20
21
22
23
24
25
26
27
28
29 public abstract class BaseCache implements Cache {
30 public abstract boolean store(Serializable key, Serializable val, Long expiry, Long cost, Serializable group);
31 public abstract Serializable retrieve(Serializable key);
32 public abstract Serializable[] getKeysForGroup(Serializable group);
33 public abstract boolean contains(Serializable key);
34 public abstract void clear(Serializable key);
35 public abstract void clear();
36
37 public long getStat(CacheStat stat) throws UnsupportedOperationException {
38 throw new UnsupportedOperationException();
39 }
40
41 public synchronized void clearGroup(Serializable group) {
42 Serializable[] keys = getKeysForGroup(group);
43 if(null != keys) {
44 for(int i=0,m=keys.length;i<m;i++) {
45 try {
46 clear(keys[i]);
47 } catch(Exception e) {
48 e.printStackTrace();
49
50 }
51 }
52 }
53 }
54
55 public boolean store(Serializable key, Serializable val, Long expiry, Long cost) {
56 return store(key,val,expiry,cost,null);
57 }
58
59
60 protected ArrayList _storageListeners = new ArrayList();
61
62
63 protected ArrayList _retrievalListeners = new ArrayList();
64
65
66
67
68
69
70 public synchronized void registerStorageListener(StorageListener obs) {
71 if(!_storageListeners.contains(obs)) {
72 _storageListeners.add(obs);
73 }
74 }
75
76
77
78
79
80
81 public synchronized void unregisterStorageListener(StorageListener obs) {
82 for(boolean found=true;found;found=_storageListeners.remove(obs));
83 }
84
85
86
87
88 public synchronized void unregisterStorageListeners() {
89 _storageListeners.clear();
90 }
91
92
93
94
95
96
97 public synchronized void registerRetrievalListener(RetrievalListener obs) {
98 if(!_retrievalListeners.contains(obs)) {
99 _retrievalListeners.add(obs);
100 }
101 }
102
103
104
105
106
107
108 public synchronized void unregisterRetrievalListener(RetrievalListener obs) {
109 for(boolean found=true;found;found=_retrievalListeners.remove(obs));
110 }
111
112
113
114
115 public synchronized void unregisterRetrievalListeners() {
116 _retrievalListeners.clear();
117 }
118
119
120
121
122
123
124
125
126
127
128 protected synchronized void broadcastStoreRequested(Serializable key, Serializable val, Long expiresAt, Long cost, Serializable group) {
129 for(int i=0,m=_storageListeners.size();i<m;i++) {
130 ((StorageListener)(_storageListeners.get(i))).storeRequested(key,val,expiresAt,cost,group);
131 }
132 }
133
134
135
136
137
138
139
140
141
142
143 protected synchronized void broadcastStored(Serializable key, Serializable val, Long expiresAt, Long cost, Serializable group) {
144 for(int i=0,m=_storageListeners.size();i<m;i++) {
145 ((StorageListener)(_storageListeners.get(i))).stored(key,val,expiresAt,cost,group);
146 }
147 }
148
149
150
151
152
153
154
155
156
157
158 protected synchronized void broadcastNotStored(Serializable key, Serializable val, Long expiresAt, Long cost, Serializable group) {
159 for(int i=0,m=_storageListeners.size();i<m;i++) {
160 ((StorageListener)(_storageListeners.get(i))).notStored(key,val,expiresAt,cost, group);
161 }
162 }
163
164
165
166
167
168
169
170 protected synchronized void broadcastCleared(Serializable key) {
171 for(int i=0,m=_storageListeners.size();i<m;i++) {
172 ((StorageListener)(_storageListeners.get(i))).cleared(key);
173 }
174 }
175
176
177
178
179
180 protected synchronized void broadcastCleared() {
181 for(int i=0,m=_storageListeners.size();i<m;i++) {
182 ((StorageListener)(_storageListeners.get(i))).cleared();
183 }
184 }
185
186
187
188
189
190
191
192 protected synchronized void broadcastRetrieveRequested(Serializable key) {
193 for(int i=0,m=_retrievalListeners.size();i<m;i++) {
194 ((RetrievalListener)(_retrievalListeners.get(i))).retrieveRequested(key);
195 }
196 }
197
198
199
200
201
202
203
204 protected synchronized void broadcastRetrieved(Serializable key) {
205
206 for(int i=0,m=_retrievalListeners.size();i<m;i++) {
207
208 ((RetrievalListener)(_retrievalListeners.get(i))).retrieved(key);
209
210 }
211
212 }
213
214
215
216
217
218
219
220 protected synchronized void broadcastNotRetrieved(Serializable key) {
221 for(int i=0,m=_retrievalListeners.size();i<m;i++) {
222 ((RetrievalListener)(_retrievalListeners.get(i))).notRetrieved(key);
223 }
224 }
225 }