001package org.cache2k; 002 003/* 004 * #%L 005 * cache2k API only package 006 * %% 007 * Copyright (C) 2000 - 2016 headissue GmbH, Munich 008 * %% 009 * This program is free software: you can redistribute it and/or modify 010 * it under the terms of the GNU General Public License as 011 * published by the Free Software Foundation, either version 3 of the 012 * License, or (at your option) any later version. 013 * 014 * This program is distributed in the hope that it will be useful, 015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 017 * GNU General Public License for more details. 018 * 019 * You should have received a copy of the GNU General Public 020 * License along with this program. If not, see 021 * <http://www.gnu.org/licenses/gpl-3.0.html>. 022 * #L% 023 */ 024 025/** 026 * Object representing a cache entry. With the cache entry it can be 027 * checked whether a mapping in the cache is present, even if the cache 028 * holds null or an exception. 029 * 030 * <p>After retrieved the entry instance does not change the values, even 031 * if the value for its key is updated in the cache. 032 * 033 * <p>Design remark: The cache is generally also aware of the time the 034 * object will be refreshed next or when it expired. This is not exposed 035 * to applications by intention. 036 * 037 * @author Jens Wilke; created: 2014-03-18 038 */ 039public interface CacheEntry<K, T> { 040 041 K getKey(); 042 043 T getValue(); 044 045 Throwable getException(); 046 047 /** 048 * Time the entry was last updated either by a fetch via the CacheSource 049 * or by a put. If the entry was never fetched yet 0 is returned. 050 */ 051 long getLastModification(); 052 053}