You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by gk...@apache.org on 2021/03/23 12:19:49 UTC
svn commit: r1887960 - in /turbine/fulcrum/trunk/cache: ./
src/java/org/apache/fulcrum/cache/ src/java/org/apache/fulcrum/cache/impl/
src/test/ src/test/org/apache/fulcrum/cache/ xdocs/
Author: gk
Date: Tue Mar 23 12:19:49 2021
New Revision: 1887960
URL: http://svn.apache.org/viewvc?rev=1887960&view=rev
Log:
- Update JCS to commons-jcs3-core
- Update tests to JUnit 5 and dependencies to Fulcrum Testcontainer 1.0.9 and Turbine Parent 7
- Add logging configuration for EHcache and JCS
- Fix expiry in CachedObject, use AtomicInteger instead of synchronized stale
- Fix/Update maxlife calculation in JCSCacheService (already in JCS 2 latest version)
- TODO: Update to ehcache 3 ? or/and use test/ehcache.xml ?
Added:
turbine/fulcrum/trunk/cache/src/test/log4j2-test.xml
turbine/fulcrum/trunk/cache/src/test/simplelogger.properties
Modified:
turbine/fulcrum/trunk/cache/pom.xml (contents, props changed)
turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/CachedObject.java
turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/impl/EHCacheService.java
turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/impl/JCSCacheService.java (contents, props changed)
turbine/fulcrum/trunk/cache/src/test/cache.ccf
turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/CacheTest.java (contents, props changed)
turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/EHCacheTest.java (contents, props changed)
turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/JCSCacheTest.java (contents, props changed)
turbine/fulcrum/trunk/cache/xdocs/changes.xml
turbine/fulcrum/trunk/cache/xdocs/index.xml
Modified: turbine/fulcrum/trunk/cache/pom.xml
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/cache/pom.xml?rev=1887960&r1=1887959&r2=1887960&view=diff
==============================================================================
--- turbine/fulcrum/trunk/cache/pom.xml (original)
+++ turbine/fulcrum/trunk/cache/pom.xml Tue Mar 23 12:19:49 2021
@@ -19,7 +19,7 @@
<parent>
<groupId>org.apache.turbine</groupId>
<artifactId>turbine-parent</artifactId>
- <version>6</version>
+ <version>7</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -30,7 +30,7 @@
<inceptionYear>2004</inceptionYear>
<description>Fulcrum Cache Service</description>
<url>http://turbine.apache.org/fulcrum/fulcrum-cache</url>
-
+
<scm>
<connection>scm:svn:http://svn.apache.org/repos/asf/turbine/fulcrum/trunk/cache/</connection>
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/turbine/fulcrum/trunk/cache/</developerConnection>
@@ -64,21 +64,41 @@
<artifactId>avalon-framework-api</artifactId>
<version>4.3.1</version>
</dependency>
- <dependency>
- <groupId>net.sf.ehcache</groupId>
- <artifactId>ehcache</artifactId>
- <version>2.10.5</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-jcs-core</artifactId>
- <version>2.2.1</version>
- </dependency>
+ <dependency>
+ <groupId>net.sf.ehcache</groupId>
+ <artifactId>ehcache</artifactId>
+ <version>2.10.6</version>
+ </dependency>
+ <!-- ehcache has api slf4j incldued -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <version>1.7.30</version>
+ <scope>test</scope>
+ </dependency>
+ <!--dependency>
+ <groupId>org.ehcache</groupId>
+ <artifactId>ehcache</artifactId>
+ <version>3.9.2</version>
+ <scope>optional</scope>
+ </dependency-->
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-jcs3-core</artifactId>
+ <version>3.0</version>
+ </dependency>
+ <!-- log optional for jcs3, required log4j2.xml and system property -Djcs.logSystem=log4j2 -->
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ <version>2.14.1</version>
+ <scope>test</scope>
+ </dependency>
<!-- testing dependencies -->
<dependency>
<groupId>org.apache.fulcrum</groupId>
<artifactId>fulcrum-testcontainer</artifactId>
- <version>1.0.8</version>
+ <version>1.0.9</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -92,6 +112,17 @@
<build>
<sourceDirectory>${basedir}/src/java</sourceDirectory>
<testSourceDirectory>${basedir}/src/test</testSourceDirectory>
+
+ <testResources>
+ <testResource>
+ <directory>src/test</directory>
+ <includes>
+ <include>**/*.xml</include>
+ <include>**/*.ccf</include>
+ <include>**/*.properties</include>
+ </includes>
+ </testResource>
+ </testResources>
<plugins>
<plugin>
@@ -116,5 +147,5 @@
<turbine.site.path>fulcrum/fulcrum-cache</turbine.site.path>
</properties>
-
+
</project>
Propchange: turbine/fulcrum/trunk/cache/pom.xml
------------------------------------------------------------------------------
svn:keywords = Id
Modified: turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/CachedObject.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/CachedObject.java?rev=1887960&r1=1887959&r2=1887960&view=diff
==============================================================================
--- turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/CachedObject.java (original)
+++ turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/CachedObject.java Tue Mar 23 12:19:49 2021
@@ -20,6 +20,7 @@ package org.apache.fulcrum.cache;
*/
import java.io.Serializable;
+import java.util.concurrent.atomic.AtomicBoolean;
/**
* Wrapper for an object you want to store in a cache for a period of time.
@@ -62,7 +63,7 @@ public class CachedObject<T> implements
private long expires = 0;
/** Is this object stale/expired? */
- private boolean stale = false;
+ private AtomicBoolean stale = new AtomicBoolean();
/**
* Constructor; sets the object to expire in the default time (30 minutes).
@@ -89,10 +90,12 @@ public class CachedObject<T> implements
if (expires == DEFAULT)
{
this.expires = this.defaultage;
+ } else {
+ this.expires = expires;
}
this.contents = o;
- this.expires = expires;
+
this.created = System.currentTimeMillis();
}
@@ -158,9 +161,9 @@ public class CachedObject<T> implements
* @param stale
* Whether the object is stale or not.
*/
- public synchronized void setStale(boolean stale)
+ public void setStale(boolean stale)
{
- this.stale = stale;
+ this.stale.set( stale );
}
/**
@@ -168,9 +171,9 @@ public class CachedObject<T> implements
*
* @return Whether the object is stale or not.
*/
- public synchronized boolean getStale()
+ public boolean getStale()
{
- return this.stale;
+ return this.stale.get();
}
/**
@@ -178,7 +181,7 @@ public class CachedObject<T> implements
*
* @return True if the object is stale.
*/
- public synchronized boolean isStale()
+ public boolean isStale()
{
if (this.expires == FOREVER)
{
Modified: turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/impl/EHCacheService.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/impl/EHCacheService.java?rev=1887960&r1=1887959&r2=1887960&view=diff
==============================================================================
--- turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/impl/EHCacheService.java (original)
+++ turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/impl/EHCacheService.java Tue Mar 23 12:19:49 2021
@@ -23,10 +23,6 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import net.sf.ehcache.Cache;
-import net.sf.ehcache.CacheManager;
-import net.sf.ehcache.Element;
-
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.configuration.Configurable;
@@ -39,8 +35,12 @@ import org.apache.fulcrum.cache.GlobalCa
import org.apache.fulcrum.cache.ObjectExpiredException;
import org.apache.fulcrum.cache.RefreshableCachedObject;
+import net.sf.ehcache.Cache;
+import net.sf.ehcache.CacheManager;
+import net.sf.ehcache.Element;
+
/**
- * Default implementation of EHCacheService
+ * Default implementation of EHCacheService (Ehcache 2)
*
* @author <a href="mailto:epughNOSPAM@opensourceconnections.com">Eric Pugh</a>
* @author <a href="mailto:tv@apache.org">Thomas Vandahl</a>
@@ -61,7 +61,7 @@ public class EHCacheService extends Abst
private long cacheCheckFrequency;
/**
- * Path name of the JCS configuration file
+ * Path name of the Ehcache configuration file
*/
private String configFile;
Modified: turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/impl/JCSCacheService.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/impl/JCSCacheService.java?rev=1887960&r1=1887959&r2=1887960&view=diff
==============================================================================
--- turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/impl/JCSCacheService.java (original)
+++ turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/impl/JCSCacheService.java Tue Mar 23 12:19:49 2021
@@ -34,11 +34,11 @@ import org.apache.avalon.framework.confi
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.commons.jcs.JCS;
-import org.apache.commons.jcs.access.GroupCacheAccess;
-import org.apache.commons.jcs.access.exception.CacheException;
-import org.apache.commons.jcs.engine.ElementAttributes;
-import org.apache.commons.jcs.engine.control.CompositeCacheManager;
+import org.apache.commons.jcs3.JCS;
+import org.apache.commons.jcs3.access.GroupCacheAccess;
+import org.apache.commons.jcs3.access.exception.CacheException;
+import org.apache.commons.jcs3.engine.ElementAttributes;
+import org.apache.commons.jcs3.engine.control.CompositeCacheManager;
import org.apache.fulcrum.cache.CachedObject;
import org.apache.fulcrum.cache.GlobalCacheService;
import org.apache.fulcrum.cache.ObjectExpiredException;
@@ -48,7 +48,7 @@ import org.apache.fulcrum.cache.Refresha
* Default implementation of JCSCacheService
*
* @author <a href="mailto:tv@apache.org">Thomas Vandahl</a>
- * @version $Id:$
+ * @version $Id$
*/
public class JCSCacheService extends AbstractLogEnabled implements
GlobalCacheService, Runnable, Configurable, Disposable, Initializable,
@@ -227,7 +227,10 @@ public class JCSCacheService extends Abs
else
{
attrib.setIsEternal(false);
- attrib.setMaxLife(o.getExpires() + 500);
+ // expires in millis, maxlife in seconds
+ double tmp0 = (o.getExpires() + 500) / 1000;
+ getLogger().debug( "setting maxlife seconds (minimum 1sec) from expiry + 0.5s: " + (int)tmp0 );
+ attrib.setMaxLife( (tmp0 > 0 ? (int) Math.floor( tmp0 ) : 1 ) );
}
attrib.setLastAccessTimeNow();
Propchange: turbine/fulcrum/trunk/cache/src/java/org/apache/fulcrum/cache/impl/JCSCacheService.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: turbine/fulcrum/trunk/cache/src/test/cache.ccf
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/cache/src/test/cache.ccf?rev=1887960&r1=1887959&r2=1887960&view=diff
==============================================================================
--- turbine/fulcrum/trunk/cache/src/test/cache.ccf (original)
+++ turbine/fulcrum/trunk/cache/src/test/cache.ccf Tue Mar 23 12:19:49 2021
@@ -17,13 +17,23 @@
# Java Caching System configuration
jcs.default=
-jcs.default.cacheattributes=org.apache.commons.jcs.engine.CompositeCacheAttributes
-jcs.default.cacheattributes.MaxObjects=100
-jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.commons.engine.memory.lru.LRUMemoryCache
-jcs.default.elementattributes=org.apache.commons.jcs.engine.ElementAttributes
+jcs.default.cacheattributes=org.apache.commons.jcs3.engine.CompositeCacheAttributes
+jcs.default.cacheattributes.MaxObjects=1000
+jcs.default.cacheattributes.MemoryCacheName=org.apache.commons.jcs3.engine.memory.lru.LRUMemoryCache
+# memory shrinking start
+#jcs.default.cacheattributes.UseMemoryShrinker=true
+#jcs.default.cacheattributes.MaxMemoryIdleTimeSeconds=3600
+#jcs.default.cacheattributes.ShrinkerIntervalSeconds=60
+#jcs.default.cacheattributes.MaxSpoolPerRun=500
+jcs.default.elementattributes=org.apache.commons.jcs3.engine.ElementAttributes
+
+# isEternal is assumed by default in Fulcrum Cache
+jcs.default.elementattributes.IsEternal=false
+## memory shrinking end
+
+jcs.region.fulcrum=
+jcs.region.fulcrum.cacheattributes=org.apache.commons.jcs3.engine.CompositeCacheAttributes
+jcs.region.fulcrum.cacheattributes.MaxObjects=100
+jcs.region.fulcrum.cacheattributes.MemoryCacheName=org.apache.commons.jcs3.engine.memory.lru.LRUMemoryCache
+jcs.region.fulcrum.elementattributes=org.apache.commons.jcs3.engine.ElementAttributes
-jcs.region.Cache_Test=
-jcs.region.Cache_Test.cacheattributes=org.apache.commons.jcs.engine.CompositeCacheAttributes
-jcs.region.Cache_Test.cacheattributes.MaxObjects=100
-jcs.region.Cache_Test.cacheattributes.MemoryCacheName=org.apache.commons.jcs.engine.memory.lru.LRUMemoryCache
-jcs.region.Cache_Test.elementattributes=org.apache.commons.jcs.engine.ElementAttributes
Added: turbine/fulcrum/trunk/cache/src/test/log4j2-test.xml
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/cache/src/test/log4j2-test.xml?rev=1887960&view=auto
==============================================================================
--- turbine/fulcrum/trunk/cache/src/test/log4j2-test.xml (added)
+++ turbine/fulcrum/trunk/cache/src/test/log4j2-test.xml Tue Mar 23 12:19:49 2021
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<Configuration status="info" verbose="true">
+ <Appenders>
+ <Console name="console" target="SYSTEM_OUT">
+ <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
+ </Console>
+ <File name="fulcrum-cache" fileName="./target/fulcrum-cache.log">
+ <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
+ </File>
+ <File name="avalon" fileName="./target/avalon.log">
+ <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
+ </File>
+ </Appenders>
+ <Loggers>
+ <Logger name="org.apache.fulcrum" level="debug" additivity="false">
+ <AppenderRef ref="fulcrum-cache"/>
+ </Logger>
+ <Logger name="org.apache.commons.jcs3" level="debug" additivity="false">
+ <AppenderRef ref="fulcrum-cache"/>
+ </Logger>
+ <Logger name="net.sf.ehcache" level="debug" additivity="false">
+ <AppenderRef ref="fulcrum-cache"/>
+ </Logger>
+ <Root level="error">
+ <AppenderRef ref="console"/>
+ <AppenderRef ref="fulcrum"/>
+ </Root>
+ </Loggers>
+</Configuration>
\ No newline at end of file
Modified: turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/CacheTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/CacheTest.java?rev=1887960&r1=1887959&r2=1887960&view=diff
==============================================================================
--- turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/CacheTest.java (original)
+++ turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/CacheTest.java Tue Mar 23 12:19:49 2021
@@ -19,17 +19,25 @@
package org.apache.fulcrum.cache;
-// Cactus and Junit imports
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
import java.util.ConcurrentModificationException;
import java.util.Date;
import java.util.List;
import org.apache.avalon.framework.component.ComponentException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.fulcrum.cache.impl.DefaultGlobalCacheService;
-import org.apache.fulcrum.testcontainer.BaseUnitTest;
+import org.apache.fulcrum.testcontainer.BaseUnit5Test;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
/**
* CacheTest
@@ -39,7 +47,7 @@ import org.apache.fulcrum.testcontainer.
* @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
* @version $Id$
*/
-public class CacheTest extends BaseUnitTest
+public class CacheTest extends BaseUnit5Test
{
protected GlobalCacheService globalCache = null;
@@ -50,17 +58,16 @@ public class CacheTest extends BaseUnitT
public static final String SKIP_TESTS_KEY = "fulcrum.cache.skip.long.tests";
- protected static final Log LOG = LogFactory.getLog(CacheTest.class);
+ protected final Logger log = LogManager.getLogger( getClass().getName() );
- /**
- * Defines the testcase name for JUnit.
- *
- * @param name
- * the testcase's name.
- */
- public CacheTest(String name)
- {
- super(name);
+ static {
+ String logSystem = System.getProperty("jcs.logSystem", null);
+ if (logSystem == null) {
+ System.setProperty("jcs.logSystem", "log4j2" );
+ System.out.println( "Setting jcs.logSystem to: log4j2");
+ logSystem = System.getProperty("jcs.logSystem", null);
+ }
+ System.out.println( "What is the value of the jcs.logSystem: "+ logSystem);
}
/**
@@ -73,21 +80,26 @@ public class CacheTest extends BaseUnitT
return GlobalCacheService.ROLE;
}
- @Override
+ @BeforeEach
protected void setUp() throws Exception
{
- super.setUp();
-
- try
- {
- this.globalCache = (GlobalCacheService) this
- .lookup(getCacheRoleName());
- }
- catch (ComponentException e)
- {
- e.printStackTrace();
- fail(e.getMessage());
- }
+ //if (globalCache == null) {
+ try
+ {
+ globalCache = (GlobalCacheService) this
+ .lookup(getCacheRoleName());
+ }
+ catch (ComponentException e)
+ {
+ e.printStackTrace();
+ fail(e.getMessage());
+ }
+ //}
+ }
+
+ @AfterEach
+ protected void cleanup() {
+ this.globalCache.removeObject(cacheKey);
}
/**
@@ -95,6 +107,7 @@ public class CacheTest extends BaseUnitT
*
* @throws Exception
*/
+ @Test
public void testSimpleAddGetCacheObject() throws Exception
{
String testString = "This is a test";
@@ -102,14 +115,15 @@ public class CacheTest extends BaseUnitT
CachedObject<String> cacheObject1 = null;
// Create object
cacheObject1 = new CachedObject<String>(testString);
- assertNotNull("Failed to create a cachable object 1", cacheObject1);
+ assertNotNull(cacheObject1, "Failed to create a cachable object 1" );
// Add object to cache
this.globalCache.addObject(cacheKey, cacheObject1);
// Get object from cache
retrievedObject = this.globalCache.getObject(cacheKey);
- assertNotNull("Did not retrieve a cached object 1", retrievedObject);
- assertSame("Did not retrieve a correct, expected cached object 1",
- retrievedObject, cacheObject1);
+ assertNotNull( retrievedObject, "Did not retrieve a cached object 1");
+ assertSame(
+ retrievedObject, cacheObject1,
+ "Did not retrieve a correct, expected cached object 1");
// Remove object from cache
this.globalCache.removeObject(cacheKey);
// Verify object removed from cache
@@ -119,17 +133,20 @@ public class CacheTest extends BaseUnitT
{
retrievedObject = this.globalCache.getObject(cacheKey);
assertNull(
- "Retrieved the deleted cached object 1 and did not get expected ObjectExpiredException",
- retrievedObject);
+ retrievedObject,
+ "Retrieved the deleted cached object 1 and did not get expected ObjectExpiredException"
+ );
assertNotNull(
- "Did not get expected ObjectExpiredException retrieving a deleted object",
- retrievedObject);
+ retrievedObject,
+ "Did not get expected ObjectExpiredException retrieving a deleted object"
+ );
}
catch (ObjectExpiredException e)
{
assertNull(
- "Retrieved the deleted cached object 1, but caught expected ObjectExpiredException exception",
- retrievedObject);
+ retrievedObject,
+ "Retrieved the deleted cached object 1, but caught expected ObjectExpiredException exception"
+ );
}
// Remove object from cache that does NOT exist in the cache
this.globalCache.removeObject(cacheKey);
@@ -140,6 +157,7 @@ public class CacheTest extends BaseUnitT
*
* @throws Exception
*/
+ @Test
public void test2ObjectAddGetCachedObject() throws Exception
{
String testString = "This is a test";
@@ -148,38 +166,45 @@ public class CacheTest extends BaseUnitT
CachedObject<String> cacheObject2 = null;
// Create and add Object #1
cacheObject1 = new CachedObject<String>(testString);
- assertNotNull("Failed to create a cachable object 1", cacheObject1);
+ assertNotNull(cacheObject1, "Failed to create a cachable object 1" );
this.globalCache.addObject(cacheKey, cacheObject1);
retrievedObject = this.globalCache.getObject(cacheKey);
- assertNotNull("Did not retrieve a cached object 1", retrievedObject);
- assertEquals("Did not retrieve correct cached object", cacheObject1,
- retrievedObject);
+ assertNotNull( retrievedObject, "Did not retrieve a cached object 1");
+ assertEquals(cacheObject1,
+ retrievedObject, "Did not retrieve correct cached object");
// Create and add Object #2
cacheObject2 = new CachedObject<String>(testString);
- assertNotNull("Failed to create a cachable object 2", cacheObject2);
+ assertNotNull(cacheObject2, "Failed to create a cachable object 2");
this.globalCache.addObject(cacheKey_2, cacheObject2);
retrievedObject = this.globalCache.getObject(cacheKey_2);
- assertNotNull("Did not retrieve a cached object 2", retrievedObject);
- assertEquals("Did not retrieve correct cached object 2", cacheObject2,
- retrievedObject);
+ assertNotNull(retrievedObject, "Did not retrieve a cached object 2");
+ assertEquals( cacheObject2,
+ retrievedObject,
+ "Did not retrieve correct cached object 2");
// Get object #1
retrievedObject = this.globalCache.getObject(cacheKey);
- assertNotNull("Did not retrieve a cached object 1. Attempt #2",
- retrievedObject);
- assertEquals("Did not retrieve correct cached object 1. Attempt #2",
- cacheObject1, retrievedObject);
+ assertNotNull(
+ retrievedObject,
+ "Did not retrieve a cached object 1. Attempt #2");
+ assertEquals(
+ cacheObject1, retrievedObject,
+ "Did not retrieve correct cached object 1. Attempt #2");
// Get object #1
retrievedObject = this.globalCache.getObject(cacheKey);
- assertNotNull("Did not retrieve a cached object 1. Attempt #3",
- retrievedObject);
- assertEquals("Did not retrieve correct cached object 1. Attempt #3",
- cacheObject1, retrievedObject);
+ assertNotNull(
+ retrievedObject,
+ "Did not retrieve a cached object 1. Attempt #3");
+ assertEquals(
+ cacheObject1, retrievedObject,
+ "Did not retrieve correct cached object 1. Attempt #3");
// Get object #2
retrievedObject = this.globalCache.getObject(cacheKey_2);
- assertNotNull("Did not retrieve a cached object 2. Attempt #2",
- retrievedObject);
- assertEquals("Did not retrieve correct cached object 2 Attempt #2",
- cacheObject2, retrievedObject);
+ assertNotNull(
+ retrievedObject,
+ "Did not retrieve a cached object 2. Attempt #2");
+ assertEquals(
+ cacheObject2, retrievedObject,
+ "Did not retrieve correct cached object 2 Attempt #2");
// Remove objects
this.globalCache.removeObject(cacheKey);
this.globalCache.removeObject(cacheKey_2);
@@ -191,6 +216,7 @@ public class CacheTest extends BaseUnitT
*
* @throws Exception
*/
+ @Test
public void testObjectExpiration() throws Exception
{
String testString = "This is a test";
@@ -198,22 +224,22 @@ public class CacheTest extends BaseUnitT
CachedObject<String> cacheObject = null;
// Create and add Object that expires in 1000 millis (1 second)
cacheObject = new CachedObject<String>(testString, 1000);
- assertNotNull("Failed to create a cachable object", cacheObject);
+ assertNotNull(cacheObject, "Failed to create a cachable object");
long addTime = System.currentTimeMillis();
this.globalCache.addObject(cacheKey, cacheObject);
// Try to get un-expired object
try
{
retrievedObject = this.globalCache.getObject(cacheKey);
- assertNotNull("Did not retrieve a cached object", retrievedObject);
- assertEquals("Did not retrieve correct cached object",
- cacheObject, retrievedObject);
+ assertNotNull( retrievedObject, "Did not retrieve a cached object");
+ assertEquals(
+ cacheObject, retrievedObject,
+ "Did not retrieve correct cached object");
}
catch (ObjectExpiredException e)
{
- assertTrue("Object expired early ( "
- + (System.currentTimeMillis() - addTime) + " millis)",
- false);
+ assertTrue(false, "Object expired early ( "
+ + (System.currentTimeMillis() - addTime) + " millis)");
}
// Sleep 1500 Millis (1.5 seconds)
Thread.sleep(1500);
@@ -222,18 +248,18 @@ public class CacheTest extends BaseUnitT
{
retrievedObject = null;
retrievedObject = this.globalCache.getObject(cacheKey);
- assertNull(
- "Retrieved the expired cached object and did not get expected ObjectExpiredException",
- retrievedObject);
- assertNotNull(
- "Did not get expected ObjectExpiredException retrieving an expired object",
- retrievedObject);
+ assertNull(retrievedObject,
+ "Retrieved the expired cached object and did not get expected ObjectExpiredException"
+ );
+ assertNotNull(retrievedObject,
+ "Did not get expected ObjectExpiredException retrieving an expired object"
+ );
}
catch (ObjectExpiredException e)
{
- assertNull(
- "Retrieved the expired cached object, but caught expected ObjectExpiredException exception",
- retrievedObject);
+ assertNull(retrievedObject,
+ "Retrieved the expired cached object, but caught expected ObjectExpiredException exception"
+ );
}
// Remove objects
this.globalCache.removeObject(cacheKey);
@@ -246,23 +272,26 @@ public class CacheTest extends BaseUnitT
*
* @throws Exception
*/
+ @Test
public void testCacheFlush() throws Exception
{
String testString = "This is a test";
CachedObject<String> cacheObject = null;
// Create and add Object that expires in 1 turbine Refresh + 1 millis
cacheObject = new CachedObject<String>(testString, (getCacheRefresh() * 5) + 1);
- assertNotNull("Failed to create a cachable object", cacheObject);
+ assertNotNull( cacheObject, "Failed to create a cachable object");
this.globalCache.addObject(cacheKey, cacheObject);
// 1 Refresh
Thread.sleep(getCacheRefresh() + 1);
- assertTrue("No object in cache before flush", (0 < this.globalCache
- .getNumberOfObjects()));
+ assertTrue( (0 < this.globalCache
+ .getNumberOfObjects()),
+ "No object in cache before flush");
// Flush Cache
this.globalCache.flushCache();
// Wait 15 seconds, 3 Refresh
Thread.sleep((getCacheRefresh() * 2) + 1);
- assertEquals("After refresh", 0, this.globalCache.getNumberOfObjects());
+ assertEquals( 0, this.globalCache.getNumberOfObjects(),
+ "After refresh");
// Remove objects
this.globalCache.removeObject(cacheKey);
}
@@ -272,32 +301,38 @@ public class CacheTest extends BaseUnitT
*
* @throws Exception
*/
+ @Test
public void testObjectCount() throws Exception
{
- assertNotNull("Could not retrieve cache service.", this.globalCache);
+ assertNotNull(this.globalCache, "Could not retrieve cache service.");
long cacheRefresh = getCacheRefresh();
// Create and add Object that expires in 1.5 turbine Refresh
long expireTime = cacheRefresh + cacheRefresh / 2;
+ log.info( "set expireTime in ms: {}", expireTime );
CachedObject<String> cacheObject = new CachedObject<String>("This is a test",
expireTime);
- assertNotNull("Failed to create a cachable object", cacheObject);
+ assertNotNull( cacheObject, "Failed to create a cachable object");
this.globalCache.addObject(cacheKey, cacheObject);
- assertEquals("After adding 1 Object", 1, this.globalCache
- .getNumberOfObjects());
+ assertEquals( 1, this.globalCache
+ .getNumberOfObjects(),
+ "After adding 1 Object");
// Wait until we're passed 1 refresh, but not half way.
Thread.sleep(cacheRefresh + cacheRefresh / 3);
- assertEquals("After one refresh", 1, this.globalCache
- .getNumberOfObjects());
+ assertEquals( 1, this.globalCache
+ .getNumberOfObjects(),
+ "After one refresh");
// Wait until we're passed 2 more refreshes
Thread.sleep((cacheRefresh * 2) + cacheRefresh / 3);
- assertEquals("After three refreshes", 0, this.globalCache
- .getNumberOfObjects());
+
+ assertEquals(0, this.globalCache
+ .getNumberOfObjects(),
+ "After three refreshes");
}
/**
@@ -309,6 +344,7 @@ public class CacheTest extends BaseUnitT
*
* @throws Exception
*/
+ @Test
public void testRefreshableObject() throws Exception
{
CachedObject<RefreshableObject> retrievedObject = null;
@@ -316,22 +352,23 @@ public class CacheTest extends BaseUnitT
// Create and add Object that expires in TEST_EXPIRETIME millis.
cacheObject = new RefreshableCachedObject<RefreshableObject>(new RefreshableObject(),
getTestExpireTime());
- assertNotNull("Failed to create a cachable object", cacheObject);
+ assertNotNull( cacheObject, "Failed to create a cachable object");
long addTime = System.currentTimeMillis();
this.globalCache.addObject(cacheKey, cacheObject);
// Try to get un-expired object
try
{
retrievedObject = this.globalCache.getObject(cacheKey);
- assertNotNull("Did not retrieve a cached object", retrievedObject);
- assertEquals("Did not retrieve correct cached object",
- cacheObject, retrievedObject);
+ assertNotNull(retrievedObject, "Did not retrieve a cached object");
+ assertEquals(
+ cacheObject, retrievedObject,
+ "Did not retrieve correct cached object");
}
catch (ObjectExpiredException e)
{
- assertTrue("Object expired early ( "
- + (System.currentTimeMillis() - addTime) + " millis)",
- false);
+ assertTrue(false, "Object expired early ( "
+ + (System.currentTimeMillis() - addTime) + " millis)"
+ );
}
// Wait 1 Turbine cache refresh + 1 second.
Thread.sleep(getTestExpireTime() + 1000);
@@ -340,21 +377,23 @@ public class CacheTest extends BaseUnitT
{
retrievedObject = null;
retrievedObject = this.globalCache.getObject(cacheKey);
- assertNotNull("Did not retrieve a cached object, after sleep",
- retrievedObject);
- assertNotNull("Cached object has no contents, after sleep.",
- ((RefreshableCachedObject<?>) retrievedObject).getContents());
+ assertNotNull(
+ retrievedObject, "Did not retrieve a cached object, after sleep");
+ assertNotNull(
+ ((RefreshableCachedObject<?>) retrievedObject).getContents(),
+ "Cached object has no contents, after sleep.");
assertTrue(
- "Object did not refresh.",
+
(((RefreshableCachedObject<RefreshableObject>) retrievedObject)
- .getContents().getRefreshCount() > 0));
+ .getContents().getRefreshCount() > 0),
+ "Object did not refresh.");
}
catch (ObjectExpiredException e)
{
- assertTrue("Received unexpected ObjectExpiredException exception "
+ assertTrue(false, "Received unexpected ObjectExpiredException exception "
+ "when retrieving refreshable object after ( "
- + (System.currentTimeMillis() - addTime) + " millis)",
- false);
+ + (System.currentTimeMillis() - addTime) + " millis)"
+ );
}
// See if object will expires (testing every second for 100 seconds. It
// should not!
@@ -366,23 +405,25 @@ public class CacheTest extends BaseUnitT
{
retrievedObject = null;
retrievedObject = this.globalCache.getObject(cacheKey);
- assertNotNull("Did not retrieve a cached object, after sleep",
- retrievedObject);
- assertNotNull("Cached object has no contents, after sleep.",
+ assertNotNull(retrievedObject,
+ "Did not retrieve a cached object, after sleep");
+ assertNotNull(
((RefreshableCachedObject<?>) retrievedObject)
- .getContents());
+ .getContents(),
+ "Cached object has no contents, after sleep.");
assertTrue(
- "Object did not refresh.",
+
(((RefreshableCachedObject<RefreshableObject>) retrievedObject)
- .getContents().getRefreshCount() > 0));
+ .getContents().getRefreshCount() > 0),
+ "Object did not refresh.");
}
catch (ObjectExpiredException e)
{
- assertTrue(
+ assertTrue(false,
"Received unexpected ObjectExpiredException exception "
+ "when retrieving refreshable object after ( "
+ (System.currentTimeMillis() - addTime)
- + " millis)", false);
+ + " millis)");
}
}
// Remove objects
@@ -397,20 +438,21 @@ public class CacheTest extends BaseUnitT
*
* @throws Exception
*/
+ @Test
public void testRefreshableTimeToLive() throws Exception
{
String skipTestsProperty = System.getProperty(SKIP_TESTS_KEY, "false");
- LOG.info("What is the value of the skipTestsProperty:"
+ log.info("What is the value of the skipTestsProperty: "
+ skipTestsProperty);
if (Boolean.valueOf(skipTestsProperty).booleanValue())
{
- LOG.warn("Skipping testRefreshableTimeToLive test due to property "
+ log.warn("Skipping testRefreshableTimeToLive test due to property "
+ SKIP_TESTS_KEY + " being true.");
return;
}
else
{
- LOG.warn("Running testRefreshableTimeToLive test due to property "
+ log.warn("Running testRefreshableTimeToLive test due to property "
+ SKIP_TESTS_KEY + " being false.");
}
@@ -419,11 +461,12 @@ public class CacheTest extends BaseUnitT
// Create and add Object that expires in TEST_EXPIRETIME millis.
cacheObject = new RefreshableCachedObject<RefreshableObject>(new RefreshableObject(),
getTestExpireTime());
- assertNotNull("Failed to create a cachable object", cacheObject);
+ assertNotNull(cacheObject, "Failed to create a cachable object");
cacheObject.setTTL(getTestExpireTime());
// Verify TimeToLive was set
- assertEquals("Returned TimeToLive", getTestExpireTime(), cacheObject
- .getTTL());
+ assertEquals(getTestExpireTime(), cacheObject
+ .getTTL(),
+ "Returned TimeToLive");
// Add object to Cache
this.globalCache.addObject(cacheKey, cacheObject);
long addTime = System.currentTimeMillis();
@@ -431,9 +474,10 @@ public class CacheTest extends BaseUnitT
try
{
retrievedObject = this.globalCache.getObject(cacheKey);
- assertNotNull("Did not retrieve a cached object", retrievedObject);
- assertEquals("Did not retrieve correct cached object",
- cacheObject, retrievedObject);
+ assertNotNull(retrievedObject, "Did not retrieve a cached object");
+ assertEquals(
+ cacheObject, retrievedObject,
+ "Did not retrieve correct cached object");
}
catch (ObjectExpiredException e)
{
@@ -448,10 +492,11 @@ public class CacheTest extends BaseUnitT
{
retrievedObject = null;
retrievedObject = this.globalCache.getObject(cacheKey);
- assertNotNull("Did not retrieve a cached object, after sleep",
- retrievedObject);
- assertNotNull("Cached object has no contents, after sleep.",
- ((RefreshableCachedObject<?>) retrievedObject).getContents());
+ assertNotNull(retrievedObject,
+ "Did not retrieve a cached object, after sleep");
+ assertNotNull(
+ ((RefreshableCachedObject<?>) retrievedObject).getContents(),
+ "Cached object has no contents, after sleep.");
/*
* @todo this is not working for some reason
*
@@ -462,10 +507,9 @@ public class CacheTest extends BaseUnitT
}
catch (ObjectExpiredException e)
{
- assertTrue("Received unexpected ObjectExpiredException exception "
+ assertTrue(false, "Received unexpected ObjectExpiredException exception "
+ "when retrieving refreshable object after ( "
- + (System.currentTimeMillis() - addTime) + " millis)",
- false);
+ + (System.currentTimeMillis() - addTime) + " millis)");
}
// Wait long enough to allow object to expire and exceed TTL
Thread.sleep(getTestExpireTime() + 5000);
@@ -474,15 +518,16 @@ public class CacheTest extends BaseUnitT
{
retrievedObject = null;
retrievedObject = this.globalCache.getObject(cacheKey);
- assertNull("Retrieved a cached object, after exceeding TimeToLive",
- retrievedObject);
+ assertNull(retrievedObject, "Retrieved a cached object, after exceeding TimeToLive"
+ );
}
catch (ObjectExpiredException e)
{
- assertNull(
- "Retrieved the expired cached object, but caught expected ObjectExpiredException exception",
- retrievedObject);
+ assertNull(retrievedObject,
+ "Retrieved the expired cached object, but caught expected ObjectExpiredException exception");
}
+ // Remove objects
+ this.globalCache.removeObject(cacheKey);
}
/**
@@ -490,19 +535,22 @@ public class CacheTest extends BaseUnitT
*
* @return
*/
+ @Test
public void testCacheGetKeyList()
{
this.globalCache.flushCache();
this.globalCache.addObject("date1", new CachedObject<Date>(new Date()));
this.globalCache.addObject("date2", new CachedObject<Date>(new Date()));
this.globalCache.addObject("date3", new CachedObject<Date>(new Date()));
- assertTrue("Did not get key list back.",
- (this.globalCache.getKeys() != null));
+ assertTrue(
+ (this.globalCache.getKeys() != null),
+ "Did not get key list back.");
List<String> keys = this.globalCache.getKeys();
for (String key : keys)
{
- assertTrue("Key was not an instance of String.",
- (key instanceof String));
+ assertTrue(
+ (key instanceof String),
+ "Key was not an instance of String.");
}
}
@@ -512,20 +560,23 @@ public class CacheTest extends BaseUnitT
*
* @return
*/
+ @Test
public void testCacheGetCachedObjects()
{
this.globalCache.flushCache();
this.globalCache.addObject("date1", new CachedObject<Date>(new Date()));
this.globalCache.addObject("date2", new CachedObject<Date>(new Date()));
this.globalCache.addObject("date3", new CachedObject<Date>(new Date()));
- assertTrue("Did not get object list back.", (this.globalCache
- .getCachedObjects() != null));
+ assertTrue((this.globalCache
+ .getCachedObjects() != null),
+ "Did not get object list back.");
List<CachedObject<?>> objects = this.globalCache.getCachedObjects();
for (CachedObject<?> obj : objects)
{
- assertNotNull("Object was null.", obj);
- assertTrue("Object was not an instance of CachedObject",
- (obj instanceof CachedObject));
+ assertNotNull(obj, "Object was null.");
+ assertTrue(
+ (obj instanceof CachedObject),
+ "Object was not an instance of CachedObject");
}
}
@@ -537,14 +588,16 @@ public class CacheTest extends BaseUnitT
*
* @return
*/
+ @Test
public void testCacheModification()
{
this.globalCache.flushCache();
this.globalCache.addObject("date1", new CachedObject<Date>(new Date()));
this.globalCache.addObject("date2", new CachedObject<Date>(new Date()));
this.globalCache.addObject("date3", new CachedObject<Date>(new Date()));
- assertTrue("Did not get key list back.",
- (this.globalCache.getKeys() != null));
+ assertTrue(
+ (this.globalCache.getKeys() != null),
+ "Did not get key list back.");
List<String> keys = this.globalCache.getKeys();
try
{
Propchange: turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/CacheTest.java
------------------------------------------------------------------------------
--- svn:keywords (original)
+++ svn:keywords Tue Mar 23 12:19:49 2021
@@ -1 +1 @@
-Author Date Id Revision
+Id
Modified: turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/EHCacheTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/EHCacheTest.java?rev=1887960&r1=1887959&r2=1887960&view=diff
==============================================================================
--- turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/EHCacheTest.java (original)
+++ turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/EHCacheTest.java Tue Mar 23 12:19:49 2021
@@ -24,20 +24,10 @@ package org.apache.fulcrum.cache;
* EHCacheTest
*
* @author <a href="tv@apache.org">Thomas Vandahl</a>
- * @version $Id:$
+ * @version $Id$
*/
public class EHCacheTest extends CacheTest
{
- /**
- * Defines the testcase name for JUnit.
- *
- * @param name
- * the testcase's name.
- */
- public EHCacheTest(String name)
- {
- super(name);
- }
/**
* @see org.apache.fulcrum.cache.CacheTest#getCacheRoleName()
Propchange: turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/EHCacheTest.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/JCSCacheTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/JCSCacheTest.java?rev=1887960&r1=1887959&r2=1887960&view=diff
==============================================================================
--- turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/JCSCacheTest.java (original)
+++ turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/JCSCacheTest.java Tue Mar 23 12:19:49 2021
@@ -25,22 +25,11 @@ package org.apache.fulcrum.cache;
* JCSCacheTest
*
* @author <a href="tv@apache.org">Thomas Vandahl</a>
- * @version $Id:$
+ * @version $Id$
*/
public class JCSCacheTest extends CacheTest
{
/**
- * Defines the testcase name for JUnit.
- *
- * @param name
- * the testcase's name.
- */
- public JCSCacheTest(String name)
- {
- super(name);
- }
-
- /**
* @see org.apache.fulcrum.cache.CacheTest#getCacheRoleName()
*/
protected String getCacheRoleName()
Propchange: turbine/fulcrum/trunk/cache/src/test/org/apache/fulcrum/cache/JCSCacheTest.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: turbine/fulcrum/trunk/cache/src/test/simplelogger.properties
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/cache/src/test/simplelogger.properties?rev=1887960&view=auto
==============================================================================
--- turbine/fulcrum/trunk/cache/src/test/simplelogger.properties (added)
+++ turbine/fulcrum/trunk/cache/src/test/simplelogger.properties Tue Mar 23 12:19:49 2021
@@ -0,0 +1,37 @@
+# SLF4J's SimpleLogger configuration file
+# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err.
+
+org.slf4j.simpleLogger.logFile=target/ehcache.log
+#System.out
+
+# Default logging detail level for all instances of SimpleLogger.
+# Must be one of ("trace", "debug", "info", "warn", or "error").
+# If not specified, defaults to "info".
+org.slf4j.simpleLogger.defaultLogLevel=debug
+
+# Logging detail level for a SimpleLogger instance named "xxxxx".
+# Must be one of ("trace", "debug", "info", "warn", or "error").
+# If not specified, the default logging detail level is used.
+#org.slf4j.simpleLogger.log.xxxxx=
+
+# Set to true if you want the current date and time to be included in output messages.
+# Default is false, and will output the number of milliseconds elapsed since startup.
+org.slf4j.simpleLogger.showDateTime=true
+
+# The date and time format to be used in the output messages.
+# The pattern describing the date and time format is the same that is used in java.text.SimpleDateFormat.
+# If the format is not specified or is invalid, the default format is used.
+# The default format is yyyy-MM-dd HH:mm:ss:SSS Z.
+org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z
+
+# Set to true if you want to output the current thread name.
+# Defaults to true.
+#org.slf4j.simpleLogger.showThreadName=true
+
+# Set to true if you want the Logger instance name to be included in output messages.
+# Defaults to true.
+org.slf4j.simpleLogger.showLogName=true
+
+# Set to true if you want the last component of the name to be included in output messages.
+# Defaults to false.
+#org.slf4j.simpleLogger.showShortLogName=false
\ No newline at end of file
Modified: turbine/fulcrum/trunk/cache/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/cache/xdocs/changes.xml?rev=1887960&r1=1887959&r2=1887960&view=diff
==============================================================================
--- turbine/fulcrum/trunk/cache/xdocs/changes.xml (original)
+++ turbine/fulcrum/trunk/cache/xdocs/changes.xml Tue Mar 23 12:19:49 2021
@@ -24,6 +24,18 @@
</properties>
<body>
+ <release version="1.1.1" date="in subversion">
+ <action type="update" dev="gk">
+ Updated JCSCacheService to jcs3, as such Java 8 is required.
+ Fix cache object mapping to maxlife in seconds from expiry milliseconds.
+ </action>
+ <action type="update" dev="gk">
+ Fixed bug in CachedObject expires assignment
+ </action>
+ <action type="update" dev="gk">
+ Test updated to Junit 5
+ </action>
+ </release>
<release version="1.1.0" date="2010-03-31">
<action type="update" dev="tv">
Refactored all implementations to be in the impl-package.
Modified: turbine/fulcrum/trunk/cache/xdocs/index.xml
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/cache/xdocs/index.xml?rev=1887960&r1=1887959&r2=1887960&view=diff
==============================================================================
--- turbine/fulcrum/trunk/cache/xdocs/index.xml (original)
+++ turbine/fulcrum/trunk/cache/xdocs/index.xml Tue Mar 23 12:19:49 2021
@@ -24,6 +24,7 @@
<title>Cache Component</title>
<author email="epugh@upstate.com">Eric Pugh</author>
<author email="tv@apache.org">Thomas Vandahl</author>
+ <author email="gk@apache.org">Georg Kallidis</author>
</properties>
<body>
@@ -45,7 +46,7 @@
<li>GlobalCacheService,</li>
<li>EHCacheService (built on the EHCache project from
<a href="http://ehcache.sourceforge.net/">ehcache.sourceforge.net</a>) and</li>
- <li>JCSCacheService (built on the <a href="http://jakarta.apache.org/jcs/">Java Caching System</a>,
+ <li>JCSCacheService (built on the <a href="http://commons.apache.org/proper/commons-jcs/">Java Caching System</a>,
which was originally a part of Turbine)</li>
</ul>
</p>
@@ -148,8 +149,8 @@
</td>
</tr>
</table>
- <p>
- See <a href="http://jakarta.apache.org/jcs/">the JCS site</a> for more
+ <p>z
+ See <a href="http://commons.apache.org/proper/commons-jcs/">the JCS site</a> for more
information about configuring JCS.
</p>
</subsection>