wrapper java.lang.Class {
// This version of the java.lang.Class pfi just disallows dynamic class
// loading completely. A riskier version allows dynamic class loading,
// but transforms classes according to the policy as they are loaded by
// running Naccio during the load. We aren't confident enough to
// use the dynamic loading version on the public web server just yet...
wrapper static Class forName (String className) {
NCheck.fatalViolation (NCheck.concat ("Attempt to load class dynamically: ", className));
#;
}
wrapper Object newInstance () {
NCheck.fatalViolation ("Not handled: java.lang.Class.newInstance");
#;
}
// wrapper String getName () - should have a wrapper that strips policy prefixes
wrapper java.lang.reflect.Field [] getFields () {
RJavaClass.accessPublicFields (this);
NCheck.fatalViolation ("getFields unprotected!");
#;
}
wrapper java.lang.reflect.Method [] getMethods () {
RJavaClass.accessPublicMethods (this);
NCheck.fatalViolation ("getFields unprotected!");
#;
}
wrapper java.lang.reflect.Constructor [] getConstructors () {
RJavaClass.accessPublicConstructors (this);
NCheck.fatalViolation ("getFields unprotected!");
#;
}
wrapper java.lang.reflect.Field getField (String name) {
RJavaClass.accessPublicField (this, name);
NCheck.fatalViolation ("getFields unprotected!");
#;
}
wrapper java.lang.reflect.Method getMethod (String name, Class[] parameterTypes) {
RJavaClass.accessPublicMethod (this, name, parameterTypes);
NCheck.fatalViolation ("getFields unprotected!");
#;
}
wrapper java.lang.reflect.Constructor getConstructor (Class[] parameterTypes) {
RJavaClass.accessPublicConstructor (this, parameterTypes);
NCheck.fatalViolation ("getFields unprotected!");
#;
}
wrapper Class [] getDeclaredClasses () {
NCheck.fatalViolation ("getDeclaredClasses!");
#;
}
wrapper java.lang.reflect.Field [] getDeclaredFields () {
RJavaClass.accessDeclaredFields (this);
NCheck.violation ("getFields unprotected!");
#;
}
wrapper java.lang.reflect.Method [] getDeclaredMethods () {
RJavaClass.accessDeclaredMethods (this);
NCheck.violation ("getFields unprotected!");
#;
}
wrapper java.lang.reflect.Constructor [] getDeclaredConstructors () {
RJavaClass.accessDeclaredConstructors (this);
NCheck.violation ("getFields unprotected!");
#;
}
wrapper java.lang.reflect.Field getDeclaredField (String name) {
RJavaClass.accessDeclaredField (this, name);
NCheck.violation ("getFields unprotected!");
#
}
wrapper java.lang.reflect.Method getDeclaredMethod (String name, Class[] parameterTypes) {
RJavaClass.accessDeclaredMethod (this, name, parameterTypes);
NCheck.violation ("getFields unprotected!");
#
}
wrapper java.lang.reflect.Constructor getDeclaredConstructor (Class[] parameterTypes) {
RJavaClass.accessDeclaredConstructor (this, parameterTypes);
NCheck.violation ("getFields unprotected!");
#
}
wrapper java.io.InputStream getResourceAsStream (String name) {
NCheck.fatalViolation ("Not handled: java.lang.Class.getResourceAsStream");
#
}
wrapper java.net.URL getResource (String name) {
NCheck.fatalViolation ("Not handled: java.lang.Class.getResource");
#
}
}
Naccio Home Page
University of Virginia, Computer Science