Java tutorial
/** * LICENCIA LGPL: * * Esta librera es Software Libre; Usted puede redistribuirlo y/o modificarlo * bajo los trminos de la GNU Lesser General Public License (LGPL) * tal y como ha sido publicada por la Free Software Foundation; o * bien la versin 2.1 de la Licencia, o (a su eleccin) cualquier versin posterior. * * Esta librera se distribuye con la esperanza de que sea til, pero SIN NINGUNA * GARANT?A; tampoco las implcitas garantas de MERCANTILIDAD o ADECUACIN A UN * PROPSITO PARTICULAR. Consulte la GNU Lesser General Public License (LGPL) para ms * detalles * * Usted debe recibir una copia de la GNU Lesser General Public License (LGPL) * junto con esta librera; si no es as, escriba a la Free Software Foundation Inc. * 51 Franklin Street, 5 Piso, Boston, MA 02110-1301, USA o consulte * <http://www.gnu.org/licenses/>. * * Copyright 2008 Ministerio de Industria, Turismo y Comercio * */ package es.mityc.firmaJava.policy; import java.util.MissingResourceException; import java.util.ResourceBundle; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import es.mityc.firmaJava.libreria.ConstantesXADES; /** * Manager que gestiona las instancias de validadores de policies. * * Diseado como singleton. * * @author Ministerio de Industria, Turismo y Comercio * @version 0.9 beta */ public class PoliciesManager implements ConstantesXADES { private static final Log logger = LogFactory.getLog(PoliciesManager.class); private static PoliciesManager instance; private ResourceBundle props = null; private final static String POLICY_FILE_CONF = "policy"; /** * Constructor. * */ private PoliciesManager() { // Carga las propiedades try { props = ResourceBundle.getBundle(POLICY_FILE_CONF); } catch (MissingResourceException ex) { logger.error(LIBRERIAXADES_POLICY_MANAGER_NO_FILE); } } /** * Para evitar problemas de sincronismo se instancia la primera vez que se referencia */ static { instance = getInstance(); } /** * Devuelve una instancia del manager de policies. * * @return */ public static PoliciesManager getInstance() { if (instance == null) { instance = new PoliciesManager(); } return instance; } /** * Devuelve el validador de policy asociado a la clave indicada. Funciona como una factory que instancia un nuevo validador en cada * llamada. * * @param clave Clave que tiene asociada un validador * @return Una instancia del validador de policy asociado o <code>null</code> si no hay ninguno asociado o no se puede instanciar. * * TODO: permitir funcionar a la factory en varios modos de trabajo (instanciador, cache, singleton, instanciador propio del validador) */ public IValidacionPolicy getValidadorPolicy(String clave) { IValidacionPolicy policyManager = null; if (props != null) { try { String classname = props.getString(clave); if (classname != null) { try { policyManager = (IValidacionPolicy) Class.forName(classname).newInstance(); } catch (InstantiationException e) { logger.error(LIBRERIAXADES_POLICY_MANAGER_NO_INSTANCIA + clave + COMA_ESPACIO + classname + CIERRA_PARENTESIS, e); } catch (IllegalAccessException e) { logger.error(LIBRERIAXADES_POLICY_MANAGER_NO_PERMISOS + clave + COMA_ESPACIO + classname + CIERRA_PARENTESIS, e); } catch (ClassNotFoundException e) { logger.error(LIBRERIAXADES_POLICY_MANAGER_NO_CLAVE + clave + COMA_ESPACIO + classname + CIERRA_PARENTESIS, e); } catch (ClassCastException e) { logger.error(LIBRERIAXADES_POLICY_MANAGER_NO_TIPO + clave + COMA_ESPACIO + classname + CIERRA_PARENTESIS, e); } } } catch (MissingResourceException ex) { logger.error(LIBRERIAXADES_POLICY_MANAGER_NO_VALIDADOR + clave); } } return policyManager; } /** * Devuelve el escritor de policy asociado a la clave indicada. Funciona como una factory que instancia un nuevo escritor en cada * llamada. * * @param clave Clave que tiene asociada un escritor * @return Una instancia del escritor de policy asociado o <code>null</code> si no hay ninguno asociado o no se puede instanciar. * * TODO: permitir funcionar a la factory en varios modos de trabajo (instanciador, cache, singleton, instanciador propio del escritor) */ public IFirmaPolicy getEscritorPolicy(String clave) { IFirmaPolicy policyManager = null; if (props != null) { try { String classname = props.getString(clave); if (classname != null) { try { policyManager = (IFirmaPolicy) Class.forName(classname).newInstance(); } catch (InstantiationException e) { logger.error(ConstantesXADES.LIBRERIAXADES_POLICY_MANAGER_NO_INSTANCIA + clave + ConstantesXADES.COMA_ESPACIO + classname + ConstantesXADES.CIERRA_PARENTESIS, e); } catch (IllegalAccessException e) { logger.error(ConstantesXADES.LIBRERIAXADES_POLICY_MANAGER_NO_PERMISOS + clave + ConstantesXADES.COMA_ESPACIO + classname + ConstantesXADES.CIERRA_PARENTESIS, e); } catch (ClassNotFoundException e) { logger.error(ConstantesXADES.LIBRERIAXADES_POLICY_MANAGER_NO_CLAVE + clave + ConstantesXADES.COMA_ESPACIO + classname + ConstantesXADES.CIERRA_PARENTESIS, e); } catch (ClassCastException e) { logger.error( ConstantesXADES.LIBRERIAXADES_POLICY_MANAGER_NO_TIPO + clave + ConstantesXADES.ESPACIO + classname + ConstantesXADES.CIERRA_PARENTESIS, e); } } } catch (MissingResourceException ex) { logger.error(ConstantesXADES.LIBRERIAXADES_POLICY_MANAGER_NO_VALIDADOR + clave); } } return policyManager; } }