1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.jetspeed.components.interceptors;
18
19 import org.aopalliance.intercept.MethodInvocation;
20 import org.apache.jetspeed.cache.general.GeneralCache;
21
22 /***
23 * <p>
24 * CacheInterceptor
25 * </p>
26 * <p>
27 * AoP Interceptor that can be used for generalized caching. The only requirement is
28 * that intercepted methods must receive at least one (1) arguments.
29 * <br /> <br />
30 * CacheInterceptor ALWAYS use the first argument in the method to build the unique cache key.
31 * </p>
32 *
33 * @author <a href="mailto:weaver@apache.org">Scott T. Weaver </a>
34 * @version $Id: CachingInterceptor.java 516448 2007-03-09 16:25:47Z ate $
35 *
36 */
37 public class CachingInterceptor extends AbstractCacheInterceptor
38 {
39
40
41
42 /***
43 * @param cache
44 */
45 public CachingInterceptor( GeneralCache cache )
46 {
47 super(cache);
48 }
49
50 /***
51 * <p>
52 * doCacheOperation
53 * </p>
54 *
55 * @param mi
56 * @param uniqueKey
57 * @return
58 * @throws Throwable
59 */
60 protected Object doCacheOperation( MethodInvocation mi, String uniqueKey ) throws Throwable
61 {
62 if(cache.contains(uniqueKey))
63 {
64 return cache.get(uniqueKey);
65 }
66 else
67 {
68 Object value = mi.proceed();
69 if(value != null)
70 {
71 cache.put(uniqueKey, value);
72 }
73
74 return value;
75 }
76 }
77 }