KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > lib > TKClassRegistry


1 /*
2  * $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/lib/TKClassRegistry.java,v 1.5 2000/05/22 15:01:18 careck Exp $
3  *
4  */

5 package com.teamkonzept.lib;
6
7 public class TKClassRegistry {
8
9     TKHashtable registry = new TKHashtable();
10     TKHashtable cache = new TKHashtable();
11     
12     public TKClassRegistry()
13     {
14     }
15     
16     public synchronized void registerClass( String JavaDoc classId, String JavaDoc className )
17     {
18         String JavaDoc oldEntry = (String JavaDoc) registry.put( classId, className );
19         if( !((oldEntry == null) || (oldEntry.equals( className ))) ) {
20             cache.remove( classId );
21         }
22     }
23     
24     public synchronized Object JavaDoc get( String JavaDoc classId )
25         throws
26             TKUnregisteredClassException,
27             ClassNotFoundException JavaDoc,
28             InstantiationException JavaDoc,
29             IllegalAccessException JavaDoc
30     {
31         Class JavaDoc objectClass = (Class JavaDoc) cache.get( classId );
32         if( objectClass == null ) {
33             String JavaDoc className = (String JavaDoc) registry.get( classId );
34             if( className == null ) throw new TKUnregisteredClassException(classId);
35             objectClass = Class.forName( className );
36             cache.put( classId, objectClass );
37         }
38         
39         return objectClass.newInstance();
40     }
41     
42     public Object JavaDoc get( String JavaDoc classId, Object JavaDoc initData )
43         throws
44             TKUnregisteredClassException,
45             ClassNotFoundException JavaDoc,
46             InstantiationException JavaDoc,
47             IllegalAccessException JavaDoc
48     {
49         Object JavaDoc result = get( classId );
50         initObject( classId, result, initData );
51         return result;
52     }
53     
54     public void initObject( String JavaDoc classId, Object JavaDoc classObject, Object JavaDoc initData )
55         throws
56             TKUnregisteredClassException,
57             ClassNotFoundException JavaDoc,
58             InstantiationException JavaDoc,
59             IllegalAccessException JavaDoc
60     {}
61     
62 }
63
64
Popular Tags