package net.zuckerfrei.jcfd; /** * DOCUMENT ME! * * @author Davor Cengija * @version $Revision: 1.1.1.1 $ */ public abstract class DictFactory { //~ Static variables/initializers ========================================= /** DOCUMENT ME! */ private static DictFactory factory = null; /** DOCUMENT ME! */ private static String clientFactoryClassName = Configuration.getInstance().getDictClientFactoryClassName(); /** DOCUMENT ME! */ private static final Object lock = new Object(); //~ Methods =============================================================== /** * DOCUMENT ME! * * @return DOCUMENT ME! * * @throws IllegalArgumentException DOCUMENT ME! */ public static DictFactory getInstance() { if (factory == null) { synchronized (lock) { if (factory == null) { try { Class c = Class.forName(clientFactoryClassName); factory = (DictFactory) c.newInstance(); } catch (ClassNotFoundException e) { throw new IllegalArgumentException(e.getMessage()); } catch (InstantiationException e) { throw new IllegalArgumentException(e.getMessage()); } catch (IllegalAccessException e) { throw new IllegalArgumentException(e.getMessage()); } } } } return factory; } /** * DOCUMENT ME! * * @return DOCUMENT ME! * * @throws DictException DOCUMENT ME! */ public abstract Dict getDictClient() throws DictException; }