1 package com.atlassian.cache;
2
3 import com.atlassian.annotations.PublicApi;
4
5 import javax.annotation.Nonnull;
6 import javax.annotation.Nullable;
7
8 /**
9 * A cache event.
10 * <p/>
11 * NOTE: Although Cache does not support {@code null} as a valid value we are using it in {@code getValue} and
12 * {@code getOldValue} as a way to represent missing value. We have the following reasons for this:
13 * <ul>
14 * <li>Firstly, some events inherently do not have value or old value. For instance addition does not have
15 * an old value as the corresponding element was just added to the cache</li>
16 * <li>Secondly, in some implementations the information for the value and/or old value is not available at all.</li>
17 * <li>Thirdly, the listener can be added as a valueless listener</li>
18 * </ul>
19 *
20 * @since 2.4
21 */
22 @PublicApi
23 public interface CacheEntryEvent<K, V>
24 {
25 /**
26 * Returns the key the event was fired for
27 *
28 * @return the key
29 */
30 @Nonnull
31 K getKey();
32
33 /**
34 * Returns the current value for this key
35 *
36 * @return the value. For details why is this method marked as {@code Nullable} please refer to the
37 * class level documentation
38 */
39 @Nullable
40 V getValue();
41
42 /**
43 * Returns the old value for this key
44 *
45 * @return the old value. For details why is this method marked as {@code Nullable} please refer to the
46 * class level documentation
47 */
48 @Nullable
49 V getOldValue();
50 }