1 /**********************************************************************
2 * AdapterFactory.java
3 * created on 15.03.2005 by netseeker
4 * $Source: /cvsroot/ejoe/EJOE/src/de/netseeker/ejoe/adapter/AdapterFactory.java,v $
5 * $Date: 2006/02/04 14:16:49 $
6 * $Revision: 1.5 $
7 *********************************************************************/
8 package de.netseeker.ejoe.adapter;
9
10 import java.util.Hashtable;
11 import java.util.Map;
12 import java.util.logging.Level;
13 import java.util.logging.Logger;
14
15 /***
16 * @author netseeker
17 */
18 public final class AdapterFactory
19 {
20 /***
21 * Logger for this class
22 */
23 private static final Logger logger = Logger.getLogger(AdapterFactory.class.getName());
24
25 /***
26 * cache for already created adapter instances, use a Hashtable because it's
27 * synchronized
28 */
29 private static final Map _adapters = new Hashtable();
30
31 /***
32 * @param name
33 * @return
34 */
35 public static SerializeAdapter createAdapter(String name) throws IllegalAdapterException
36 {
37 SerializeAdapter adapter = (SerializeAdapter) _adapters.get(name);
38
39 if (adapter == null)
40 {
41 try
42 {
43 adapter = (SerializeAdapter) Class.forName(name).newInstance();
44 _adapters.put(name, adapter);
45 }
46 catch (InstantiationException e)
47 {
48 logger.log(Level.SEVERE, "Error while trying to instaniate SerializeAdapter: " + name, e);
49 throw new IllegalAdapterException(e.getMessage());
50 }
51 catch (IllegalAccessException e)
52 {
53 logger.log(Level.SEVERE, "Error while trying to access SerializeAdapter: " + name, e);
54 throw new IllegalAdapterException(e.getMessage());
55 }
56 catch (ClassNotFoundException e)
57 {
58 logger.log(Level.SEVERE, "Class for SerializeAdapter: " + name + " not found.", e);
59 throw new IllegalAdapterException(e.getMessage());
60 }
61 }
62
63 return adapter;
64 }
65 }