package org.dcache.gplazma.configuration.parser; /** * getInstance of ConfigurationParserFactory * @author timur */ public abstract class ConfigurationParserFactory { private static final String DEFAULT_PROPERTY_NAME = "org.dcache.gplazma.configuration.parser.ConfigurationParserFactory"; private static final String DEFAULT_FACTORY = "org.dcache.gplazma.configuration.parser.PAMStyleConfigurationParserFactory"; /** * * @return an instance of the * ConfigurationParserFactory, * by default it is * org.dcache.gplazma.configuration.parser.DefaultConfigurationParserFactory * but this behavior can be overridden with definition of the system property * "org.dcache.gplazma.configuration.parser.ConfigurationParserFactory" */ public static ConfigurationParserFactory getInstance() throws FactoryConfigurationException { try { return (ConfigurationParserFactory) FactoryFinder.find(DEFAULT_PROPERTY_NAME, DEFAULT_FACTORY); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException cnfe) { throw new FactoryConfigurationException("configuration error", cnfe); } } /** * * @param factoryClassName * @return an instanc of the ConfigurationParserFactory specified by the * factoryClassName */ public static ConfigurationParserFactory getInstance(String factoryClassName) throws FactoryConfigurationException { try { return (ConfigurationParserFactory) FactoryFinder.newInstance(factoryClassName); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException cnfe) { throw new FactoryConfigurationException("configuration error", cnfe); } } public abstract ConfigurationParser newConfigurationParser(); }