1 package org.apache.commons.jcs.engine;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.commons.jcs.engine.behavior.ICompositeCacheAttributes;
23
24
25
26
27
28
29
30
31 public class CompositeCacheAttributes
32 implements ICompositeCacheAttributes
33 {
34
35 private static final long serialVersionUID = 6754049978134196787L;
36
37
38 private static final boolean DEFAULT_USE_LATERAL = true;
39
40
41 private static final boolean DEFAULT_USE_REMOTE = true;
42
43
44 private static final boolean DEFAULT_USE_DISK = true;
45
46
47 private static final boolean DEFAULT_USE_SHRINKER = false;
48
49
50 private static final int DEFAULT_MAX_OBJECTS = 100;
51
52
53 private static final int DEFAULT_MAX_MEMORY_IDLE_TIME_SECONDS = 60 * 120;
54
55
56 private static final int DEFAULT_SHRINKER_INTERVAL_SECONDS = 30;
57
58
59 private static final int DEFAULT_MAX_SPOOL_PER_RUN = -1;
60
61
62 private static final String DEFAULT_MEMORY_CACHE_NAME = "org.apache.commons.jcs.engine.memory.lru.LRUMemoryCache";
63
64
65 private static final int DEFAULT_CHUNK_SIZE = 2;
66
67
68 private boolean useLateral = DEFAULT_USE_LATERAL;
69
70
71 private boolean useRemote = DEFAULT_USE_REMOTE;
72
73
74 private boolean useDisk = DEFAULT_USE_DISK;
75
76
77 private boolean useMemoryShrinker = DEFAULT_USE_SHRINKER;
78
79
80 private int maxObjs = DEFAULT_MAX_OBJECTS;
81
82
83 private long maxMemoryIdleTimeSeconds = DEFAULT_MAX_MEMORY_IDLE_TIME_SECONDS;
84
85
86 private long shrinkerIntervalSeconds = DEFAULT_SHRINKER_INTERVAL_SECONDS;
87
88
89 private int maxSpoolPerRun = DEFAULT_MAX_SPOOL_PER_RUN;
90
91
92 private String cacheName;
93
94
95 private String memoryCacheName;
96
97
98 private DiskUsagePattern diskUsagePattern = DiskUsagePattern.SWAP;
99
100
101 private int spoolChunkSize = DEFAULT_CHUNK_SIZE;
102
103
104
105
106 public CompositeCacheAttributes()
107 {
108 super();
109
110 memoryCacheName = DEFAULT_MEMORY_CACHE_NAME;
111 }
112
113
114
115
116
117
118 @Override
119 public void setMaxObjects( int maxObjs )
120 {
121 this.maxObjs = maxObjs;
122 }
123
124
125
126
127
128
129 @Override
130 public int getMaxObjects()
131 {
132 return this.maxObjs;
133 }
134
135
136
137
138
139
140 @Override
141 public void setUseDisk( boolean useDisk )
142 {
143 this.useDisk = useDisk;
144 }
145
146
147
148
149
150
151 @Override
152 public boolean isUseDisk()
153 {
154 return useDisk;
155 }
156
157
158
159
160
161
162 @Override
163 public void setUseLateral( boolean b )
164 {
165 this.useLateral = b;
166 }
167
168
169
170
171
172
173 @Override
174 public boolean isUseLateral()
175 {
176 return this.useLateral;
177 }
178
179
180
181
182
183
184 @Override
185 public void setUseRemote( boolean useRemote )
186 {
187 this.useRemote = useRemote;
188 }
189
190
191
192
193
194
195 @Override
196 public boolean isUseRemote()
197 {
198 return this.useRemote;
199 }
200
201
202
203
204
205
206 @Override
207 public void setCacheName( String s )
208 {
209 this.cacheName = s;
210 }
211
212
213
214
215
216
217 @Override
218 public String getCacheName()
219 {
220 return this.cacheName;
221 }
222
223
224
225
226
227
228 @Override
229 public void setMemoryCacheName( String s )
230 {
231 this.memoryCacheName = s;
232 }
233
234
235
236
237
238
239 @Override
240 public String getMemoryCacheName()
241 {
242 return this.memoryCacheName;
243 }
244
245
246
247
248
249
250 @Override
251 public void setUseMemoryShrinker( boolean useShrinker )
252 {
253 this.useMemoryShrinker = useShrinker;
254 }
255
256
257
258
259
260
261 @Override
262 public boolean isUseMemoryShrinker()
263 {
264 return this.useMemoryShrinker;
265 }
266
267
268
269
270
271
272 @Override
273 public void setMaxMemoryIdleTimeSeconds( long seconds )
274 {
275 this.maxMemoryIdleTimeSeconds = seconds;
276 }
277
278
279
280
281
282
283 @Override
284 public long getMaxMemoryIdleTimeSeconds()
285 {
286 return this.maxMemoryIdleTimeSeconds;
287 }
288
289
290
291
292
293
294
295 @Override
296 public void setShrinkerIntervalSeconds( long seconds )
297 {
298 this.shrinkerIntervalSeconds = seconds;
299 }
300
301
302
303
304
305
306
307 @Override
308 public long getShrinkerIntervalSeconds()
309 {
310 return this.shrinkerIntervalSeconds;
311 }
312
313
314
315
316
317
318
319
320
321 @Override
322 public void setMaxSpoolPerRun( int maxSpoolPerRun )
323 {
324 this.maxSpoolPerRun = maxSpoolPerRun;
325 }
326
327
328
329
330
331
332
333 @Override
334 public int getMaxSpoolPerRun()
335 {
336 return this.maxSpoolPerRun;
337 }
338
339
340
341
342
343
344 @Override
345 public void setDiskUsagePattern( DiskUsagePattern diskUsagePattern )
346 {
347 this.diskUsagePattern = diskUsagePattern;
348 }
349
350
351
352
353
354
355
356
357 @Override
358 public void setDiskUsagePatternName( String diskUsagePatternName )
359 {
360 if ( diskUsagePatternName != null )
361 {
362 String name = diskUsagePatternName.toUpperCase().trim();
363 if ( name.startsWith( "SWAP" ) )
364 {
365 this.setDiskUsagePattern( DiskUsagePattern.SWAP );
366 }
367 else if ( name.startsWith( "UPDATE" ) )
368 {
369 this.setDiskUsagePattern( DiskUsagePattern.UPDATE );
370 }
371 }
372 }
373
374
375
376
377
378
379 @Override
380 public int getSpoolChunkSize()
381 {
382 return spoolChunkSize;
383 }
384
385
386
387
388
389
390 @Override
391 public void setSpoolChunkSize( int spoolChunkSize )
392 {
393 this.spoolChunkSize = spoolChunkSize;
394 }
395
396
397
398
399 @Override
400 public DiskUsagePattern getDiskUsagePattern()
401 {
402 return diskUsagePattern;
403 }
404
405
406
407
408
409
410 @Override
411 public String toString()
412 {
413 StringBuilder dump = new StringBuilder();
414
415 dump.append( "[ " );
416 dump.append( "useLateral = " ).append( useLateral );
417 dump.append( ", useRemote = " ).append( useRemote );
418 dump.append( ", useDisk = " ).append( useDisk );
419 dump.append( ", maxObjs = " ).append( maxObjs );
420 dump.append( ", maxSpoolPerRun = " ).append( maxSpoolPerRun );
421 dump.append( ", diskUsagePattern = " ).append( diskUsagePattern );
422 dump.append( ", spoolChunkSize = " ).append( spoolChunkSize );
423 dump.append( " ]" );
424
425 return dump.toString();
426 }
427
428
429
430
431 @Override
432 public ICompositeCacheAttributes clone()
433 {
434 try
435 {
436 return (ICompositeCacheAttributes)super.clone();
437 }
438 catch (CloneNotSupportedException e)
439 {
440 throw new RuntimeException("Clone not supported. This should never happen.", e);
441 }
442 }
443 }