1 /* 2 * Copyright 1999-2004 The Apache Software Foundation 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 * implied. 13 * 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.excalibur.mpool; 18 19 /** 20 * This interface is to define how an ObjectFactory is defined. While this 21 * class is not strictly necessary, the implementation of the Pool can differ 22 * object creation to and instance of this interface. 23 * 24 * @author <a HREF="mailto:dev@avalon.apache.org">Avalon Development Team</a> 25 * @version CVS $Revision: 1.4 $ $Date: 2004/02/28 11:47:33 $ 26 * @since 4.1.2 27 */ 28 public interface ObjectFactory 29 { 30 String ROLE = ObjectFactory.class.getName(); 31 32 /** 33 * Create a new instance of the object being pooled. 34 * 35 * @return the pooled Object instance 36 * @throws Exception if the object cannot be instantiated 37 */ 38 Object newInstance() throws Exception; 39 40 /** 41 * Get the class of the object you are creating. 42 * 43 * @return Class object of the factory's class 44 */ 45 Class getCreatedClass(); 46 47 /** 48 * Performs any deconstruction that is necessary for the 49 * object. 50 * 51 * @param object to destroy 52 * @throws IllegalArgumentException if the object is not of 53 * the same class that the factory creates. 54 * @throws Exception if there is any other reason that the 55 * factory has problems disposing of the object. 56 */ 57 void dispose( Object object ) throws Exception; 58 } 59