/* * Arquitectura del un sistema extensible a base de plug-ins. * Curso: Ingeniería de Software * */ package mx.uam.ingsoft.pluginadmin; import mx.uam.ingsoft.comun.Plugin; import mx.uam.ingsoft.comun.PluginInfo; import mx.uam.ingsoft.comun.AdministradorPlugins; import mx.uam.ingsoft.comun.ArquitecturaException; import java.net.URL; import java.net.URLClassLoader; import java.net.URLConnection; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; import java.util.jar.JarFile; import java.util.jar.JarInputStream; import java.util.jar.Manifest; import java.util.zip.ZipEntry; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; /** * Esta clase implementa la interfase de administración de plugins. * * @version 0.1.1 Jan 27, 2005 * @author Humberto Cervantes */ public class AdministradorPluginsImpl implements AdministradorPlugins { private Map m_registroPlugins = new HashMap(); private File m_directorioPlugins; /** * El Administrador de plugins recibe un directorio a partir del * cual crea la lista inicial de plugins * * @param directorio un directorio existente */ public AdministradorPluginsImpl(File directorio) throws ArquitecturaException { if(directorio == null) { throw new ArquitecturaException("AdministradorPluginsImpl: directorio es nulo!"); } m_directorioPlugins = directorio; if(directorio.isDirectory() == true) { // Agrega todos los plugins del directorio File archivos[] = directorio.listFiles(); // Para cada archivo for (int i = 0;i