00001
00027 package org.objectweb.jonas.server;
00028
00029 import java.io.File;
00030 import java.net.URL;
00031 import java.net.URLClassLoader;
00032
00038 public class JClassLoader extends URLClassLoader {
00039
00043 private String name = null;
00044
00051 public JClassLoader(String name, URL[] urls, ClassLoader parent) {
00052 super(urls, parent);
00053 this.name = name;
00054 }
00055
00062 public JClassLoader(String name, URL[] urls) {
00063 super(urls);
00064 this.name = name;
00065 }
00066
00071 public void addURL(URL url) {
00072 if (url != null) {
00073 super.addURL(url);
00074 }
00075 }
00076
00081 public void addURLs(URL[] urls) {
00082 if (urls != null) {
00083 for (int i = 0; i < urls.length; i++) {
00084 if (urls[i] != null) {
00085 super.addURL(urls[i]);
00086 }
00087 }
00088 }
00089 }
00090
00094 public void printURLs() {
00095 System.out.println(name + " ClassLoader :");
00096 URL[] urls = super.getURLs();
00097 for (int i = 0; i < urls.length; i++) {
00098 System.out.println("url=" + (new File(urls[i].getFile())).getAbsolutePath());
00099 }
00100
00101 if (getParent() != null && getParent() instanceof JClassLoader) {
00102 System.out.println("parent :");
00103 ((JClassLoader) getParent()).printURLs();
00104 }
00105 }
00106
00111 public String getClassPath() {
00112 String cp = "";
00113
00114 if (getParent() != null && getParent() instanceof JClassLoader) {
00115 cp += ((JClassLoader) getParent()).getClassPath();
00116 }
00117 URL[] urls = super.getURLs();
00118 for (int i = 0; i < urls.length; i++) {
00119 cp = cp + File.pathSeparator + (new File(urls[i].getFile())).getAbsolutePath();
00120 }
00121 return cp;
00122 }
00123
00128 public String toString() {
00129 StringBuffer sb = new StringBuffer();
00130 sb.append(this.getClass().getName());
00131 sb.append("[");
00132 sb.append(name);
00133 sb.append(", urls=");
00134 URL[] urls = getURLs();
00135 for (int u = 0; u < urls.length; u++) {
00136 sb.append(urls[u]);
00137 if (u != urls.length - 1) {
00138 sb.append(";");
00139 }
00140 }
00141 sb.append("]");
00142 return sb.toString();
00143 }
00144 }