| import other.Blort; |
| |
| public class Main { |
| static public boolean VERBOSE = false; |
| |
| static public void main(String[] args) { |
| if (args.length > 0) { |
| if (args[0].equals("--verbose")) { |
| VERBOSE = true; |
| } |
| } |
| |
| System.out.println("Setting SecurityManager."); |
| System.setSecurityManager(Enforcer.THE_ONE); |
| System.out.println("Running tests."); |
| accessStuff(); |
| System.out.println("\nDone!"); |
| } |
| |
| static public void report(Throwable t) { |
| if (VERBOSE) { |
| t.printStackTrace(System.out); |
| } else { |
| System.out.println(t); |
| } |
| } |
| |
| static public void accessStuff() { |
| Class c = other.Blort.class; |
| |
| /* |
| * Note: We don't use reflection to factor out these tests, |
| * becuase reflection also calls into the SecurityManager, and |
| * we don't want to conflate the calls nor assume too much |
| * in general about what calls reflection will cause. |
| */ |
| |
| System.out.println("\ngetFields A"); |
| try { |
| c.getFields(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("getFields B"); |
| Enforcer.THE_ONE.denyNext(); |
| try { |
| c.getFields(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("\ngetDeclaredFields A"); |
| try { |
| c.getDeclaredFields(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("getDeclaredFields B"); |
| Enforcer.THE_ONE.denyNext(); |
| try { |
| c.getDeclaredFields(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("\ngetMethods A"); |
| try { |
| c.getMethods(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("getMethods B"); |
| Enforcer.THE_ONE.denyNext(); |
| try { |
| c.getMethods(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("\ngetDeclaredMethods A"); |
| try { |
| c.getDeclaredMethods(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("getDeclaredMethods B"); |
| Enforcer.THE_ONE.denyNext(); |
| try { |
| c.getDeclaredMethods(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("\ngetConstructors A"); |
| try { |
| c.getConstructors(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("getConstructors B"); |
| Enforcer.THE_ONE.denyNext(); |
| try { |
| c.getConstructors(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("\ngetDeclaredConstructors A"); |
| try { |
| c.getDeclaredConstructors(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("getDeclaredConstructors B"); |
| Enforcer.THE_ONE.denyNext(); |
| try { |
| c.getDeclaredConstructors(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("\ngetClasses A"); |
| try { |
| c.getClasses(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("getClasses B"); |
| Enforcer.THE_ONE.denyNext(); |
| try { |
| c.getClasses(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("\ngetDeclaredClasses A"); |
| try { |
| c.getDeclaredClasses(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| |
| System.out.println("getDeclaredClasses B"); |
| Enforcer.THE_ONE.denyNext(); |
| try { |
| c.getDeclaredClasses(); |
| } catch (Exception ex) { |
| report(ex); |
| } |
| } |
| } |