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>