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]