es.gob.afirma.standalone.plugins.AfirmaPlugin Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of afirma-ui-simpleafirma-plugins Show documentation
Show all versions of afirma-ui-simpleafirma-plugins Show documentation
Base para la construccion de plugins de AutoFirma
The newest version!
package es.gob.afirma.standalone.plugins;
import java.lang.reflect.Constructor;
import java.security.cert.Certificate;
import java.util.Properties;
import es.gob.afirma.core.signers.AOSignConstants;
/**
* Plugin que aporta información adicional a la aplicación.
*/
public abstract class AfirmaPlugin {
private PluginInfo info = null;
private SignDataProcessor inlineProcessor = null;
private ClassLoader classLoader = null;
/**
* Proporciona la información básica de la aplicación.
* @return Información del plugin.
*/
public final PluginInfo getInfo() {
return this.info;
}
/**
* Establece la información básica de la aplicación.
* @param info Información del plugin.
*/
public final void setInfo(final PluginInfo info) {
this.info = info;
}
/**
* Proporciona la información básica de la aplicación.
* @return Información del plugin.
*/
public final ClassLoader getClassLoader() {
return this.classLoader;
}
/**
* Establece el ClassLoader con el que se cargarán las clases del plugin.
* @param classLoader ClassLoader con el que se cargarán las clases del plugin.
*/
public final void setClassLoader(final ClassLoader classLoader) {
this.classLoader = classLoader;
}
/**
* Permite recuperar la configuración establecida en el plugin.
* @return Configuración del plugin.
*/
public final Properties getConfig() {
return PluginPreferences.getInstance(this).recoverConfig();
}
/**
* Construye una instancia del panel de configuración.
* @return Panel de configuración construido.
* @throws ReflectiveOperationException Cuando ocurre un error al construir el panel.
*/
public final ConfigurationPanel buildConfigurationPanel() throws ReflectiveOperationException {
final String configPanelClass = getInfo().getConfigPanel();
if (configPanelClass == null) {
return null;
}
ConfigurationPanel panel;
try {
final Class> panelClass = Class.forName(
configPanelClass, true, this.getClass().getClassLoader());
panel = (ConfigurationPanel) panelClass.newInstance();
} catch (final Exception e) {
throw new ReflectiveOperationException("No se pudo crear el panel de configuracion", e); //$NON-NLS-1$
}
return panel;
}
/**
* Proceso ejecutado sobre los datos antes de firma.
* @param data Datos que se van a firmar.
* @param format Formato de firma que se aplicara sobre los datos. Los
* posibles formatos de firma se definen en {@link AOSignConstants}.
* @return Datos ya procesados que se van a firmar.
* @throws PluginControlledException Cuando se produce un error en el procesado
* de los datos.
*/
@SuppressWarnings("static-method")
public byte[] preSignProcess(final byte[] data, final String format)
throws PluginControlledException {
return data;
}
/**
* Proceso ejecutado sobre las firmas generadas.
* @param signature Firma electrónica generada.
* @param format Formato de la firma. Los posibles formatos de firma se
* definen en {@link AOSignConstants}.
* @param certChain Cadena de certificación usada en al firma.
* @return Firma ya posprocesada.
* @throws PluginControlledException Cuando se produce un error en el procesado
* de la firma.
*/
@SuppressWarnings("static-method")
public byte[] postSignProcess(final byte[] signature, final String format, final Certificate[] certChain)
throws PluginControlledException {
return signature;
}
/**
* Obtiene el procesador para peticiones en linea asociado al plugin.
* @param protocolVersion Versión del protocolo declarado por AutoFirma.
* @return Procesador de peticiones de firma en línea o {@code null} si el
* plugin no lo establece.
* @throws PluginControlledException Cuando se produce un error durante la carga del
* procesador.
*/
public final SignDataProcessor getInlineProcessor(final int protocolVersion) throws PluginControlledException {
if (this.inlineProcessor == null) {
final String processorClassName = this.info.getInlineProcessorClassname();
if (processorClassName != null) {
try {
final Class processorClass =
(Class) Class.forName(processorClassName, true, this.getClass().getClassLoader());
final Constructor processorConstructor =
processorClass.getConstructor(Integer.TYPE);
this.inlineProcessor = processorConstructor.newInstance(protocolVersion);
}
catch (final Exception e) {
throw new PluginControlledException("No se ha podido cargar la clase de procesado en linea", e); //$NON-NLS-1$
}
}
}
return this.inlineProcessor;
}
/**
* Proceso ejecutado al instalar el plugin en AutoFirma. Esto sólo se
* ejecutará una vez a lo largo de vida del plugin. Este proceso sólo
* tendrá permisos de administrador si el usuario ejecutó Autofirma
* con estos.
* @throws PluginControlledException Cuando ocurre un error durante el proceso.
*/
public void install() throws PluginControlledException {
// Por defecto, no se hace nada
}
/**
* Proceso ejecutado al desinstalar el plugin de AutoFirma. Este proceso deberí
* eliminar cualquier resto o referencia que se haya dejado en el sistema como parte del
* proceso de instalación o de firma.
* @throws PluginControlledException Cuando ocurre un error durante el proceso.
*/
public void uninstall() throws PluginControlledException {
// Por defecto, no se hace nada
}
/**
* Método ejecutado al finalizar un proceso de firma completo. En este
* proceso pueden, por ejemplo, haberse realizado múltiples firmas como
* parte de una operación de firma masiva.
* En este método se puede configurar lo necesario para restaurar el
* estado del plugin o liberar recursos antes de una nueva operación.
* @throws PluginControlledException Cuando falla el proceso de reinicio.
*/
public void reset() throws PluginControlledException {
// No se hace nada
}
@Override
public final boolean equals(final Object obj) {
if (obj != null && obj instanceof AfirmaPlugin) {
final PluginInfo myInfo = getInfo();
final PluginInfo objInfo = ((AfirmaPlugin) obj).getInfo();
return myInfo.getInternalName().equals(objInfo.getInternalName());
}
else if (obj != null && obj instanceof PluginInfo) {
final PluginInfo myInfo = getInfo();
final PluginInfo objInfo = (PluginInfo) obj;
return myInfo.getInternalName().equals(objInfo.getInternalName());
}
return super.equals(obj);
}
@Override
public final int hashCode() {
return super.hashCode();
}
@Override
public final String toString() {
return this.info != null ? this.info.toString() : super.toString();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy