    001/*
    002 * Copyright (c) 2007-2016 Concurrent, Inc. All Rights Reserved.
    003 *
    004 * Project and contact information: http://www.cascading.org/
    005 *
    006 * This file is part of the Cascading project.
    007 *
    008 * Licensed under the Apache License, Version 2.0 (the "License");
    009 * you may not use this file except in compliance with the License.
    010 * You may obtain a copy of the License at
    011 *
    012 *     http://www.apache.org/licenses/LICENSE-2.0
    013 *
    014 * Unless required by applicable law or agreed to in writing, software
    015 * distributed under the License is distributed on an "AS IS" BASIS,
    016 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    017 * See the License for the specific language governing permissions and
    018 * limitations under the License.
    019 */
    020
    021package cascading.util.cache;
    022
    023import java.io.Serializable;
    024import java.util.Map;
    025
    026/**
    027 * CacheEvictionCallBack is an interface to be used in conjunction with {@link CascadingCache} instances.
    028 * This enables a to do processing whenever an entry is evicted from the Cache.
    029 */
    030public interface CacheEvictionCallback<Key, Value> extends Serializable
    031  {
    032  /**
    033   * NO-OP implementation of {@link cascading.util.cache.CacheEvictionCallback}.
    034   */
    035  public static final CacheEvictionCallback NULL = new CacheEvictionCallback()
    036  {
    037  @Override
    038  public void evict( Map.Entry entry )
    039    {
    040    // NO-OP
    041    }
    042  };
    043
    044  /**
    045   * Method will be called by the {@link CascadingCache} implementation whenever a key is evicted.
    046   *
    047   * @param entry The entry being removed from the cache.
    048   */
    049  void evict( Map.Entry<Key, Value> entry );
    050
    051  }