View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.pool2.impl;
18  
19  import org.apache.commons.pool2.PooledObject;
20  
21  /**
22   * To provide a custom eviction policy (i.e. something other than {@link
23   * DefaultEvictionPolicy} for a pool, users must provide an implementation of
24   * this interface that provides the required eviction policy.
25   *
26   * @param <T> the type of objects in the pool
27   * @since 2.0
28   */
29  public interface EvictionPolicy<T> {
30  
31      /**
32       * Tests if an idle object in the pool should be evicted or not.
33       *
34       * @param config    The pool configuration settings related to eviction
35       * @param underTest The pooled object being tested for eviction
36       * @param idleCount The current number of idle objects in the pool including
37       *                      the object under test
38       * @return {@code true} if the object should be evicted, otherwise
39       *             {@code false}
40       */
41      boolean evict(EvictionConfig config, PooledObject<T> underTest, int idleCount);
42  }