/** * */ package net.conselldemallorca.helium.core.model.dao; import net.conselldemallorca.helium.core.model.exception.PluginException; import net.conselldemallorca.helium.core.util.GlobalProperties; import net.conselldemallorca.helium.integracio.plugins.signatura.RespostaValidacioSignatura; import net.conselldemallorca.helium.integracio.plugins.signatura.SignaturaPlugin; import net.conselldemallorca.helium.integracio.plugins.signatura.SignaturaPluginException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.stereotype.Component; /** * Dao per accedir a la funcionalitat del plugin de signatura * * @author Limit Tecnologies <limit@limit.es> */ @Component public class PluginSignaturaDao { private SignaturaPlugin signaturaPlugin; public RespostaValidacioSignatura verificarSignatura( byte[] document, byte[] signatura, boolean obtenirDadesCertificat) throws PluginException { try { return getSignaturaPlugin().verificarSignatura( document, signatura, obtenirDadesCertificat); } catch (SignaturaPluginException ex) { logger.error("Error al verificar la signatura", ex); throw new PluginException("Error al verificar la signatura", ex); } } @SuppressWarnings("rawtypes") private SignaturaPlugin getSignaturaPlugin() { if (signaturaPlugin == null) { String pluginClass = GlobalProperties.getInstance().getProperty("app.signatura.plugin.class"); if (pluginClass != null && pluginClass.length() > 0) { try { Class clazz = Class.forName(pluginClass); signaturaPlugin = (SignaturaPlugin)clazz.newInstance(); } catch (Exception ex) { logger.error("No s'ha pogut crear la instància del plugin de signatura", ex); throw new PluginException("No s'ha pogut crear la instància del plugin de signatura", ex); } } } return signaturaPlugin; } private static final Log logger = LogFactory.getLog(PluginSignaturaDao.class); }