Clover Coverage Report - Kuali Student 1.2-M6-SNAPSHOT (Aggregated)
Coverage timestamp: Mon Sep 12 2011 05:03:53 EDT
../../../../../img/srcFileCovDistChart0.png 42% of files have more coverage
25   151   17   2.08
10   62   0.68   12
12     1.42  
1    
 
  EhCacheHelper       Line # 29 25 0% 17 47 0% 0.0
 
No Tests
 
1    /**
2    * Copyright 2010 The Kuali Foundation Licensed under the
3    * Educational Community License, Version 2.0 (the "License"); you may
4    * not use this file except in compliance with the License. You may
5    * obtain a copy of the License at
6    *
7    * http://www.osedu.org/licenses/ECL-2.0
8    *
9    * Unless required by applicable law or agreed to in writing,
10    * software distributed under the License is distributed on an "AS IS"
11    * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12    * or implied. See the License for the specific language governing
13    * permissions and limitations under the License.
14    */
15   
16    package org.kuali.student.common.util;
17   
18    import java.io.Serializable;
19   
20    import net.sf.ehcache.Cache;
21    import net.sf.ehcache.CacheManager;
22    import net.sf.ehcache.Element;
23   
24    /**
25    * Simplified api for enabling Service and DAO classes with EhCache.
26    * @author garystruthers
27    *
28    */
 
29    public class EhCacheHelper {
30   
31    private CacheManager cacheManager; // singleton uses default ehcache.xml configuration in ehcache.jar
32    /**
33    *
34    */
 
35  0 toggle public EhCacheHelper() {
36  0 initCacheManager();
37    }
38   
 
39  0 toggle public EhCacheHelper(String configurationFileName) {
40  0 initCacheManager(configurationFileName);
41    }
42   
 
43  0 toggle private void initCacheManager(String configurationFileName) {
44  0 if(cacheManager == null) {
45  0 cacheManager = CacheManager.create(configurationFileName);
46    }
47    }
48   
49    /**
50    * EhCache has a default configuration file within ehcache.jar which is used if there is no ehcache.xml in the classpath.
51    * It is a singleton, so it's only created once.
52    * @see http://ehcache.sourceforge.net/EhcacheUserGuide.html#id.s6.2 for default configuration
53    * @see http://ehcache.sourceforge.net/EhcacheUserGuide.html#usingthecachemanager
54    * To customize configuration, add an ehcache.xml file to the classpath.
55    *
56    */
 
57  0 toggle private void initCacheManager() {
58   
59  0 if(cacheManager == null) {
60  0 cacheManager = CacheManager.create();
61    }
62    }
63   
64    /**
65    * Creates a cache and adds it to the cache manager
66    * @param cacheName you could name the cache with the classname that uses it.
67    *
68    */
 
69  0 toggle public void createCache(String cacheName) {
70  0 if(!cacheManager.cacheExists(cacheName)) {
71  0 cacheManager.addCache(cacheName);
72    }
73    }
74   
75    /**
76    * Like Hibernate's saveOrUpdate, this is used to create a new cache element and update existing element
77    * The cache knows if cache.put if creating or updating an element.
78    * @param cacheName
79    * @param key must be unique, should be descriptive
80    * @param value the thing cached
81    */
 
82  0 toggle public void saveOrUpdateCacheElement(String cacheName, String key, Object value) {
83  0 Cache cache = cacheManager.getCache(cacheName);
84  0 Element element = new Element(key, value);
85  0 cache.put(element);
86    }
87   
88    /**
89    * Get the thing cached
90    * @param cacheName
91    * @param key
92    * @return a Serializable object Note, EhCache can support non-serializable object in memory only cache
93    */
 
94  0 toggle public Serializable getCacheElementValue(String cacheName, String key) {
95  0 Element element = getCacheElement(cacheName, key);
96  0 if(element == null) {
97  0 return null;
98    }
99  0 return element.getValue();
100    }
101   
102   
103    /**
104    * Gets Element, useful for calling Element methods like getHitCount()
105    * @param cacheName
106    * @param key
107    * @return
108    */
 
109  0 toggle public Element getCacheElement(String cacheName, String key) {
110  0 Cache cache = cacheManager.getCache(cacheName);
111  0 return cache.get(key);
112    }
113   
114    /**
115    * Removes 1 element from cache
116    * @param cacheName
117    * @param key
118    */
 
119  0 toggle public void evictCacheElement(String cacheName, String key) {
120  0 Cache cache = cacheManager.getCache(cacheName);
121  0 cache.remove(key);
122    }
123   
124    /**
125    * Remove all elements from cache
126    * @param cacheName
127    */
 
128  0 toggle public void evictAllCacheElements(String cacheName) {
129  0 Cache cache = cacheManager.getCache(cacheName);
130  0 cache.removeAll();
131    }
132   
133    /**
134    * Gets how many times element has been accessed. Useful for testing and optimization
135    * @param element
136    * @return
137    */
 
138  0 toggle public long getCacheElementHitCount(Element element) {
139  0 if(element == null) {
140  0 return 0;
141    }
142  0 return element.getHitCount();
143    }
144   
145    /**
146    * @return
147    */
 
148  0 toggle public String[] getCacheNames() {
149  0 return cacheManager.getCacheNames();
150    }
151    }