Platform Interface: java.lang.Class

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");
    #
  }

  
}

About this file

Naccio Home Page
David Evans
University of Virginia, Computer Science