[exo-jcr-commits] exo-jcr SVN: r2224 - jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Apr 8 06:14:13 EDT 2010


Author: nzamosenchuk
Date: 2010-04-08 06:14:12 -0400 (Thu, 08 Apr 2010)
New Revision: 2224

Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/ChangesContainerExpirationFactory.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
Log:
EXOJCR-545: Added usage of expiration factory

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/ChangesContainerExpirationFactory.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/ChangesContainerExpirationFactory.java	2010-04-08 10:03:00 UTC (rev 2223)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/ChangesContainerExpirationFactory.java	2010-04-08 10:14:12 UTC (rev 2224)
@@ -16,46 +16,39 @@
  */
 package org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache;
 
+import org.jboss.cache.Cache;
+import org.jboss.cache.Fqn;
+import org.jboss.cache.eviction.ExpirationAlgorithmConfig;
+
 import java.io.Serializable;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
-import org.jboss.cache.Cache;
-import org.jboss.cache.Fqn;
-import org.jboss.cache.eviction.ExpirationAlgorithmConfig;
-
 /**
  * Created by The eXo Platform SAS.
  * 
- *  ChahgesContainerExpirationFactory this special factory to ExpirationAlgorithm  
+ *  ChahgesContainerExpirationFactory this special factory to ExpirationAlgorithm
  * 
  * <br/>Date: 2010
  *
- * @author <a href="mailto:alex.reshetnyak at exoplatform.com.ua">Alex Reshetnyak</a> 
+ * @author <a href="mailto:alex.reshetnyak at exoplatform.com.ua">Alex Reshetnyak</a>
  * @version $Id$
  */
 public class ChangesContainerExpirationFactory
-   extends ChangesContainerFactory
+extends ChangesContainerFactory
 {
-   
-   /**
-   * The expiration timeout.  
-   */
-   public final static long DEFAULT_EXPIRATION_TIMEOUT = 900000; // 15 minutes. 
 
+   /**
+    * The expiration timeout.
+    */
    public static long expirationTimeOut;
 
    public ChangesContainerExpirationFactory(long expirationTimeOut)
    {
       this.expirationTimeOut = expirationTimeOut;
    }
-   
-   public ChangesContainerExpirationFactory()
-   {
-      this.expirationTimeOut = DEFAULT_EXPIRATION_TIMEOUT;
-   }
-   
+
    /**
     * Put object container;
     */
@@ -96,21 +89,23 @@
       {
          setCacheLocalMode();
          cache.put(fqn, ExpirationAlgorithmConfig.EXPIRATION_KEY, new Long(System.currentTimeMillis() + expirationTimeOut));
-         
+
          setCacheLocalMode();
          cache.put(fqn, key, value);
       }
 
+      @Override
       public Serializable getKey()
       {
          return key;
       }
 
+      @Override
       public Object getValue()
       {
          return value;
       }
-      
+
    }
 
    /**
@@ -143,10 +138,10 @@
                newSet.addAll((Set<Object>)existingObject);
             }
             newSet.add(value);
-            
+
             setCacheLocalMode();
             cache.put(fqn, ExpirationAlgorithmConfig.EXPIRATION_KEY, new Long(System.currentTimeMillis() + expirationTimeOut));
-            
+
             setCacheLocalMode();
             cache.put(fqn, key, newSet);
          }
@@ -183,38 +178,42 @@
          {
             Set<Object> newSet = new HashSet<Object>((Set<Object>)existingObject);
             newSet.remove(value);
-            
+
             setCacheLocalMode();
             cache.put(fqn, ExpirationAlgorithmConfig.EXPIRATION_KEY, new Long(System.currentTimeMillis() + expirationTimeOut));
-            
+
             setCacheLocalMode();
             cache.put(fqn, key, newSet);
          }
       }
    }
-   
+
+   @Override
    public ChangesContainer createPutObjectContainer(Fqn fqn, Map<? extends Serializable, ? extends Object> data,
-            Cache<Serializable, Object> cache, int historicalIndex, boolean local)
+      Cache<Serializable, Object> cache, int historicalIndex, boolean local)
    {
-     return new PutObjectContainerExpiration(fqn, data, cache, historicalIndex, local);  
+      return new PutObjectContainerExpiration(fqn, data, cache, historicalIndex, local);
    }
-   
+
+   @Override
    public ChangesContainer createPutKeyValueContainer(Fqn fqn, Serializable key, Object value, Cache<Serializable, Object> cache,
-            int historicalIndex, boolean local)
+      int historicalIndex, boolean local)
    {
-     return new PutKeyValueContainerExpiration(fqn, key, value, cache, historicalIndex, local);  
+      return new PutKeyValueContainerExpiration(fqn, key, value, cache, historicalIndex, local);
    }
-   
+
+   @Override
    public ChangesContainer createAddToListContainer(Fqn fqn, Serializable key, Object value, Cache<Serializable, Object> cache,
-            int historicalIndex, boolean local)
+      int historicalIndex, boolean local)
    {
-     return new AddToListContainerExpiration(fqn, key, value, cache, historicalIndex, local);
+      return new AddToListContainerExpiration(fqn, key, value, cache, historicalIndex, local);
    }
-   
+
+   @Override
    public ChangesContainer createRemoveFromListContainer(Fqn fqn, Serializable key, Object value, Cache<Serializable, Object> cache,
-            int historicalIndex, boolean local)
+      int historicalIndex, boolean local)
    {
-     return new RemoveFromListContainerExpiration(fqn, key, value, cache, historicalIndex, local);
+      return new RemoveFromListContainerExpiration(fqn, key, value, cache, historicalIndex, local);
    }
 
 }

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java	2010-04-08 10:03:00 UTC (rev 2223)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java	2010-04-08 10:14:12 UTC (rev 2224)
@@ -96,6 +96,10 @@
 
    public static final String JBOSSCACHE_CONFIG = "jbosscache-configuration";
 
+   public static final String JBOSSCACHE_EXPIRATION = "jbosscache-expiration-time";
+
+   public static final int JBOSSCACHE_EXPIRATION_DEFAULT = 900000; // 15 minutes
+
    public static final String ITEMS = "$ITEMS".intern();
 
    public static final String CHILD_NODES = "$CHILD_NODES".intern();
@@ -306,8 +310,11 @@
          LOG.info("Using BufferedJBossCache compatible with Expiration algorithm.");
       }
 
-      // TODO: create appropriate cache with useExpiration set or not.
-      this.cache = new BufferedJBossCache(factory.createCache(wsConfig.getCache()), new ChangesContainerExpirationFactory());
+      // if expiration is used, set appropriate factory with with timeout set via configuration (or default one 15minutes)
+      this.cache =
+         new BufferedJBossCache(factory.createCache(wsConfig.getCache()), useExpiration
+            ? new ChangesContainerExpirationFactory(wsConfig.getCache().getParameterInteger(JBOSSCACHE_EXPIRATION,
+               JBOSSCACHE_EXPIRATION_DEFAULT)) : new ChangesContainerFactory());
 
       this.itemsRoot = Fqn.fromElements(ITEMS);
       this.childNodes = Fqn.fromElements(CHILD_NODES);



More information about the exo-jcr-commits mailing list