Class Access Restriction

To restrict class access in scripts, define a subclass of ClassLoader. For example, SystemOnlyClassLoader class below is defined to allow access only to java.lang.System class. To use this ClassLoader just call the Pnuts::setClassLoader() method.

public class SystemOnlyClassLoader extends ClassLoader {

    public Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
	if ("java.lang.System".equals(name)){
	    return findSystemClass(name);
	} else {
	    throw new ClassNotFoundException();
	}
    }
}
SystemOnlyClassLoader.java
Pnuts.setClassLoader(new SystemOnlyClassLoader());  // in Java

% pnuts
class java.lang.System     ==> java.lang.System class
class java.lang.Object     ==> ClassNotFoundException is thrown

Back