com.iver.andami.plugins
Class PluginClassLoader

java.lang.Object
  extended byjava.lang.ClassLoader
      extended byjava.security.SecureClassLoader
          extended byjava.net.URLClassLoader
              extended bycom.iver.andami.plugins.PluginClassLoader

public class PluginClassLoader
extends java.net.URLClassLoader

Class loader que carga las clases pedidas por los plugins de manera que primero busca en el classpath, luego busca en el directorio del propio plugin en los jars especificados por el xml y en caso de no encontrar la clase pide al PluginClassLoaderManager la lista de plugins que pueden satisfacer la clase e intenta cargarlo con cada un de ellos hasta que lo consigue con uno.

Author:
Fernando González Cortés

Constructor Summary
PluginClassLoader(java.net.URL[] jars, java.lang.String baseDir, java.lang.ClassLoader cl, PluginClassLoader[] pluginLoaders)
          Creates a new PluginClassLoader object.
 
Method Summary
 java.lang.String getBaseDir()
          DOCUMENT ME!
 java.lang.String getPluginName()
          Devuelve el nombre del directorio del plugin
 java.net.URL getResource(java.lang.String res)
          Obtiene los recursos tomando como la raiz el directorio base del plugin.
 
Methods inherited from class java.net.URLClassLoader
findResource, findResources, getURLs, newInstance, newInstance
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, getParent, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PluginClassLoader

public PluginClassLoader(java.net.URL[] jars,
                         java.lang.String baseDir,
                         java.lang.ClassLoader cl,
                         PluginClassLoader[] pluginLoaders)
                  throws java.io.IOException
Creates a new PluginClassLoader object.

Parameters:
jars - Array con la ruta de los jars en los que buscará las clases el plugin
baseDir - Directorio base del plugin que se carga. Es en directorio donde se buscan los resources en el método getResources
cl - ClassLoader padre del classLoader, al que se le pedirá resolver las clases antes de utilizar el algoritmo propio
pluginLoaders - DOCUMENT ME!
Throws:
java.io.IOException
java.io.IOException
Method Detail

getResource

public java.net.URL getResource(java.lang.String res)
Obtiene los recursos tomando como la raiz el directorio base del plugin. Si no se encuentra el recurso ahí se invoca a getResource del classloader padre, que buscará en el jar de la aplicación. Si ahí tampoco se encuentra nada se devolverá null.

Parameters:
res - Nombre del recurso
Returns:
URL del recurso o null si no se pudo encontrar

getPluginName

public java.lang.String getPluginName()
Devuelve el nombre del directorio del plugin

Returns:

getBaseDir

public java.lang.String getBaseDir()
DOCUMENT ME!

Returns:
Returns the baseDir.