View Javadoc
1   package org.apache.commons.jcs.engine.behavior;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.io.Serializable;
23  import java.util.ArrayList;
24  import java.util.List;
25  
26  import org.apache.commons.jcs.engine.control.event.behavior.IElementEventHandler;
27  
28  /**
29   * Interface for cache element attributes classes. Every item is the cache is associated with an
30   * element attributes object. It is used to track the life of the object as well as to restrict its
31   * behavior. By default, elements get a clone of the region's attributes.
32   */
33  public interface IElementAttributes extends Serializable, Cloneable
34  {
35      /**
36       * Sets the maxLife attribute of the IAttributes object.
37       * <p>
38       * @param mls The new MaxLifeSeconds value
39       */
40      void setMaxLife(long mls);
41  
42      /**
43       * Sets the maxLife attribute of the IAttributes object. How many seconds it can live after
44       * creation.
45       * <p>
46       * If this is exceeded the element will not be returned, instead it will be removed. It will be
47       * removed on retrieval, or removed actively if the memory shrinker is turned on.
48       * @return The MaxLifeSeconds value
49       */
50      long getMaxLife();
51  
52      /**
53       * Sets the idleTime attribute of the IAttributes object. This is the maximum time the item can
54       * be idle in the cache, that is not accessed.
55       * <p>
56       * If this is exceeded the element will not be returned, instead it will be removed. It will be
57       * removed on retrieval, or removed actively if the memory shrinker is turned on.
58       * @param idle The new idleTime value
59       */
60      void setIdleTime( long idle );
61  
62      /**
63       * Size in bytes. This is not used except in the admin pages. It will be -1 by default.
64       * <p>
65       * @param size The new size value
66       */
67      void setSize( int size );
68  
69      /**
70       * Gets the size attribute of the IAttributes object
71       * <p>
72       * @return The size value
73       */
74      int getSize();
75  
76      /**
77       * Gets the createTime attribute of the IAttributes object.
78       * <p>
79       * This should be the current time in milliseconds returned by the sysutem call when the element
80       * is put in the cache.
81       * <p>
82       * Putting an item in the cache overrides any existing items.
83       * @return The createTime value
84       */
85      long getCreateTime();
86  
87      /**
88       * Gets the LastAccess attribute of the IAttributes object.
89       * <p>
90       * @return The LastAccess value.
91       */
92      long getLastAccessTime();
93  
94      /**
95       * Sets the LastAccessTime as now of the IElementAttributes object
96       */
97      void setLastAccessTimeNow();
98  
99      /**
100      * Gets the idleTime attribute of the IAttributes object
101      * @return The idleTime value
102      */
103     long getIdleTime();
104 
105     /**
106      * Gets the time left to live of the IAttributes object.
107      * <p>
108      * This is the (max life + create time) - current time.
109      * @return The TimeToLiveSeconds value
110      */
111     long getTimeToLiveSeconds();
112 
113     /**
114      * Can this item be spooled to disk
115      * <p>
116      * By default this is true.
117      * @return The spoolable value
118      */
119     boolean getIsSpool();
120 
121     /**
122      * Sets the isSpool attribute of the IElementAttributes object
123      * <p>
124      * By default this is true.
125      * @param val The new isSpool value
126      */
127     void setIsSpool( boolean val );
128 
129     /**
130      * Is this item laterally distributable. Can it be sent to auxiliaries of type lateral.
131      * <p>
132      * By default this is true.
133      * @return The isLateral value
134      */
135     boolean getIsLateral();
136 
137     /**
138      * Sets the isLateral attribute of the IElementAttributes object
139      * <p>
140      * By default this is true.
141      * @param val The new isLateral value
142      */
143     void setIsLateral( boolean val );
144 
145     /**
146      * Can this item be sent to the remote cache.
147      * <p>
148      * By default this is true.
149      * @return The isRemote value
150      */
151     boolean getIsRemote();
152 
153     /**
154      * Sets the isRemote attribute of the IElementAttributes object.
155      * <p>
156      * By default this is true.
157      * @param val The new isRemote value
158      */
159     void setIsRemote( boolean val );
160 
161     /**
162      * This turns off expiration if it is true.
163      * @return The IsEternal value
164      */
165     boolean getIsEternal();
166 
167     /**
168      * Sets the isEternal attribute of the IElementAttributes object
169      * @param val The new isEternal value
170      */
171     void setIsEternal( boolean val );
172 
173     /**
174      * Adds a ElementEventHandler. Handler's can be registered for multiple events. A registered
175      * handler will be called at every recognized event.
176      * @param eventHandler The feature to be added to the ElementEventHandler
177      */
178     void addElementEventHandler( IElementEventHandler eventHandler );
179 
180     /**
181      * Gets the elementEventHandlers.
182      * <p>
183      * Event handlers are transient. The only events defined are in memory events. All handlers are
184      * lost if the item goes to disk.
185      * @return The elementEventHandlers value, null if there are none
186      */
187     ArrayList<IElementEventHandler> getElementEventHandlers();
188 
189     /**
190      * Sets the eventHandlers of the IElementAttributes object
191      * @param eventHandlers value
192      */
193     void addElementEventHandlers( List<IElementEventHandler> eventHandlers );
194 
195     long getTimeFactorForMilliseconds();
196 
197     void setTimeFactorForMilliseconds(long factor);
198 
199     /**
200      * Clone object
201      */
202     IElementAttributes clone();
203 }