From: Hany M. <hm...@no...> - 2005-07-22 20:58:09
|
User: hmesha Date: 05/07/22 16:57:07 Modified: src/org/jboss/cache TreeCache.java Log: JBCACHE-66 implementation. Changes to TeeCache.java 1. Added field protected boolean cache_loader_passivate; 2. Added public void setCacheLoaderPassivation(boolean passivate) 3. Added public boolean getCacheLoaderPassivation() 4. Changed createPessimisticInterceptorChain() 5. TODO: After the optimistic locking changes are all done, make sure the passivation stuff is added to it too. Revision Changes Path 1.23 +64 -8 JBossCache/src/org/jboss/cache/TreeCache.java (In the diff below, changes in quantity of whitespace are not shown.) Index: TreeCache.java =================================================================== RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/TreeCache.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -b -r1.22 -r1.23 --- TreeCache.java 22 Jul 2005 18:19:49 -0000 1.22 +++ TreeCache.java 22 Jul 2005 20:57:07 -0000 1.23 @@ -48,7 +48,7 @@ * * @author Bela Ban * @author Ben Wang - * @version $Id: TreeCache.java,v 1.22 2005/07/22 18:19:49 msurtani Exp $ + * @version $Id: TreeCache.java,v 1.23 2005/07/22 20:57:07 hmesha Exp $ * <p/> */ public class TreeCache extends ServiceMBeanSupport implements TreeCacheMBean, Cloneable, MembershipListener { @@ -165,6 +165,9 @@ /** Are the CacheLoaders sharing the same resource or not ? */ protected boolean cache_loader_shared=true; + /** Will the cache loader passivate on eviction or persist? */ + protected boolean cache_loader_passivate = false; + /** List<Fqn> of nodes to preload (if cache loader is enabled) */ protected List cache_loader_preload=null; @@ -207,6 +210,7 @@ protected boolean nodeLockingOptimistic = false; + static { try { putDataMethodLocal=TreeCache.class.getDeclaredMethod("_put", @@ -536,6 +540,20 @@ this.cache_loader_shared=shared; } + /** + * @return + */ + public boolean getCacheLoaderPassivation() { + return cache_loader_passivate; + } + + /** + * @param passivate + */ + public void setCacheLoaderPassivation(boolean passivate) { + this.cache_loader_passivate = passivate; + } + /** * @param list @@ -1167,6 +1185,8 @@ Interceptor cache_loader_interceptor=null; Interceptor cache_store_interceptor=null; Interceptor unlock_interceptor=null; + Interceptor passivation_interceptor=null; + Interceptor activation_interceptor=null; Interceptor first=null; call_interceptor=createInterceptor("org.jboss.cache.interceptors.CallInterceptor"); @@ -1187,14 +1207,31 @@ } if(cache_loader_class != null || cache_loader != null) { + if(cache_loader_passivate) { + activation_interceptor=createInterceptor("org.jboss.cache.interceptors.ActivationInterceptor"); + activation_interceptor.setCache(this); + passivation_interceptor=createInterceptor("org.jboss.cache.interceptors.PassivationInterceptor"); + passivation_interceptor.setCache(this); + } + else { cache_loader_interceptor=createInterceptor("org.jboss.cache.interceptors.CacheLoaderInterceptor"); cache_loader_interceptor.setCache(this); cache_store_interceptor=createInterceptor("org.jboss.cache.interceptors.CacheStoreInterceptor"); cache_store_interceptor.setCache(this); } + } // create the stack from the bottom up + if(activation_interceptor != null) { + if(cache_loader_shared == true) { + if(first == null) + first=passivation_interceptor; + else + addInterceptor(first, passivation_interceptor); + } + } + if(cache_loader_interceptor != null) { if(cache_loader_shared == true) { if(first == null) @@ -1218,6 +1255,24 @@ addInterceptor(first, unlock_interceptor); } + if(activation_interceptor != null) { + if(cache_loader_shared == true) { + if(first == null) + first=activation_interceptor; + else + addInterceptor(first, activation_interceptor); + } + else { + if(first == null) + first=activation_interceptor; + else + addInterceptor(first, activation_interceptor); + if(first == null) + first=passivation_interceptor; + else + addInterceptor(first, passivation_interceptor); + } + } if(cache_loader_interceptor != null) { if(cache_loader_shared == true) { if(first == null) @@ -1259,6 +1314,7 @@ protected void createInterceptorChain() throws IllegalAccessException, InstantiationException, ClassNotFoundException { + // TODO: hmesha - After the optimistic locking changes are all done, make sure the passivation interceptors are in the stack if (isNodeLockingOptimistic()){ createOptimisticInterceptorChain(); }else{ @@ -2700,7 +2756,7 @@ * that is, it doesn't replicate the node removal. This is will cause the replcation nodes * not synchronizing, but it is ok since user is supposed to add the node again when get is * null. After that, the contents will be in sync. - * @param fqn Will remove everythign assoicated with this fqn. + * @param fqn Will remove everything assoicated with this fqn. * @throws CacheException */ public void _evict(Fqn fqn) throws CacheException { |