FileDocCategorySizeDatePackage
JavaRunnerLoader.javaAPI DocExample3506Sun Oct 25 18:13:34 GMT 1998None

JavaRunnerLoader

public class JavaRunnerLoader extends SecureClassLoader

Fields Summary
protected URL
urlBase
public boolean
printLoadMessages
CodeSource
cs
static int
groupNum
ThreadGroup
threadGroup
Constructors Summary
public JavaRunnerLoader(String base, ClassLoader cl)


	     
		super(cl);
		try {
			if (!(base.endsWith("/")))
				base = base + "/";
			urlBase = new URL(base);
		} catch (Exception e) {
			throw new IllegalArgumentException(base);
		}
		cs = new CodeSource(urlBase, null);
	
Methods Summary
public voidcheckPackageAccess(java.lang.String name)

		SecurityManager sm = System.getSecurityManager();
		if (sm != null)
			sm.checkPackageAccess(name);
	
protected java.lang.ClassfindClass(java.lang.String name)

		String urlName = name.replace('.", '/");
		byte buf[];
		Class cl;

		SecurityManager sm = System.getSecurityManager();
		if (sm != null) {
			int i = name.lastIndexOf('.");
			if (i >= 0)
				sm.checkPackageDefinition(name.substring(0, i));
		}
		try {
			URL url = new URL(urlBase, urlName + ".class");
			if (printLoadMessages)
				System.out.println("Loading " + url);
			InputStream is = url.openConnection().getInputStream();
			buf = getClassBytes(is);
			// Starting in 1.2 beta 4, the signature of this method has
			// changed
			// cl = defineClass(name, buf, 0, buf.length, cs, null);
			cl = defineClass(name, buf, 0, buf.length, cs);
			return cl;
		} catch (Exception e) {
			System.out.println("Can't load " + name + ": " + e);
			return null;
		}
	
private byte[]getClassBytes(java.io.InputStream is)

		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		BufferedInputStream bis = new BufferedInputStream(is);
		boolean eof = false;
		while (!eof) {
			try {
				int i = bis.read();
				if (i == -1)
					eof = true;
				else baos.write(i);
			} catch (IOException e) {
				return null;
			}
		}
		return baos.toByteArray();
	
java.lang.StringgetHost()

		return urlBase.getHost();
	
java.lang.ThreadGroupgetThreadGroup()

		if (threadGroup == null)
			threadGroup = new ThreadGroup("JavaRunner ThreadGroup-" + groupNum++);
		return threadGroup;