1 package org.apache.onami.cache;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import javax.cache.Cache;
23 import javax.cache.annotation.CacheInvocationContext;
24 import javax.cache.annotation.CacheKey;
25 import javax.cache.annotation.CacheKeyInvocationContext;
26 import javax.cache.annotation.CachePut;
27
28 import org.aopalliance.intercept.MethodInvocation;
29
30 final class CachePutInterceptor
31 extends AfterBeforeInvocationInterceptor<CachePut>
32 {
33
34 @Override
35 public Class<CachePut> getInterceptedAnnotationType()
36 {
37 return CachePut.class;
38 }
39
40 @Override
41 protected void hitCache( CacheInvocationContext<CachePut> context )
42 {
43 CacheKeyInvocationContext<CachePut> keyedContext = (CacheKeyInvocationContext<CachePut>) context;
44 Object value = keyedContext.getValueParameter().getValue();
45
46 if ( value == null )
47 {
48 if ( context.getCacheAnnotation().cacheNull() )
49 {
50
51 value = NULL_PLACEHOLDER;
52 }
53 else
54 {
55
56 return;
57 }
58 }
59
60 Cache<Object, Object> cache = getCacheResolverFactory( context ).getCacheResolver( context ).resolveCache( context );
61 CacheKey cacheKey = getCacheKeyGenerator( context ).generateCacheKey( keyedContext );
62 cache.put( cacheKey, value );
63 }
64
65 }