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.proxy; 18 19 import org.apache.commons.pool2.UsageTracking; 20 21 /** 22 * The interface that any provider of proxy instances must implement to allow the 23 * {@link ProxiedObjectPool} to create proxies as required. 24 * 25 * @param <T> type of the pooled object to be proxied 26 * 27 * @since 2.0 28 */ 29 interface ProxySource<T> { 30 31 /** 32 * Creates a new proxy object, wrapping the given pooled object. 33 * 34 * @param pooledObject The object to wrap 35 * @param usageTracking The instance, if any (usually the object pool) to 36 * be provided with usage tracking information for this 37 * wrapped object 38 * 39 * @return the new proxy object 40 */ 41 T createProxy(T pooledObject, UsageTracking<T> usageTracking); 42 43 /** 44 * Resolves the wrapped object from the given proxy. 45 * 46 * @param proxy The proxy object 47 * 48 * @return The pooled object wrapped by the given proxy 49 */ 50 T resolveProxy(T proxy); 51 }