From 0f39408a9b67b6c478b44d052c854d93e00d1d03 Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Thu, 12 Jan 2006 17:29:56 +0000 Subject: [PATCH] . Added client config setting to allow the Shelf component to be hidden by default . Added ExpiringValueCache class used to hold simple lists in the client that don't need refreshing constantly git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2105 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/cache/ExpiringValueCache.java | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 source/java/org/alfresco/repo/cache/ExpiringValueCache.java diff --git a/source/java/org/alfresco/repo/cache/ExpiringValueCache.java b/source/java/org/alfresco/repo/cache/ExpiringValueCache.java new file mode 100644 index 0000000000..34f9be5a7f --- /dev/null +++ b/source/java/org/alfresco/repo/cache/ExpiringValueCache.java @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * 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. + */ +package org.alfresco.repo.cache; + +/** + * Simple cache of a single Object value. + *

+ * The object placed in the cache will automatically be discarded after a timeout value. + * + * @author Kevin Roast + */ +public class ExpiringValueCache +{ + // default is to discard cached object after 1 minute + private final static long TIMEOUT_DEFAULT = 1000L*60L; + + private long timeout = TIMEOUT_DEFAULT; + private long snapshot = 0; + private T value; + + /** + * Default constructor. + * + * Uses the default timeout of 1 minute. + */ + public ExpiringValueCache() + { + } + + /** + * Constructor + * + * @param timeout Timeout in milliseconds before cached value is discarded + */ + public ExpiringValueCache(long timeout) + { + this.timeout = timeout; + } + + /** + * Put a value into the cache. The item will be return from the associated get() method + * until the timeout expires then null will be returned. + * + * @param value The object to store in the cache + */ + public void put(T value) + { + this.value = value; + this.snapshot = System.currentTimeMillis(); + } + + /** + * Get the cached object. The set item will be returned until it expires, then null will be returned. + * + * @return cached object or null if not set or expired. + */ + public T get() + { + if (snapshot + timeout < System.currentTimeMillis()) + { + this.value = null; + } + return this.value; + } + + /** + * Clear the cache value + */ + public void clear() + { + this.value = null; + } +}