001package org.cache2k;
002
003/*
004 * #%L
005 * cache2k API only package
006 * %%
007 * Copyright (C) 2000 - 2014 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
025import java.util.List;
026
027/**
028 * @author Jens Wilke; created: 2014-03-18
029 */
030public interface BulkCacheSource<K, T> {
031
032  /**
033   * Retrieve the values for the given cache entries. The cache
034   * entry list contains all keys for the entries to retrieve.
035   * If an exception is thrown this may affect all entries, that
036   * have currently no valid or expired data.
037   *
038   * <p/>The entry key is never null. Returned list must be
039   * of identical length then entries list.
040   *
041   * @param entries list of entries / keys we want the data for
042   * @param currentTime time in millis just before the call to this method
043   * @return
044   * @throws Throwable
045   */
046  public List<T> getValues(
047    List<CacheEntry<K, T>> entries,
048    long currentTime) throws Throwable;
049
050}