psmith      2004/06/16 17:14:18

  Modified:    src/java/org/apache/log4j/chainsaw/plugins
                        PluginClassLoaderFactory.java
  Log:
  This class is now a Singleton for access within Chainsaw.
  
  Revision  Changes    Path
  1.3       +18 -3     
logging-log4j/src/java/org/apache/log4j/chainsaw/plugins/PluginClassLoaderFactory.java
  
  Index: PluginClassLoaderFactory.java
  ===================================================================
  RCS file: 
/home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/plugins/PluginClassLoaderFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PluginClassLoaderFactory.java     14 Jun 2004 23:05:05 -0000      1.2
  +++ PluginClassLoaderFactory.java     17 Jun 2004 00:14:18 -0000      1.3
  @@ -8,6 +8,7 @@
   import java.util.ArrayList;
   import java.util.List;
   
  +import org.apache.log4j.chainsaw.prefs.SettingsManager;
   import org.apache.log4j.helpers.LogLog;
   
   /**
  @@ -22,13 +23,26 @@
    * 
    */
   public class PluginClassLoaderFactory {
  -
  +     private final ClassLoader pluginClassLoader;
  +    
  +    private static final PluginClassLoaderFactory instance = new 
PluginClassLoaderFactory();
  +    
        /**
         * @param urls
         */
        private PluginClassLoaderFactory() {
  +        this.pluginClassLoader= PluginClassLoaderFactory.create(new 
File(SettingsManager.getInstance().getSettingsDirectory() + File.separator + 
"plugins"));
  +
        }
       
  +    public static PluginClassLoaderFactory getInstance() {
  +     return instance;   
  +    }
  +    
  +    public ClassLoader getClassLoader() {
  +     return this.pluginClassLoader;   
  +    }
  +    
       /**
        * Creates a Classloader that will be able to access any of the classes found
        * in any .JAR file contained within the specified directory path, PLUS
  @@ -40,7 +54,7 @@
        * @throws RuntimeException if turning a File into a URL failed, which would be 
very unexpected
        * @return
        */
  -    public static final ClassLoader create(File pluginDirectory) {
  +    private static final ClassLoader create(File pluginDirectory) {
           if(pluginDirectory == null || !pluginDirectory.exists() || 
!pluginDirectory.canRead()) {
            LogLog.error("pluginDirectory cannot be null, and it must exist and must 
be readable, using the normal Classloader");
            return PluginClassLoaderFactory.class.getClassLoader();
  @@ -75,8 +89,9 @@
                                }
                        }
                }
  +        ClassLoader parent = PluginClassLoaderFactory.class.getClassLoader();
           URL[] urls = (URL[]) list.toArray(new URL[list.size()]);
  -        return new URLClassLoader(urls);
  +        return new URLClassLoader(urls, parent);
       }
   
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to