KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > excalibur > mpool > test > ClassInstanceObjectFactory


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.test;
18
19 import java.util.HashMap JavaDoc;
20
21 import org.apache.avalon.framework.activity.Disposable;
22 import org.apache.avalon.framework.logger.Logger;
23 import org.apache.excalibur.mpool.ObjectFactory;
24
25 /**
26  * @author <a HREF="mailto:dev@avalon.apache.org">Avalon Development Team</a>
27  * @version CVS $Revision: 1.4 $ $Date: 2004/02/28 11:47:32 $
28  * @since 4.1
29  */

30 public class ClassInstanceObjectFactory
31     implements ObjectFactory, org.apache.avalon.excalibur.pool.ObjectFactory
32 {
33     private HashMap JavaDoc m_instances = new HashMap JavaDoc();
34     private Logger m_logger;
35     private Class JavaDoc m_clazz;
36     private int m_id;
37
38     /*---------------------------------------------------------------
39      * Constructors
40      *-------------------------------------------------------------*/

41     /**
42      * Creates a reproducable log of activity in the provided StringBuffer
43      */

44     public ClassInstanceObjectFactory( Class JavaDoc clazz, Logger logger )
45     {
46         m_clazz = clazz;
47         m_logger = logger;
48         m_id = 1;
49     }
50
51     /*---------------------------------------------------------------
52      * ObjectFactory Methods
53      *-------------------------------------------------------------*/

54     public Object JavaDoc newInstance() throws Exception JavaDoc
55     {
56         Object JavaDoc object = m_clazz.newInstance();
57         Integer JavaDoc id = new Integer JavaDoc( m_id++ );
58
59         m_instances.put( object, id );
60
61         if( m_logger.isDebugEnabled() )
62         {
63             m_logger.debug( "ClassInstanceObjectFactory.newInstance() id:" + id );
64         }
65
66         return object;
67     }
68
69     public Class JavaDoc getCreatedClass()
70     {
71         return m_clazz;
72     }
73
74     public void dispose( Object JavaDoc object ) throws Exception JavaDoc
75     {
76         if( object instanceof Disposable )
77         {
78             ( (Disposable)object ).dispose();
79         }
80         Integer JavaDoc id = (Integer JavaDoc)m_instances.remove( object );
81
82         if( m_logger.isDebugEnabled() )
83         {
84             m_logger.debug( "ClassInstanceObjectFactory.decommission(a "
85                             + object.getClass().getName() + ") id:" + id );
86         }
87     }
88
89     public void decommission( Object JavaDoc object ) throws Exception JavaDoc
90     {
91         dispose( object );
92     }
93 }
94
95
Popular Tags