1 package org.shiftone.cache.adaptor; 2 3 4 5 import net.sf.ehcache.CacheManager; 6 import net.sf.ehcache.Element; 7 import org.shiftone.cache.Cache; 8 import org.shiftone.cache.util.Log; 9 10 import java.io.Serializable ; 11 12 13 19 public class EHCacheCache implements Cache 20 { 21 22 private static final Log LOG = new Log(EHCacheCache.class); 23 private net.sf.ehcache.Cache cache; 24 25 public EHCacheCache(String name) throws Exception 26 { 27 28 CacheManager cacheManager = CacheManager.getInstance(); 29 30 cache = cacheManager.getCache(name); 31 32 if (cache == null) 33 { 34 cacheManager.addCache(name); 35 36 cache = cacheManager.getCache(name); 37 } 38 } 39 40 41 public EHCacheCache(net.sf.ehcache.Cache cache) 42 { 43 this.cache = cache; 44 } 45 46 47 private final Serializable ser(Object o) 48 { 49 50 Serializable serializable; 51 52 try 53 { 54 serializable = (Serializable ) o; 55 } 56 catch (ClassCastException e) 57 { 58 throw new ClassCastException ("unable to cast " + o.getClass().getName() + " to Serializable"); 59 } 60 61 return serializable; 62 } 63 64 65 public final void addObject(Object userKey, Object cacheObject) 66 { 67 68 Serializable k = ser(userKey); 69 Serializable v = ser(cacheObject); 70 71 cache.put(new Element(k, v)); 72 } 73 74 75 public final Object getObject(Object key) 76 { 77 78 Element element = null; 79 80 try 81 { 82 element = cache.get((Serializable ) key); 83 } 84 catch (Exception e) 85 { 86 LOG.error("getObject", e); 87 } 88 89 return (element == null) 90 ? null 91 : element.getValue(); 92 } 93 94 95 public final int size() 96 { 97 return cache.getSize(); 98 } 99 100 101 public final void remove(Object key) 102 { 103 cache.remove((Serializable ) key); 104 } 105 106 107 public final void clear() 108 { 109 110 try 111 { 112 cache.removeAll(); 113 } 114 catch (Exception e) 115 { 116 LOG.error("clear", e); 117 } 118 } 119 120 121 public String toString() 122 { 123 return "EHCacheCache[" + cache.getName() + ":" + cache.getMaxElementsInMemory() + "]"; 124 } 125 } 126 | Popular Tags |