[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