| package org.apache.commons.jcs.engine.behavior; |
| |
| /* |
| * 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. |
| */ |
| |
| import java.io.Serializable; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.apache.commons.jcs.engine.control.event.behavior.IElementEventHandler; |
| |
| /** |
| * Interface for cache element attributes classes. Every item is the cache is associated with an |
| * element attributes object. It is used to track the life of the object as well as to restrict its |
| * behavior. By default, elements get a clone of the region's attributes. |
| */ |
| public interface IElementAttributes extends Serializable, Cloneable |
| { |
| /** |
| * Sets the maxLife attribute of the IAttributes object. |
| * <p> |
| * @param mls The new MaxLifeSeconds value |
| */ |
| void setMaxLife(long mls); |
| |
| /** |
| * Sets the maxLife attribute of the IAttributes object. How many seconds 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 MaxLifeSeconds value |
| */ |
| long getMaxLife(); |
| |
| /** |
| * Sets the idleTime attribute of the IAttributes object. This is the maximum time the item can |
| * be idle in the cache, that is not accessed. |
| * <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. |
| * @param idle The new idleTime value |
| */ |
| void setIdleTime( long idle ); |
| |
| /** |
| * Size in bytes. This is not used except in the admin pages. It will be -1 by default. |
| * <p> |
| * @param size The new size value |
| */ |
| void setSize( int size ); |
| |
| /** |
| * Gets the size attribute of the IAttributes object |
| * <p> |
| * @return The size value |
| */ |
| int getSize(); |
| |
| /** |
| * Gets the createTime attribute of the IAttributes object. |
| * <p> |
| * This should be the current time in milliseconds returned by the sysutem call when the element |
| * is put in the cache. |
| * <p> |
| * Putting an item in the cache overrides any existing items. |
| * @return The createTime value |
| */ |
| long getCreateTime(); |
| |
| /** |
| * Gets the LastAccess attribute of the IAttributes object. |
| * <p> |
| * @return The LastAccess value. |
| */ |
| long getLastAccessTime(); |
| |
| /** |
| * Sets the LastAccessTime as now of the IElementAttributes object |
| */ |
| void setLastAccessTimeNow(); |
| |
| /** |
| * Gets the idleTime attribute of the IAttributes object |
| * @return The idleTime value |
| */ |
| long getIdleTime(); |
| |
| /** |
| * Gets the time left to live of the IAttributes object. |
| * <p> |
| * This is the (max life + create time) - current time. |
| * @return The TimeToLiveSeconds value |
| */ |
| long getTimeToLiveSeconds(); |
| |
| /** |
| * Can this item be spooled to disk |
| * <p> |
| * By default this is true. |
| * @return The spoolable value |
| */ |
| boolean getIsSpool(); |
| |
| /** |
| * Sets the isSpool attribute of the IElementAttributes object |
| * <p> |
| * By default this is true. |
| * @param val The new isSpool value |
| */ |
| void setIsSpool( boolean val ); |
| |
| /** |
| * Is this item laterally distributable. Can it be sent to auxiliaries of type lateral. |
| * <p> |
| * By default this is true. |
| * @return The isLateral value |
| */ |
| boolean getIsLateral(); |
| |
| /** |
| * Sets the isLateral attribute of the IElementAttributes object |
| * <p> |
| * By default this is true. |
| * @param val The new isLateral value |
| */ |
| void setIsLateral( boolean val ); |
| |
| /** |
| * Can this item be sent to the remote cache. |
| * <p> |
| * By default this is true. |
| * @return The isRemote value |
| */ |
| boolean getIsRemote(); |
| |
| /** |
| * Sets the isRemote attribute of the IElementAttributes object. |
| * <p> |
| * By default this is true. |
| * @param val The new isRemote value |
| */ |
| void setIsRemote( boolean val ); |
| |
| /** |
| * This turns off expiration if it is true. |
| * @return The IsEternal value |
| */ |
| boolean getIsEternal(); |
| |
| /** |
| * Sets the isEternal attribute of the IElementAttributes object |
| * @param val The new isEternal value |
| */ |
| void setIsEternal( boolean val ); |
| |
| /** |
| * Adds a ElementEventHandler. Handler's can be registered for multiple events. A registered |
| * handler will be called at every recognized event. |
| * @param eventHandler The feature to be added to the ElementEventHandler |
| */ |
| void addElementEventHandler( IElementEventHandler eventHandler ); |
| |
| /** |
| * Gets the elementEventHandlers. |
| * <p> |
| * Event handlers are transient. The only events defined are in memory events. All handlers are |
| * lost if the item goes to disk. |
| * @return The elementEventHandlers value, null if there are none |
| */ |
| ArrayList<IElementEventHandler> getElementEventHandlers(); |
| |
| /** |
| * Sets the eventHandlers of the IElementAttributes object |
| * @param eventHandlers value |
| */ |
| void addElementEventHandlers( List<IElementEventHandler> eventHandlers ); |
| |
| long getTimeFactorForMilliseconds(); |
| |
| void setTimeFactorForMilliseconds(long factor); |
| |
| /** |
| * Clone object |
| */ |
| IElementAttributes clone(); |
| } |