1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.caches.ehcache;
17
18 import java.util.concurrent.locks.ReadWriteLock;
19
20 import net.sf.ehcache.CacheManager;
21 import net.sf.ehcache.Ehcache;
22 import net.sf.ehcache.Element;
23
24 import org.apache.ibatis.cache.Cache;
25
26
27
28
29
30
31 public abstract class AbstractEhcacheCache implements Cache {
32
33
34
35
36 protected static CacheManager CACHE_MANAGER = CacheManager.create();
37
38
39
40
41 protected final String id;
42
43
44
45
46 protected Ehcache cache;
47
48
49
50
51
52
53
54 public AbstractEhcacheCache(final String id) {
55 if (id == null) {
56 throw new IllegalArgumentException("Cache instances require an ID");
57 }
58 this.id = id;
59 }
60
61
62
63
64 @Override
65 public void clear() {
66 cache.removeAll();
67 }
68
69
70
71
72 @Override
73 public String getId() {
74 return id;
75 }
76
77
78
79
80 @Override
81 public Object getObject(Object key) {
82 Element cachedElement = cache.get(key);
83 if (cachedElement == null) {
84 return null;
85 }
86 return cachedElement.getObjectValue();
87 }
88
89
90
91
92 @Override
93 public int getSize() {
94 return cache.getSize();
95 }
96
97
98
99
100 @Override
101 public void putObject(Object key, Object value) {
102 cache.put(new Element(key, value));
103 }
104
105
106
107
108 @Override
109 public Object removeObject(Object key) {
110 Object obj = getObject(key);
111 cache.remove(key);
112 return obj;
113 }
114
115
116
117
118 public void unlock(Object key) {
119 }
120
121
122
123
124 @Override
125 public boolean equals(Object obj) {
126 if (this == obj) {
127 return true;
128 }
129 if (obj == null) {
130 return false;
131 }
132 if (!(obj instanceof Cache)) {
133 return false;
134 }
135
136 Cache otherCache = (Cache) obj;
137 return id.equals(otherCache.getId());
138 }
139
140
141
142
143 @Override
144 public int hashCode() {
145 return id.hashCode();
146 }
147
148 @Override
149 public ReadWriteLock getReadWriteLock() {
150 return null;
151 }
152
153
154
155
156 @Override
157 public String toString() {
158 return "EHCache {" + id + "}";
159 }
160
161
162
163
164
165
166
167
168
169 public void setTimeToIdleSeconds(long timeToIdleSeconds) {
170 cache.getCacheConfiguration().setTimeToIdleSeconds(timeToIdleSeconds);
171 }
172
173
174
175
176
177
178
179 public void setTimeToLiveSeconds(long timeToLiveSeconds) {
180 cache.getCacheConfiguration().setTimeToLiveSeconds(timeToLiveSeconds);
181 }
182
183
184
185
186
187
188
189 public void setMaxEntriesLocalHeap(long maxEntriesLocalHeap) {
190 cache.getCacheConfiguration().setMaxEntriesLocalHeap(maxEntriesLocalHeap);
191 }
192
193
194
195
196
197
198
199 public void setMaxEntriesLocalDisk(long maxEntriesLocalDisk) {
200 cache.getCacheConfiguration().setMaxEntriesLocalDisk(maxEntriesLocalDisk);
201 }
202
203
204
205
206
207
208
209 public void setMemoryStoreEvictionPolicy(String memoryStoreEvictionPolicy) {
210 cache.getCacheConfiguration().setMemoryStoreEvictionPolicy(memoryStoreEvictionPolicy);
211 }
212
213 }