package org.anodyneos.xp; import org.xml.sax.ContentHandler; public abstract class XpContentHandlerFactory { private static final String DEFAULT_FACTORY = "org.anodyneos.xpImpl.XpContentHandlerFactoryImpl"; public static XpContentHandlerFactory getDefaultFactory() { ClassLoader cl1 = Thread.currentThread().getContextClassLoader(); ClassLoader cl2 = XpContentHandlerFactory.class.getClassLoader(); Class xpFactoryClass = null; if (null != cl1) { xpFactoryClass = loadClass(cl1, DEFAULT_FACTORY); } if (null == xpFactoryClass) { xpFactoryClass = loadClass(cl2, DEFAULT_FACTORY); } if (null == xpFactoryClass) { return null; } else { try { XpContentHandlerFactory xpFactory = (XpContentHandlerFactory) xpFactoryClass.newInstance(); return xpFactory; } catch (InstantiationException e) { return null; } catch (IllegalAccessException e) { return null; } } } private static Class loadClass(ClassLoader cl, String name) { try { Class clazz = cl.loadClass(name); return clazz; } catch (ClassNotFoundException e) { return null; } } public abstract XpContentHandler getXpContentHandler(ContentHandler ch); public abstract XpContentHandler getXpContentHandler(ContentHandler ch, boolean namespacePrefixes); //public abstract void releaseHttpXpContext(HttpXpContext xpContext); }