This is an automated email from the ASF dual-hosted git repository.

tv pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-jcs.git

commit 4ce038a85d7a548bf9faabd188a54902f9661118
Author: Thomas Vandahl <[email protected]>
AuthorDate: Thu Mar 19 09:02:21 2026 +0100

    Change type of ElementAttributes.MaxLife and MaxIdleTime to Duration
---
 .../commons/jcs4/admin/CacheElementInfo.java       |  6 ++++--
 .../jcs4/auxiliary/disk/jdbc/JDBCDiskCache.java    | 19 ++++++++--------
 .../commons/jcs4/engine/ElementAttributes.java     | 25 +++++++---------------
 .../jcs4/engine/behavior/IElementAttributes.java   | 12 +++--------
 .../jcs4/engine/control/CompositeCache.java        | 10 ++++-----
 commons-jcs4-core/src/test/conf/cache.ccf          |  4 ++--
 commons-jcs4-core/src/test/conf/remote.cache.ccf   |  4 ++--
 .../commons/jcs4/access/CacheAccessUnitTest.java   |  8 +++----
 .../remote/RemoteCacheListenerUnitTest.java        |  8 +++++--
 .../commons/jcs4/engine/TestElementAttributes.java | 10 ++++-----
 .../control/event/SimpleEventHandlingUnitTest.java |  4 ++--
 .../memory/shrinking/ShrinkerThreadUnitTest.java   | 19 ++++++++++------
 .../SerializationConversionUtilUnitTest.java       | 10 ++++++---
 .../src/test/test-conf/TestHSQLDiskCache.ccf       |  4 ++--
 .../test/test-conf/TestHSQLDiskCacheConcurrent.ccf |  4 ++--
 .../src/test/test-conf/TestJDBCDiskCache.ccf       |  4 ++--
 .../test/test-conf/TestJDBCDiskCacheRemoval.ccf    |  4 ++--
 .../test/test-conf/TestJDBCDiskCacheSharedPool.ccf |  4 ++--
 .../src/test/test-conf/TestJDBCDiskCacheShrink.ccf | 10 ++++-----
 .../src/test/test-conf/TestMRUCache.ccf            |  4 ++--
 .../src/test/test-conf/TestMySQLDiskCache.ccf      |  4 ++--
 .../src/test/test-conf/TestRemoteClient.ccf        |  4 ++--
 .../src/test/test-conf/TestRemoteHttpCache.ccf     |  4 ++--
 .../src/test/test-conf/TestRemoteServer.ccf        |  4 ++--
 .../src/test/test-conf/TestSimpleEventHandling.ccf |  6 +++---
 .../src/test/test-conf/TestSoftReferenceCache.ccf  |  4 ++--
 .../src/test/test-conf/TestZeroSizeCache.ccf       |  4 ++--
 .../org/apache/commons/jcs4/jcache/JCSCache.java   | 18 +++++++---------
 .../commons/jcs4/jcache/JCSCachingManager.java     |  4 ++--
 src/site/xdoc/ElementAttributes.xml                | 20 ++++++++---------
 src/site/xdoc/IndexedDiskAuxCache.xml              |  4 ++--
 src/site/xdoc/JDBCDiskCache.xml                    | 14 ++++++------
 src/site/xdoc/RegionProperties.xml                 |  4 ++--
 src/site/xdoc/UsingJCSBasicWeb.xml                 |  8 +++----
 src/site/xdoc/getting_started/intro.xml            |  4 ++--
 35 files changed, 137 insertions(+), 142 deletions(-)

diff --git 
a/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/admin/CacheElementInfo.java
 
b/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/admin/CacheElementInfo.java
index f88d1adf..d31274dd 100644
--- 
a/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/admin/CacheElementInfo.java
+++ 
b/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/admin/CacheElementInfo.java
@@ -1,5 +1,7 @@
 package org.apache.commons.jcs4.admin;
 
+import java.time.Duration;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -33,7 +35,7 @@ public record CacheElementInfo(
     String createTime,
 
     /** Max life */
-    long maxLifeSeconds,
+    Duration maxLife,
 
     /** When it will expire */
     long expiresInSeconds
@@ -50,7 +52,7 @@ public record CacheElementInfo(
         buf.append( "\n Key [" ).append( key() ).append( "]" );
         buf.append( "\n Eternal [" ).append( eternal() ).append( "]" );
         buf.append( "\n CreateTime [" ).append( createTime() ).append( "]" );
-        buf.append( "\n MaxLifeSeconds [" ).append( maxLifeSeconds() ).append( 
"]" );
+        buf.append( "\n MaxLifeSeconds [" ).append( maxLife() ).append( "]" );
         buf.append( "\n ExpiresInSeconds [" ).append( expiresInSeconds() 
).append( "]" );
 
         return buf.toString();
diff --git 
a/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/auxiliary/disk/jdbc/JDBCDiskCache.java
 
b/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/auxiliary/disk/jdbc/JDBCDiskCache.java
index 1d3a07af..6088c4ca 100644
--- 
a/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/auxiliary/disk/jdbc/JDBCDiskCache.java
+++ 
b/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/auxiliary/disk/jdbc/JDBCDiskCache.java
@@ -25,6 +25,7 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Timestamp;
+import java.time.Instant;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -427,17 +428,17 @@ public class JDBCDiskCache<K, V>
             psInsert.setString( 1, ce.key().toString() );
             psInsert.setString( 2, getCacheName() );
             psInsert.setBytes( 3, element );
-            psInsert.setLong( 4, ce.elementAttributes().MaxLife() );
+            psInsert.setLong( 4, ce.elementAttributes().MaxLife().toSeconds() 
);
             psInsert.setString( 5, ce.elementAttributes().IsEternal() ? "T" : 
"F" );
 
             final Timestamp createTime = 
Timestamp.from(ce.elementAttributes().createTime());
             psInsert.setTimestamp( 6, createTime );
 
-            final long now = System.currentTimeMillis() / 1000;
-            psInsert.setLong( 7, now );
+            final Instant now = Instant.now();
+            psInsert.setLong( 7, now.getEpochSecond() );
 
-            final long expireTime = now + ce.elementAttributes().MaxLife();
-            psInsert.setLong( 8, expireTime );
+            final Instant expireTime = 
now.plus(ce.elementAttributes().MaxLife());
+            psInsert.setLong( 8, expireTime.getEpochSecond() );
 
             psInsert.execute();
         }
@@ -480,11 +481,11 @@ public class JDBCDiskCache<K, V>
             final Timestamp createTime = 
Timestamp.from(ce.elementAttributes().createTime());
             psUpdate.setTimestamp( 2, createTime );
 
-            final long now = System.currentTimeMillis() / 1000;
-            psUpdate.setLong( 3, now );
+            final Instant now = Instant.now();
+            psUpdate.setLong( 3, now.getEpochSecond() );
 
-            final long expireTime = now + ce.elementAttributes().MaxLife();
-            psUpdate.setLong( 4, expireTime );
+            final Instant expireTime = 
now.plus(ce.elementAttributes().MaxLife());
+            psUpdate.setLong( 4, expireTime.getEpochSecond() );
 
             psUpdate.setString( 5, (String) ce.key() );
             psUpdate.setString( 6, getCacheName() );
diff --git 
a/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/engine/ElementAttributes.java
 
b/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/engine/ElementAttributes.java
index ae4f8b82..7fa28d89 100644
--- 
a/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/engine/ElementAttributes.java
+++ 
b/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/engine/ElementAttributes.java
@@ -56,13 +56,13 @@ public record ElementAttributes(
         boolean IsEternal,
 
         /** Max life  */
-        long MaxLife,
+        Duration MaxLife,
 
         /**
          * The maximum time an entry can be idle. Setting this to -1 causes 
the idle time check to be
          * ignored.
          */
-        long MaxIdleTime,
+        Duration MaxIdleTime,
 
         /** The creation time. This is used to enforce the max life. */
         Instant createTime,
@@ -70,9 +70,6 @@ public record ElementAttributes(
         /** The last access time. This is used to enforce the max idle time. */
         LastAccessHolder mutableLastAccessTime,
 
-        /** The time factor to convert durations to milliseconds */
-        long timeFactorForMilliseconds,
-
         /**
          * The list of Event handlers to use. This is transient, since the 
event handlers cannot usually
          * be serialized. This means that you cannot attach a post 
serialization event to an item.
@@ -109,11 +106,9 @@ public record ElementAttributes(
     /** Default */
     private static final boolean DEFAULT_IS_ETERNAL = true;
     /** Default */
-    private static final long DEFAULT_MAX_LIFE = -1;
-    /** Default */
-    private static final long DEFAULT_MAX_IDLE_TIME = -1;
+    private static final Duration DEFAULT_MAX_LIFE = Duration.ofMillis(-1);
     /** Default */
-    private static final long DEFAULT_TIME_FACTOR = 1000;
+    private static final Duration DEFAULT_MAX_IDLE_TIME = 
Duration.ofMillis(-1);
 
     /** Record with all defaults set */
     private static final ElementAttributes DEFAULT = new ElementAttributes(
@@ -125,7 +120,6 @@ public record ElementAttributes(
             DEFAULT_MAX_IDLE_TIME,
             Instant.EPOCH,
             new LastAccessHolder(Instant.EPOCH),
-            DEFAULT_TIME_FACTOR,
             new ArrayList<>());
 
     /**
@@ -158,7 +152,6 @@ public record ElementAttributes(
              from.MaxIdleTime(),
              Instant.now(),
              new LastAccessHolder(from.lastAccessTime()),
-             from.timeFactorForMilliseconds(),
              new ArrayList<>(from.elementEventHandlers()));
     }
 
@@ -170,14 +163,12 @@ public record ElementAttributes(
             boolean isLateral,
             boolean isRemote,
             boolean isEternal,
-            long maxLife,
-            long maxIdleTime,
-            long timeFactorForMilliseconds
+            Duration maxLife,
+            Duration maxIdleTime
           )
     {
         this(isSpool, isLateral, isRemote, isEternal, maxLife, maxIdleTime,
-                Instant.now(), new LastAccessHolder(Instant.EPOCH), 
timeFactorForMilliseconds,
-                new ArrayList<>());
+                Instant.now(), new LastAccessHolder(Instant.EPOCH), new 
ArrayList<>());
 
         this.mutableLastAccessTime.lastAccessTime = createTime();
     }
@@ -227,7 +218,7 @@ public record ElementAttributes(
     public Duration getTimeToLive()
     {
         final Instant now = Instant.now();
-        return Duration.between(now, createTime().plusMillis(MaxLife() * 
timeFactorForMilliseconds()));
+        return Duration.between(now, createTime().plus(MaxLife()));
     }
 
     /**
diff --git 
a/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/engine/behavior/IElementAttributes.java
 
b/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/engine/behavior/IElementAttributes.java
index 43ffeee9..53a98bcd 100644
--- 
a/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/engine/behavior/IElementAttributes.java
+++ 
b/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/engine/behavior/IElementAttributes.java
@@ -64,7 +64,7 @@ public interface IElementAttributes extends Serializable
      * Gets the idleTime attribute of the IAttributes object
      * @return The idleTime value
      */
-    long MaxIdleTime();
+    Duration MaxIdleTime();
 
     /**
      * This turns off expiration if it is true.
@@ -104,20 +104,14 @@ public interface IElementAttributes extends Serializable
     Instant lastAccessTime();
 
     /**
-     * Sets the MaxLife attribute of the IAttributes object. How many seconds 
it can live after
+     * Sets the MaxLife attribute of the IAttributes object. How long it can 
live after
      * creation.
      * <p>
      * If this is exceeded the element will not be returned, instead it will 
be removed. It will be
      * removed on retrieval, or removed actively if the memory shrinker is 
turned on.
      * @return The MaxLife value
      */
-    long MaxLife();
-
-    /**
-     * Get the time factor to convert durations to milliseconds
-     * @return The time factor to convert durations to milliseconds
-     */
-    long timeFactorForMilliseconds();
+    Duration MaxLife();
 
     /**
      * Sets the LastAccessTime as now of the IElementAttributes object
diff --git 
a/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/engine/control/CompositeCache.java
 
b/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/engine/control/CompositeCache.java
index 2d419f33..9e776c3a 100644
--- 
a/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/engine/control/CompositeCache.java
+++ 
b/commons-jcs4-core/src/main/java/org/apache/commons/jcs4/engine/control/CompositeCache.java
@@ -20,6 +20,7 @@ package org.apache.commons.jcs4.engine.control;
  */
 
 import java.io.IOException;
+import java.time.Duration;
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -998,25 +999,24 @@ public class CompositeCache<K, V>
             if (!attributes.IsEternal())
             {
                 // Remove if maxLife exceeded
-                final long maxLife = attributes.MaxLife();
+                final Duration maxLife = attributes.MaxLife();
                 final Instant createTime = attributes.createTime();
-                final long timeFactorForMilliseconds = 
attributes.timeFactorForMilliseconds();
 
-                if (maxLife != -1 && 
timestamp.isAfter(createTime.plusMillis(maxLife * timeFactorForMilliseconds)))
+                if (!maxLife.isNegative() && 
timestamp.isAfter(createTime.plus(maxLife)))
                 {
                     log.debug("Exceeded maxLife: {0}", element::key);
 
                     handleElementEvent(element, eventMaxlife);
                     return true;
                 }
-                final long idleTime = attributes.MaxIdleTime();
+                final Duration idleTime = attributes.MaxIdleTime();
                 final Instant lastAccessTime = attributes.lastAccessTime();
 
                 // Remove if maxIdleTime exceeded
                 // If you have a 0 size memory cache, then the last access will
                 // not get updated.
                 // you will need to set the idle time to -1.
-                if (idleTime != -1 && 
timestamp.isAfter(lastAccessTime.plusMillis(idleTime * 
timeFactorForMilliseconds)))
+                if (!idleTime.isNegative() && 
timestamp.isAfter(lastAccessTime.plus(idleTime)))
                 {
                     log.debug("Exceeded maxIdle: {0}", element::key);
 
diff --git a/commons-jcs4-core/src/test/conf/cache.ccf 
b/commons-jcs4-core/src/test/conf/cache.ccf
index db7bf102..e5b05e2e 100644
--- a/commons-jcs4-core/src/test/conf/cache.ccf
+++ b/commons-jcs4-core/src/test/conf/cache.ccf
@@ -23,8 +23,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=true
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 jcs.default.elementattributes.IsSpool=true
 jcs.default.elementattributes.IsRemote=true
 jcs.default.elementattributes.IsLateral=true
diff --git a/commons-jcs4-core/src/test/conf/remote.cache.ccf 
b/commons-jcs4-core/src/test/conf/remote.cache.ccf
index cd10bde6..8f40b2b9 100644
--- a/commons-jcs4-core/src/test/conf/remote.cache.ccf
+++ b/commons-jcs4-core/src/test/conf/remote.cache.ccf
@@ -33,8 +33,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=true
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=7000
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT1h56m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 jcs.default.elementattributes.IsSpool=true
 jcs.default.elementattributes.IsRemote=true
 jcs.default.elementattributes.IsLateral=true
diff --git 
a/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/access/CacheAccessUnitTest.java
 
b/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/access/CacheAccessUnitTest.java
index 8539e6fb..dd0f4bc1 100644
--- 
a/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/access/CacheAccessUnitTest.java
+++ 
b/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/access/CacheAccessUnitTest.java
@@ -114,7 +114,7 @@ class CacheAccessUnitTest
         final CompositeCacheAttributes cattr = TestCompositeCacheAttributes
                 .withMemoryCacheNameAndMaxObjects(memoryCacheClassName, 
maxMemorySize);
 
-        final long maxLife = 9876;
+        final Duration maxLife = Duration.ofSeconds(9876);
         final ElementAttributes attr = 
TestElementAttributes.withEternalFalseAndMaxLife(maxLife);
 
         final CacheAccess<String, Integer> access = JCS.getInstance( 
"testGetMatching_Normal", cattr, attr );
@@ -167,7 +167,7 @@ class CacheAccessUnitTest
         final CompositeCacheAttributes cattr = TestCompositeCacheAttributes
                 .withMemoryCacheNameAndMaxObjects(memoryCacheClassName, 
maxMemorySize);
 
-        final long maxLife = 9876;
+        final Duration maxLife = Duration.ofSeconds(9876);
         final ElementAttributes attr = 
TestElementAttributes.withEternalFalseAndMaxLife(maxLife);
 
         final CacheAccess<String, Integer> access = JCS.getInstance( 
"testGetMatching_Normal", cattr, attr );
@@ -331,7 +331,7 @@ class CacheAccessUnitTest
         final CompositeCacheAttributes ca = TestCompositeCacheAttributes
                 .withMaxMemoryIdleTime(maxIdleTime);
 
-        final long maxLife = 9876;
+        final Duration maxLife = Duration.ofSeconds(9876);
         final ElementAttributes attr = 
TestElementAttributes.withEternalFalseAndMaxLife(maxLife);
 
         final CacheAccess<String, String> access = JCS.getInstance( 
"testRegionDefinitonWithAttributes", ca, attr );
@@ -352,7 +352,7 @@ class CacheAccessUnitTest
         final CacheAccess<String, String> access = JCS.getInstance( "test" );
         assertNotNull( access, "We should have an access class" );
 
-        final long maxLife = 9876;
+        final Duration maxLife = Duration.ofSeconds(9876);
         final ElementAttributes attr = 
TestElementAttributes.withEternalFalseAndMaxLife(maxLife);
 
         access.setDefaultElementAttributes( attr );
diff --git 
a/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/auxiliary/remote/RemoteCacheListenerUnitTest.java
 
b/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/auxiliary/remote/RemoteCacheListenerUnitTest.java
index 16c700b9..a123a8f7 100644
--- 
a/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/auxiliary/remote/RemoteCacheListenerUnitTest.java
+++ 
b/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/auxiliary/remote/RemoteCacheListenerUnitTest.java
@@ -23,6 +23,8 @@ 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 java.time.Duration;
+
 import org.apache.commons.jcs4.engine.CacheElementSerialized;
 import org.apache.commons.jcs4.engine.ElementAttributes;
 import org.apache.commons.jcs4.engine.TestElementAttributes;
@@ -60,7 +62,8 @@ class RemoteCacheListenerUnitTest
         final String cacheName = "testName";
         final String key = "key";
         final String value = "value fdsadf dsafdsa fdsaf dsafdsaf dsafdsaf 
dsaf dsaf dsaf dsafa dsaf dsaf dsafdsaf";
-        final ElementAttributes attr = 
TestElementAttributes.withEternalFalseAndMaxLife(34);
+        final ElementAttributes attr = TestElementAttributes
+                .withEternalFalseAndMaxLife(Duration.ofSeconds(34));
 
         final IElementSerializer elementSerializer = new StandardSerializer();
 
@@ -103,7 +106,8 @@ class RemoteCacheListenerUnitTest
         final String cacheName = "testName";
         final String key = "key";
         final String value = "value fdsadf dsafdsa fdsaf dsafdsaf dsafdsaf 
dsaf dsaf dsaf dsafa dsaf dsaf dsafdsaf";
-        final ElementAttributes attr = 
TestElementAttributes.withEternalFalseAndMaxLife(34);
+        final ElementAttributes attr = TestElementAttributes
+                .withEternalFalseAndMaxLife(Duration.ofSeconds(34));
 
         final IElementSerializer elementSerializer = new StandardSerializer();
 
diff --git 
a/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/engine/TestElementAttributes.java
 
b/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/engine/TestElementAttributes.java
index 37e5bf39..350ba03a 100644
--- 
a/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/engine/TestElementAttributes.java
+++ 
b/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/engine/TestElementAttributes.java
@@ -1,7 +1,5 @@
 package org.apache.commons.jcs4.engine;
 
-import java.time.Instant;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -21,6 +19,8 @@ import java.time.Instant;
  * under the License.
  */
 
+import java.time.Duration;
+import java.time.Instant;
 import java.util.ArrayList;
 
 import org.apache.commons.jcs4.engine.ElementAttributes.LastAccessHolder;
@@ -35,7 +35,7 @@ public class TestElementAttributes
      *
      * @param maxLife The new MaxLife value
      */
-    public static ElementAttributes withEternalFalseAndMaxLife(long maxLife)
+    public static ElementAttributes withEternalFalseAndMaxLife(Duration 
maxLife)
     {
         ElementAttributes element = new ElementAttributes(
                 ElementAttributes.defaults().IsSpool(),
@@ -46,7 +46,6 @@ public class TestElementAttributes
                 ElementAttributes.defaults().MaxIdleTime(),
                 Instant.now(),
                 new LastAccessHolder(Instant.EPOCH),
-                ElementAttributes.defaults().timeFactorForMilliseconds(),
                 new ArrayList<>());
 
         element.mutableLastAccessTime().lastAccessTime = element.createTime();
@@ -59,7 +58,7 @@ public class TestElementAttributes
      * @param maxLife The new MaxLife value
      * @param maxIdleTime The new MaxIdleTime value
      */
-    public static ElementAttributes 
withEternalFalseAndMaxLifeAndMaxIdleTime(long maxLife, long maxIdleTime)
+    public static ElementAttributes 
withEternalFalseAndMaxLifeAndMaxIdleTime(Duration maxLife, Duration maxIdleTime)
     {
         ElementAttributes element = new ElementAttributes(
                 ElementAttributes.defaults().IsSpool(),
@@ -70,7 +69,6 @@ public class TestElementAttributes
                 maxIdleTime,
                 Instant.now(),
                 new LastAccessHolder(Instant.EPOCH),
-                ElementAttributes.defaults().timeFactorForMilliseconds(),
                 new ArrayList<>());
 
         element.mutableLastAccessTime().lastAccessTime = element.createTime();
diff --git 
a/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/engine/control/event/SimpleEventHandlingUnitTest.java
 
b/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/engine/control/event/SimpleEventHandlingUnitTest.java
index b3fe61e5..46556fa5 100644
--- 
a/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/engine/control/event/SimpleEventHandlingUnitTest.java
+++ 
b/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/engine/control/event/SimpleEventHandlingUnitTest.java
@@ -206,7 +206,7 @@ class SimpleEventHandlingUnitTest
         }
 
         // wait a bit for the items to expire
-        Thread.sleep(attributes.MaxIdleTime() * 1000 + 100);
+        Thread.sleep(attributes.MaxIdleTime().toMillis() + 100);
 
         for ( int i = 0; i < 200; i++ )
         {
@@ -244,7 +244,7 @@ class SimpleEventHandlingUnitTest
         }
 
         // wait a bit for the items to expire
-        Thread.sleep(attributes.MaxLife() * 1000 + 100);
+        Thread.sleep(attributes.MaxLife().toMillis() + 100);
 
         for ( int i = 0; i < 200; i++ )
         {
diff --git 
a/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/engine/memory/shrinking/ShrinkerThreadUnitTest.java
 
b/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/engine/memory/shrinking/ShrinkerThreadUnitTest.java
index 3005ee46..c0a9dbe9 100644
--- 
a/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/engine/memory/shrinking/ShrinkerThreadUnitTest.java
+++ 
b/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/engine/memory/shrinking/ShrinkerThreadUnitTest.java
@@ -66,7 +66,7 @@ class ShrinkerThreadUnitTest
         final String value = "value";
 
         final ICacheElement<String, String> element = new CacheElement<>( 
"testRegion", key, value,
-                TestElementAttributes.withEternalFalseAndMaxLife(1));
+                
TestElementAttributes.withEternalFalseAndMaxLife(Duration.ofSeconds(1)));
 
         Instant now = Instant.now();
         // add two seconds
@@ -101,7 +101,8 @@ class ShrinkerThreadUnitTest
         final String value = "value";
 
         final ICacheElement<String, String> element = new CacheElement<>( 
"testRegion", key, value,
-                
TestElementAttributes.withEternalFalseAndMaxLifeAndMaxIdleTime(100, 1));
+                TestElementAttributes.withEternalFalseAndMaxLifeAndMaxIdleTime(
+                        Duration.ofSeconds(100), Duration.ofSeconds(1)));
 
         Instant now = Instant.now();
         // add two seconds
@@ -136,7 +137,7 @@ class ShrinkerThreadUnitTest
         final String value = "value";
 
         final ICacheElement<String, String> element = new CacheElement<>( 
"testRegion", key, value,
-                TestElementAttributes.withEternalFalseAndMaxLife(1));
+                
TestElementAttributes.withEternalFalseAndMaxLife(Duration.ofSeconds(1)));
 
         Instant now = Instant.now();
         // subtract two seconds
@@ -171,7 +172,8 @@ class ShrinkerThreadUnitTest
         final String value = "value";
 
         final ICacheElement<String, String> element = new CacheElement<>( 
"testRegion", key, value,
-                
TestElementAttributes.withEternalFalseAndMaxLifeAndMaxIdleTime(100, 1));
+                TestElementAttributes.withEternalFalseAndMaxLifeAndMaxIdleTime(
+                        Duration.ofSeconds(100), Duration.ofSeconds(1)));
 
         Instant now = Instant.now();
         // subtract two seconds
@@ -209,7 +211,8 @@ class ShrinkerThreadUnitTest
         final String key = "key";
         final String value = "value";
 
-        final ElementAttributes elementAttr = 
TestElementAttributes.withEternalFalseAndMaxLife(1);
+        final ElementAttributes elementAttr = TestElementAttributes
+                .withEternalFalseAndMaxLife(Duration.ofSeconds(1));
         final ICacheElement<String, String> element = new 
CacheElement<>("testRegion",
                 key, value, elementAttr);
         memory.update( element );
@@ -256,7 +259,8 @@ class ShrinkerThreadUnitTest
             final String key = "key" + i;
             final String value = "value";
 
-            final ElementAttributes elementAttr = 
TestElementAttributes.withEternalFalseAndMaxLife(1);
+            final ElementAttributes elementAttr = TestElementAttributes
+                    .withEternalFalseAndMaxLife(Duration.ofSeconds(1));
             final ICacheElement<String, String> element = new CacheElement<>( 
"testRegion",
                     key, value, elementAttr);
             memory.update( element );
@@ -306,7 +310,8 @@ class ShrinkerThreadUnitTest
             final String key = "key" + i;
             final String value = "value";
 
-            final ElementAttributes elementAttr = 
TestElementAttributes.withEternalFalseAndMaxLife(1);
+            final ElementAttributes elementAttr = TestElementAttributes
+                    .withEternalFalseAndMaxLife(Duration.ofSeconds(1));
             final ICacheElement<String, String> element = new CacheElement<>( 
"testRegion",
                     key, value, elementAttr);
             elementAttr.addElementEventHandler( handler );
diff --git 
a/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/utils/serialization/SerializationConversionUtilUnitTest.java
 
b/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/utils/serialization/SerializationConversionUtilUnitTest.java
index 9706a59a..84070d2d 100644
--- 
a/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/utils/serialization/SerializationConversionUtilUnitTest.java
+++ 
b/commons-jcs4-core/src/test/java/org/apache/commons/jcs4/utils/serialization/SerializationConversionUtilUnitTest.java
@@ -25,6 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.IOException;
+import java.time.Duration;
 
 import org.apache.commons.jcs4.engine.CacheElement;
 import org.apache.commons.jcs4.engine.ElementAttributes;
@@ -54,7 +55,8 @@ class SerializationConversionUtilUnitTest
         final String value = "value fdsadf dsafdsa fdsaf dsafdsaf dsafdsaf 
dsaf dsaf dsaf dsafa dsaf dsaf dsafdsaf";
 
         final IElementSerializer elementSerializer = new StandardSerializer();
-        final ElementAttributes attr = 
TestElementAttributes.withEternalFalseAndMaxLife(34);
+        final ElementAttributes attr = TestElementAttributes
+                .withEternalFalseAndMaxLife(Duration.ofSeconds(34));
 
         final ICacheElement<String, String> before = new 
CacheElement<>(cacheName, key,
                 value, attr);
@@ -135,7 +137,8 @@ class SerializationConversionUtilUnitTest
         final String value = "value fdsadf dsafdsa fdsaf dsafdsaf dsafdsaf 
dsaf dsaf dsaf dsafa dsaf dsaf dsafdsaf";
 
         final IElementSerializer elementSerializer = null; // new 
StandardSerializer();
-        final ElementAttributes attr = 
TestElementAttributes.withEternalFalseAndMaxLife(34);
+        final ElementAttributes attr = TestElementAttributes
+                .withEternalFalseAndMaxLife(Duration.ofSeconds(34));
 
         final ICacheElement<String, String> before = new 
CacheElement<>(cacheName, key,
                 value, attr);
@@ -169,7 +172,8 @@ class SerializationConversionUtilUnitTest
         final String value = "value fdsadf dsafdsa fdsaf dsafdsaf dsafdsaf 
dsaf dsaf dsaf dsafa dsaf dsaf dsafdsaf";
 
         final IElementSerializer elementSerializer = new StandardSerializer();
-        final ElementAttributes attr = 
TestElementAttributes.withEternalFalseAndMaxLife(34);
+        final ElementAttributes attr = TestElementAttributes
+                .withEternalFalseAndMaxLife(Duration.ofSeconds(34));
 
         final ICacheElement<String, String> before = new 
CacheElement<>(cacheName, key,
                 value, attr);
diff --git a/commons-jcs4-core/src/test/test-conf/TestHSQLDiskCache.ccf 
b/commons-jcs4-core/src/test/test-conf/TestHSQLDiskCache.ccf
index a4b04d4b..8bc7e566 100644
--- a/commons-jcs4-core/src/test/test-conf/TestHSQLDiskCache.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestHSQLDiskCache.ccf
@@ -23,8 +23,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=false
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 
 jcs.region.noRemoveAll=HSQL_NORA
diff --git 
a/commons-jcs4-core/src/test/test-conf/TestHSQLDiskCacheConcurrent.ccf 
b/commons-jcs4-core/src/test/test-conf/TestHSQLDiskCacheConcurrent.ccf
index c0994be5..544ee1e5 100644
--- a/commons-jcs4-core/src/test/test-conf/TestHSQLDiskCacheConcurrent.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestHSQLDiskCacheConcurrent.ccf
@@ -23,8 +23,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=false
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 
 jcs.region.noRemoveAll=HSQL_NORA
diff --git a/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCache.ccf 
b/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCache.ccf
index 6abbf934..ec701a3d 100644
--- a/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCache.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCache.ccf
@@ -22,8 +22,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=false
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 # #############################################################
 # ################# AUXILIARY CACHES AVAILABLE ################
diff --git a/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCacheRemoval.ccf 
b/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCacheRemoval.ccf
index 54151af1..828904fa 100644
--- a/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCacheRemoval.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCacheRemoval.ccf
@@ -23,8 +23,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=false
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 # #############################################################
 # ################# AUXILIARY CACHES AVAILABLE ################
diff --git 
a/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCacheSharedPool.ccf 
b/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCacheSharedPool.ccf
index dbae3be2..c95ac430 100644
--- a/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCacheSharedPool.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCacheSharedPool.ccf
@@ -22,8 +22,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=false
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 # #############################################################
 # ################# CONFIGURED REGIONS ########################
diff --git a/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCacheShrink.ccf 
b/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCacheShrink.ccf
index ea64be8f..cd9dc5bc 100644
--- a/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCacheShrink.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestJDBCDiskCacheShrink.ccf
@@ -22,22 +22,22 @@ jcs.default.cacheattributes.UseMemoryShrinker=false
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 # #############################################################
 # ################# REGIONS ###################################
 jcs.region.expire1Second=JDBC
 jcs.region.expire1Second.cacheattributes.MaxObjects=0
-jcs.region.expire1Second.elementattributes.MaxLife=1
+jcs.region.expire1Second.elementattributes.MaxLife=PT1s
 
 jcs.region.expire100Second=JDBC
 jcs.region.expire100Second.cacheattributes.MaxObjects=0
-jcs.region.expire100Second.elementattributes.MaxLife=100
+jcs.region.expire100Second.elementattributes.MaxLife=PT1m40s
 
 jcs.region.eternal=JDBC
 jcs.region.eternal.cacheattributes.MaxObjects=0
-jcs.region.eternal.elementattributes.MaxLife=1
+jcs.region.eternal.elementattributes.MaxLife=PT1s
 jcs.region.eternal.elementattributes.IsEternal=true
 
 # #############################################################
diff --git a/commons-jcs4-core/src/test/test-conf/TestMRUCache.ccf 
b/commons-jcs4-core/src/test/test-conf/TestMRUCache.ccf
index 7fb0e72c..9dc30652 100644
--- a/commons-jcs4-core/src/test/test-conf/TestMRUCache.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestMRUCache.ccf
@@ -24,8 +24,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=true
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1s
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=600
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT10m
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 # Region defined that uses the MRU
 jcs.region.mruDefined=
diff --git a/commons-jcs4-core/src/test/test-conf/TestMySQLDiskCache.ccf 
b/commons-jcs4-core/src/test/test-conf/TestMySQLDiskCache.ccf
index 2ee668fb..478fec76 100644
--- a/commons-jcs4-core/src/test/test-conf/TestMySQLDiskCache.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestMySQLDiskCache.ccf
@@ -25,8 +25,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=false
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 # #############################################################
 # ################# AUXILIARY CACHES AVAILABLE ################
diff --git a/commons-jcs4-core/src/test/test-conf/TestRemoteClient.ccf 
b/commons-jcs4-core/src/test/test-conf/TestRemoteClient.ccf
index 81b344b6..54e0f78c 100644
--- a/commons-jcs4-core/src/test/test-conf/TestRemoteClient.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestRemoteClient.ccf
@@ -23,8 +23,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=true
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 
 jcs.auxiliary.RC=org.apache.commons.jcs4.auxiliary.remote.RemoteCacheFactory
diff --git a/commons-jcs4-core/src/test/test-conf/TestRemoteHttpCache.ccf 
b/commons-jcs4-core/src/test/test-conf/TestRemoteHttpCache.ccf
index 0e0ca49c..fb43c2fc 100644
--- a/commons-jcs4-core/src/test/test-conf/TestRemoteHttpCache.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestRemoteHttpCache.ccf
@@ -23,8 +23,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=true
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 
 ## The Http Remote Cache Client
diff --git a/commons-jcs4-core/src/test/test-conf/TestRemoteServer.ccf 
b/commons-jcs4-core/src/test/test-conf/TestRemoteServer.ccf
index f62ed072..66076f68 100644
--- a/commons-jcs4-core/src/test/test-conf/TestRemoteServer.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestRemoteServer.ccf
@@ -34,5 +34,5 @@ jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=7000
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT1h56m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
diff --git a/commons-jcs4-core/src/test/test-conf/TestSimpleEventHandling.ccf 
b/commons-jcs4-core/src/test/test-conf/TestSimpleEventHandling.ccf
index 61dca71b..586e553c 100644
--- a/commons-jcs4-core/src/test/test-conf/TestSimpleEventHandling.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestSimpleEventHandling.ccf
@@ -36,13 +36,13 @@ jcs.region.DiskButNotAllowed.elementattributes.IsSpool=false
 jcs.region.Maxlife=
 jcs.region.Maxlife.cacheattributes.MaxObjects=200
 jcs.region.Maxlife.elementattributes.IsEternal=false
-jcs.region.Maxlife.elementattributes.MaxLife=1
+jcs.region.Maxlife.elementattributes.MaxLife=PT1s
 
 jcs.region.Idletime=
 jcs.region.Idletime.cacheattributes.MaxObjects=200
 jcs.region.Idletime.elementattributes.IsEternal=false
-jcs.region.Idletime.elementattributes.MaxLife=300
-jcs.region.Idletime.elementattributes.MaxIdleTime=1
+jcs.region.Idletime.elementattributes.MaxLife=PT5m
+jcs.region.Idletime.elementattributes.MaxIdleTime=PT1s
 
 # #### AUXILIARY CACHES
 # Indexed Disk Cache
diff --git a/commons-jcs4-core/src/test/test-conf/TestSoftReferenceCache.ccf 
b/commons-jcs4-core/src/test/test-conf/TestSoftReferenceCache.ccf
index c493f3bc..10f67e6a 100644
--- a/commons-jcs4-core/src/test/test-conf/TestSoftReferenceCache.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestSoftReferenceCache.ccf
@@ -21,8 +21,8 @@ 
jcs.default.cacheattributes.MemoryCacheName=org.apache.commons.jcs4.engine.memor
 jcs.default.cacheattributes.UseMemoryShrinker=false
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=600
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT10m
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 # Region defined that uses the Soft Reference
 jcs.region.srDefined=
diff --git a/commons-jcs4-core/src/test/test-conf/TestZeroSizeCache.ccf 
b/commons-jcs4-core/src/test/test-conf/TestZeroSizeCache.ccf
index 3d13b088..2eb7331d 100644
--- a/commons-jcs4-core/src/test/test-conf/TestZeroSizeCache.ccf
+++ b/commons-jcs4-core/src/test/test-conf/TestZeroSizeCache.ccf
@@ -23,5 +23,5 @@ jcs.default.cacheattributes.UseMemoryShrinker=true
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1s
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=600
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT10m
+jcs.default.elementattributes.MaxIdleTime=PT30m
diff --git 
a/commons-jcs4-jcache/src/main/java/org/apache/commons/jcs4/jcache/JCSCache.java
 
b/commons-jcs4-jcache/src/main/java/org/apache/commons/jcs4/jcache/JCSCache.java
index 4fbc36da..82e1efb5 100644
--- 
a/commons-jcs4-jcache/src/main/java/org/apache/commons/jcs4/jcache/JCSCache.java
+++ 
b/commons-jcs4-jcache/src/main/java/org/apache/commons/jcs4/jcache/JCSCache.java
@@ -698,20 +698,20 @@ public class JCSCache<K, V> implements Cache<K, V>
 
             final K jcsKey = storeByValue ? copy(serializer, 
manager.getClassLoader(), key) : key;
             IElementAttributes attributes = oldElt != null ? 
oldElt.elementAttributes() : delegate.getElementAttributes();
-            if (created && duration != null) { // set maxLife
-                final long timeFactorForMilliseconds = 1;
+            if (created && duration != null)
+            { // set maxLife
                 final boolean eternal = duration.isEternal();
-                long maxIdleTime = attributes.MaxIdleTime();
-                long maxLife = attributes.MaxLife();
+                java.time.Duration maxIdleTime = attributes.MaxIdleTime();
+                java.time.Duration maxLife = attributes.MaxLife();
                 if (!eternal)
                 {
                     if (duration == expiryPolicy.getExpiryForAccess())
                     {
-                        maxIdleTime = 
duration.getTimeUnit().toMillis(duration.getDurationAmount());
+                        maxIdleTime = 
java.time.Duration.of(duration.getDurationAmount(), 
duration.getTimeUnit().toChronoUnit());
                     }
                     else
                     {
-                        maxLife = 
duration.getTimeUnit().toMillis(duration.getDurationAmount());
+                        maxLife = 
java.time.Duration.of(duration.getDurationAmount(), 
duration.getTimeUnit().toChronoUnit());
                     }
                 }
                 attributes = new ElementAttributes(
@@ -720,8 +720,7 @@ public class JCSCache<K, V> implements Cache<K, V>
                         attributes.IsRemote(),
                         eternal,
                         maxLife,
-                        maxIdleTime,
-                        timeFactorForMilliseconds);
+                        maxIdleTime);
             }
             final ICacheElement<K, V> element = updateElement(
                     jcsKey, value, created ? null : duration, attributes);
@@ -978,8 +977,7 @@ public class JCSCache<K, V> implements Cache<K, V>
                     attrs.IsRemote(),
                     duration.isEternal(),
                     attrs.MaxLife(),
-                    attrs.MaxIdleTime(),
-                    1)
+                    attrs.MaxIdleTime())
             : attrs;
 
         return new CacheElement<>(name, key, v, newAttributes);
diff --git 
a/commons-jcs4-jcache/src/main/java/org/apache/commons/jcs4/jcache/JCSCachingManager.java
 
b/commons-jcs4-jcache/src/main/java/org/apache/commons/jcs4/jcache/JCSCachingManager.java
index 317ee426..4db7e76c 100644
--- 
a/commons-jcs4-jcache/src/main/java/org/apache/commons/jcs4/jcache/JCSCachingManager.java
+++ 
b/commons-jcs4-jcache/src/main/java/org/apache/commons/jcs4/jcache/JCSCachingManager.java
@@ -83,8 +83,8 @@ public class JCSCachingManager implements CacheManager
        jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
        jcs.default.cacheattributes.ShrinkerInterval=PT1m
        jcs.default.elementattributes.IsEternal=false
-       jcs.default.elementattributes.MaxLife=700
-       jcs.default.elementattributes.MaxIdleTime=1800
+       jcs.default.elementattributes.MaxLife=PT11m40s
+       jcs.default.elementattributes.MaxIdleTime=PT30m
        jcs.default.elementattributes.IsSpool=true
        jcs.default.elementattributes.IsRemote=true
        jcs.default.elementattributes.IsLateral=true
diff --git a/src/site/xdoc/ElementAttributes.xml 
b/src/site/xdoc/ElementAttributes.xml
index 3022df10..448aa2c5 100644
--- a/src/site/xdoc/ElementAttributes.xml
+++ b/src/site/xdoc/ElementAttributes.xml
@@ -53,8 +53,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=true
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
         ]]>
                        </source>
                        <p>
@@ -110,7 +110,7 @@ jcs.default.elementattributes.MaxIdleTime=1800
                         for more information on the disk cache settings).
                     </td>
                     <td>N</td>
-                    <td>-1 (unlimited)</td>
+                    <td>PT-0.001s (unlimited)</td>
                 </tr>
                 <tr>
                     <td>MaxIdleTime</td>
@@ -119,7 +119,7 @@ jcs.default.elementattributes.MaxIdleTime=1800
                         without being accessed by setting the
                         <code>MaxIdleTime</code>
                         parameter. This is different than the
-                        <code>MaxMemoryIdleTimeSeconds</code>
+                        <code>MaxMemoryIdleTime</code>
                         parameter, which just specifies how long an object
                         can be in memory before it is subjected to removal
                         or being spooled to a disk cache if it is available.
@@ -129,7 +129,7 @@ jcs.default.elementattributes.MaxIdleTime=1800
                         retrieved from disk, if you have a memory size of 0.
                     </td>
                     <td>N</td>
-                    <td>-1 (unlimited)</td>
+                    <td>PT-0.001s (unlimited)</td>
                 </tr>
                 <tr>
                     <td>IsSpool</td>
@@ -188,9 +188,8 @@ jcs.default.elementattributes.MaxIdleTime=1800
         defaultAttributes.isLateral(), 
         defaultAttributes.isRemote(), 
         /* isEternal   */ false, 
-        /* maxLife     */ 1800, 
-        /* maxIdleTime */ 900, 
-        defaultAttributes.timeFactorForMilliseconds());
+        /* maxLife     */ Duration.ofSeconds(1800), 
+        /* maxIdleTime */ Duration.ofSeconds(900));
 
     jcs.put( "key", "data", attributes );
                        ]]>
@@ -214,9 +213,8 @@ jcs.default.elementattributes.MaxIdleTime=1800
         defaultAttributes.isLateral(), 
         defaultAttributes.isRemote(), 
         /* isEternal   */ false, 
-        /* maxLife     */ 1800, 
-        /* maxIdleTime */ 900, 
-        defaultAttributes.timeFactorForMilliseconds());
+        /* maxLife     */ Duration.ofSeconds(1800), 
+        /* maxIdleTime */ Duration.ofSeconds(900));
 
     jcs.setDefaultElementAttributes( attributes );
                        ]]>
diff --git a/src/site/xdoc/IndexedDiskAuxCache.xml 
b/src/site/xdoc/IndexedDiskAuxCache.xml
index 38996077..49aecf86 100644
--- a/src/site/xdoc/IndexedDiskAuxCache.xml
+++ b/src/site/xdoc/IndexedDiskAuxCache.xml
@@ -241,8 +241,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=false
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 ##############################################################
 ################## AUXILIARY CACHES AVAILABLE ################
diff --git a/src/site/xdoc/JDBCDiskCache.xml b/src/site/xdoc/JDBCDiskCache.xml
index c796191f..9d24961e 100644
--- a/src/site/xdoc/JDBCDiskCache.xml
+++ b/src/site/xdoc/JDBCDiskCache.xml
@@ -43,8 +43,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=true
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT2h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=14400
-jcs.default.elementattributes.MaxIdleTime=14400
+jcs.default.elementattributes.MaxLife=PT4h
+jcs.default.elementattributes.MaxIdleTime=PT4h
 
 ##############################################################
 ################## CACHE REGIONS AVAILABLE ###################
@@ -62,7 +62,7 @@ jcs.auxiliary.MYSQL.attributes.testBeforeInsert=false
 jcs.auxiliary.MYSQL.attributes.maxActive=100
 jcs.auxiliary.MYSQL.attributes.MaxPurgatorySize=10000000
 jcs.auxiliary.MYSQL.attributes.UseDiskShrinker=true
-jcs.auxiliary.MYSQL.attributes.ShrinkerInterval=1800
+jcs.auxiliary.MYSQL.attributes.ShrinkerInterval=PT30m
 jcs.auxiliary.MYSQL.attributes.allowRemoveAll=false
 jcs.auxiliary.MYSQL.attributes.EventQueueType=POOLED
 jcs.auxiliary.MYSQL.attributes.EventQueuePoolName=disk_cache_event_queue
@@ -92,8 +92,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=false
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 # #############################################################
 # ################# CONFIGURED REGIONS ########################
@@ -157,8 +157,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=false
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT11m40s
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 # #############################################################
 # ################# CONFIGURED REGIONS ########################
diff --git a/src/site/xdoc/RegionProperties.xml 
b/src/site/xdoc/RegionProperties.xml
index 8f628af2..cb3743dc 100644
--- a/src/site/xdoc/RegionProperties.xml
+++ b/src/site/xdoc/RegionProperties.xml
@@ -262,7 +262,7 @@ jcs.default.cacheattributes.UseMemoryShrinker=true
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=700
+jcs.default.elementattributes.MaxLife=PT11m40s
 
 # optional region "testCache1" specific configuration settings (only those 
that differ from default)
 jcs.region.testCache1=
@@ -270,7 +270,7 @@ jcs.region.testCache1.cacheattributes.MaxObjects=123456
 jcs.region.testCache1.cacheattributes.ShrinkerInterval=PT30s
 jcs.region.testCache1.cacheattributes.MaxMemoryIdleTime=PT5m
 jcs.region.testCache1.cacheattributes.MaxSpoolPerRun=100
-jcs.region.testCache1.elementattributes.MaxLife=60000
+jcs.region.testCache1.elementattributes.MaxLife=PT16h40m
         ]]>
                                </source>
                        </subsection>
diff --git a/src/site/xdoc/UsingJCSBasicWeb.xml 
b/src/site/xdoc/UsingJCSBasicWeb.xml
index a831b7cc..2a8fa57e 100644
--- a/src/site/xdoc/UsingJCSBasicWeb.xml
+++ b/src/site/xdoc/UsingJCSBasicWeb.xml
@@ -364,8 +364,8 @@ public class BookVObjManager
 jcs.default=DC,RFailover
 jcs.default.cacheattributes.MaxObjects=1000
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=3600
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT1h
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 
 # CACHE REGIONS AVAILABLE
@@ -374,8 +374,8 @@ jcs.default.elementattributes.MaxIdleTime=1800
 jcs.region.bookCache=DC,RFailover
 jcs.region.bookCache.cacheattributes.MaxObjects=1200
 jcs.region.bookCache.elementattributes.IsEternal=false
-jcs.region.bookCache.elementattributes.MaxLife=7200
-jcs.region.bookCache.elementattributes.MaxIdleTime=1800
+jcs.region.bookCache.elementattributes.MaxLife=PT2h
+jcs.region.bookCache.elementattributes.MaxIdleTime=PT30m
 jcs.region.bookCache.elementattributes.IsSpool=true
 jcs.region.bookCache.elementattributes.IsRemote=true
 jcs.region.bookCache.elementattributes.IsLateral=true
diff --git a/src/site/xdoc/getting_started/intro.xml 
b/src/site/xdoc/getting_started/intro.xml
index 49dfbfa4..5fb5248e 100644
--- a/src/site/xdoc/getting_started/intro.xml
+++ b/src/site/xdoc/getting_started/intro.xml
@@ -153,8 +153,8 @@ jcs.default.cacheattributes.UseMemoryShrinker=false
 jcs.default.cacheattributes.MaxMemoryIdleTime=PT1h
 jcs.default.cacheattributes.ShrinkerInterval=PT1m
 jcs.default.elementattributes.IsEternal=false
-jcs.default.elementattributes.MaxLife=21600
-jcs.default.elementattributes.MaxIdleTime=1800
+jcs.default.elementattributes.MaxLife=PT6h
+jcs.default.elementattributes.MaxIdleTime=PT30m
 
 # PRE-DEFINED CACHE REGIONS
 jcs.region.testCache1=DC

Reply via email to