home *** CD-ROM | disk | FTP | other *** search
- package sun.beanbox;
-
- import java.io.ByteArrayInputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.InputStream;
- import java.net.URL;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Properties;
- import java.util.Vector;
- import sun.awt.image.ByteArrayImageSource;
-
- public class SimpleClassLoader extends ClassLoader {
- public static final String urlPrefix = "SIMPLE";
- private static boolean debug;
- private String cookie;
- private static Hashtable loaders = new Hashtable();
- public static SimpleClassLoader ourLoader;
- private String localResourceDirectory;
- private Hashtable localOverrides = new Hashtable();
- private Hashtable resourceHash = new Hashtable();
- private Hashtable mimeHash = new Hashtable();
- private Hashtable bytecodes = new Hashtable();
-
- public void setDefinition(String var1, byte[] var2) {
- this.bytecodes.put(var1, var2);
- }
-
- public synchronized void applyDefinitions(Vector var1) {
- String var2 = "ApplyDefinitions/START";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var2);
- }
-
- Enumeration var10 = var1.elements();
-
- while(var10.hasMoreElements()) {
- String var3 = (String)var10.nextElement();
- String var4 = "ApplyDefinitions/Considering " + var3;
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var4);
- }
-
- Class var12 = ((ClassLoader)this).findLoadedClass(var3);
- if (var12 == null) {
- boolean var7 = true;
- String var8 = "applyDefinition(" + var3 + ")";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var8);
- }
-
- byte[] var13 = (byte[])this.bytecodes.get(var3);
- if (var13 == null) {
- String var9 = " is null";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var9);
- }
-
- Object var10000 = null;
- } else {
- Class var14 = super.defineClass((String)null, var13, 0, var13.length);
- if (var14 != null && var7) {
- ((ClassLoader)this).resolveClass(var14);
- }
- }
- }
- }
-
- String var11 = "ApplyDefinitions/END";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var11);
- }
-
- }
-
- public Class loadFromFile(String var1) {
- String var2 = "loadFromFile/START";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var2);
- }
-
- try {
- FileInputStream var10 = new FileInputStream(var1);
- FileInputStream var11 = var10;
- int var6 = 0;
- byte[] var7 = new byte[512];
-
- while(true) {
- if (var6 == var7.length) {
- byte[] var8 = new byte[var7.length * 2];
- System.arraycopy(var7, 0, var8, 0, var6);
- var7 = var8;
- }
-
- int var14 = ((InputStream)var11).read(var7, var6, var7.length - var6);
- if (var14 < 0) {
- Class var12 = super.defineClass((String)null, var7, 0, var7.length);
- String var13 = "loadFromFile/END-OK";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var13);
- }
-
- if (var12 != null) {
- ((ClassLoader)this).resolveClass(var12);
- }
-
- return var12;
- }
-
- var6 += var14;
- }
- } catch (Exception var9) {
- String var5 = "LoadFromFile/caught " + var9 + " when loading from file " + var1;
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var5);
- }
-
- return null;
- }
- }
-
- public Class findClass(String var1) {
- return ((ClassLoader)this).findLoadedClass(var1);
- }
-
- protected Class loadClass(String var1, boolean var2) throws ClassNotFoundException {
- String var3 = "loadClass(" + var1 + ", " + var2 + ")";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var3);
- }
-
- Class var10 = ((ClassLoader)this).findLoadedClass(var1);
- if (var10 != null) {
- if (var10 == null) {
- throw new ClassNotFoundException(var1);
- } else {
- if (var2) {
- ((ClassLoader)this).resolveClass(var10);
- }
-
- return var10;
- }
- } else {
- String var4 = " not loaded";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var4);
- }
-
- try {
- Class var5 = ((ClassLoader)this).findSystemClass(var1);
- String var6 = " findSystemClass returned " + var5;
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var6);
- }
-
- return var5;
- } catch (ClassNotFoundException var9) {
- var4 = " will try applyDefinition";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var4);
- }
-
- String var7 = "applyDefinition(" + var1 + ")";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var7);
- }
-
- byte[] var12 = (byte[])this.bytecodes.get(var1);
- Class var10000;
- if (var12 == null) {
- String var8 = " is null";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var8);
- }
-
- var10000 = null;
- } else {
- Class var13 = super.defineClass((String)null, var12, 0, var12.length);
- if (var13 != null && var2) {
- ((ClassLoader)this).resolveClass(var13);
- }
-
- var10000 = var13;
- }
-
- return var10000;
- }
- }
- }
-
- public void setLocalResourceSource(String var1, InputStreamProducer var2) {
- this.localOverrides.put(var1, var2);
- }
-
- void putLocalResource(String var1, byte[] var2, String var3) {
- String var4 = "putLocalResource for " + var1 + " is " + var2;
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var4);
- }
-
- this.resourceHash.put(var1, var2);
- this.mimeHash.put(var1, var3);
- }
-
- public URL getResource(String var1) {
- String var2 = "getResource(" + var1 + ")";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var2);
- }
-
- URL var4 = ClassLoader.getSystemResource(var1);
- if (var4 != null) {
- String var3 = "getResource(" + var1 + "): " + var4;
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var3);
- }
-
- return var4;
- } else {
- return this.getLocalResource(var1);
- }
- }
-
- public InputStream getResourceAsStream(String var1) {
- InputStream var2 = ClassLoader.getSystemResourceAsStream(var1);
- if (var2 != null) {
- String var3 = "getResourceAsStream(" + var1 + ") is a system resource";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var3);
- }
-
- return var2;
- } else {
- return this.getLocalResourceAsStream(var1);
- }
- }
-
- public static SimpleClassLoader createLoader(String var0, String var1) {
- SimpleClassLoader var2 = (SimpleClassLoader)loaders.get(var0);
- if (var2 != null) {
- if (!var2.localResourceDirectory.equals(var1)) {
- throw new Error("internal error!");
- } else {
- return var2;
- }
- } else {
- return new SimpleClassLoader(var0, var1);
- }
- }
-
- public static Object getLocalResource(String var0, String var1) {
- String var2 = "getLocalResource(" + var0 + ", " + var1 + ")";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var2);
- }
-
- SimpleClassLoader var9 = (SimpleClassLoader)loaders.get(var0);
- Object var3 = var9.localOverrides.get(var1);
- if (var3 != null) {
- return ((InputStreamProducer)var3).getInputStream();
- } else {
- String var4 = (String)var9.mimeHash.get(var1);
- if (var4 != null) {
- byte[] var10 = (byte[])var9.resourceHash.get(var1);
- return var4.startsWith("image") ? new ByteArrayImageSource(var10) : new ByteArrayInputStream(var10);
- } else {
- if (var9.localResourceDirectory != null) {
- File var5 = new File(var9.localResourceDirectory, var1);
- if (var5.exists()) {
- try {
- URL var7 = new URL("file", (String)null, var5.getAbsolutePath());
- return var7.getContent();
- } catch (Exception var8) {
- throw new Error("no such resource");
- }
- }
- }
-
- return null;
- }
- }
- }
-
- public static InputStream getLocalResourceAsStream(String var0, String var1) {
- SimpleClassLoader var2 = (SimpleClassLoader)loaders.get(var0);
- return var2.getLocalResourceAsStream(var1);
- }
-
- static {
- Properties var0 = new Properties(System.getProperties());
- ((Hashtable)var0).put("java.protocol.handler.pkgs", var0.getProperty("java.protocol.handler.pkgs") + "|sun.beanbox");
- System.setProperties(var0);
- Object var2 = null;
- String var1 = "BeanBox";
- SimpleClassLoader var3 = (SimpleClassLoader)loaders.get(var1);
- SimpleClassLoader var10000;
- if (var3 != null) {
- if (!var3.localResourceDirectory.equals(var2)) {
- throw new Error("internal error!");
- }
-
- var10000 = var3;
- } else {
- var10000 = new SimpleClassLoader(var1, (String)var2);
- }
-
- ourLoader = var10000;
- }
-
- private SimpleClassLoader(String var1, String var2) {
- String var3 = "(" + var1 + ")";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var3);
- }
-
- this.cookie = var1;
- this.localResourceDirectory = var2;
- loaders.put(var1, this);
- }
-
- private final URL getLocalResource(String var1) {
- String var2 = "getLocalResource(" + var1 + ")";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var2);
- }
-
- Object var7 = this.localOverrides.get(var1);
- if (var7 == null) {
- String var3 = "ResourceHash check on " + var1;
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var3);
- }
-
- var7 = this.resourceHash.get(var1);
- }
-
- if (var7 == null && this.localResourceDirectory != null) {
- File var8 = new File(this.localResourceDirectory, var1);
- if (var8.exists()) {
- var7 = new Integer("1");
- }
- }
-
- if (var7 != null) {
- try {
- URL var4 = new URL("simpleresource", (String)null, "/SIMPLE" + this.cookie + "/+/" + var1);
- String var9 = " " + var4.toExternalForm();
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var9);
- }
-
- return var4;
- } catch (Exception var6) {
- String var5 = "Exception " + var6 + " while building a resource URL";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var5);
- }
-
- return null;
- }
- } else {
- return null;
- }
- }
-
- private final InputStream getLocalResourceAsStream(String var1) {
- String var2 = "getLocalResourceAsStream(" + var1 + ")";
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var2);
- }
-
- Object var6 = this.localOverrides.get(var1);
- if (var6 != null) {
- return ((InputStreamProducer)var6).getInputStream();
- } else {
- var6 = this.resourceHash.get(var1);
- if (var6 != null) {
- String var8 = "Found resource: " + var1 + " in the classloader: " + this.cookie;
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var8);
- }
-
- byte[] var9 = (byte[])var6;
- return new ByteArrayInputStream(var9);
- } else if (this.localResourceDirectory != null) {
- File var3 = new File(this.localResourceDirectory, var1);
- String var4 = "getLocalResourceAsStream for " + var1 + "? " + var3;
- if (debug) {
- System.err.println("SimpleClassLoader:: " + var4);
- }
-
- try {
- return new FileInputStream(var3);
- } catch (Exception var5) {
- return null;
- }
- } else {
- return null;
- }
- }
- }
- }
-