1 import other.Blort; 2 3 public class Main { 4 static public boolean VERBOSE = false; 5 main(String[] args)6 static public void main(String[] args) { 7 if (args.length > 0) { 8 if (args[0].equals("--verbose")) { 9 VERBOSE = true; 10 } 11 } 12 13 System.out.println("Setting SecurityManager."); 14 System.setSecurityManager(Enforcer.THE_ONE); 15 System.out.println("Running tests."); 16 accessStuff(); 17 System.out.println("\nDone!"); 18 } 19 report(Throwable t)20 static public void report(Throwable t) { 21 if (VERBOSE) { 22 t.printStackTrace(System.out); 23 } else { 24 System.out.println(t); 25 } 26 } 27 accessStuff()28 static public void accessStuff() { 29 Class c = other.Blort.class; 30 31 /* 32 * Note: We don't use reflection to factor out these tests, 33 * becuase reflection also calls into the SecurityManager, and 34 * we don't want to conflate the calls nor assume too much 35 * in general about what calls reflection will cause. 36 */ 37 38 System.out.println("\ngetFields A"); 39 try { 40 c.getFields(); 41 } catch (Exception ex) { 42 report(ex); 43 } 44 45 System.out.println("getFields B"); 46 Enforcer.THE_ONE.denyNext(); 47 try { 48 c.getFields(); 49 } catch (Exception ex) { 50 report(ex); 51 } 52 53 System.out.println("\ngetDeclaredFields A"); 54 try { 55 c.getDeclaredFields(); 56 } catch (Exception ex) { 57 report(ex); 58 } 59 60 System.out.println("getDeclaredFields B"); 61 Enforcer.THE_ONE.denyNext(); 62 try { 63 c.getDeclaredFields(); 64 } catch (Exception ex) { 65 report(ex); 66 } 67 68 System.out.println("\ngetMethods A"); 69 try { 70 c.getMethods(); 71 } catch (Exception ex) { 72 report(ex); 73 } 74 75 System.out.println("getMethods B"); 76 Enforcer.THE_ONE.denyNext(); 77 try { 78 c.getMethods(); 79 } catch (Exception ex) { 80 report(ex); 81 } 82 83 System.out.println("\ngetDeclaredMethods A"); 84 try { 85 c.getDeclaredMethods(); 86 } catch (Exception ex) { 87 report(ex); 88 } 89 90 System.out.println("getDeclaredMethods B"); 91 Enforcer.THE_ONE.denyNext(); 92 try { 93 c.getDeclaredMethods(); 94 } catch (Exception ex) { 95 report(ex); 96 } 97 98 System.out.println("\ngetConstructors A"); 99 try { 100 c.getConstructors(); 101 } catch (Exception ex) { 102 report(ex); 103 } 104 105 System.out.println("getConstructors B"); 106 Enforcer.THE_ONE.denyNext(); 107 try { 108 c.getConstructors(); 109 } catch (Exception ex) { 110 report(ex); 111 } 112 113 System.out.println("\ngetDeclaredConstructors A"); 114 try { 115 c.getDeclaredConstructors(); 116 } catch (Exception ex) { 117 report(ex); 118 } 119 120 System.out.println("getDeclaredConstructors B"); 121 Enforcer.THE_ONE.denyNext(); 122 try { 123 c.getDeclaredConstructors(); 124 } catch (Exception ex) { 125 report(ex); 126 } 127 128 System.out.println("\ngetClasses A"); 129 try { 130 c.getClasses(); 131 } catch (Exception ex) { 132 report(ex); 133 } 134 135 System.out.println("getClasses B"); 136 Enforcer.THE_ONE.denyNext(); 137 try { 138 c.getClasses(); 139 } catch (Exception ex) { 140 report(ex); 141 } 142 143 System.out.println("\ngetDeclaredClasses A"); 144 try { 145 c.getDeclaredClasses(); 146 } catch (Exception ex) { 147 report(ex); 148 } 149 150 System.out.println("getDeclaredClasses B"); 151 Enforcer.THE_ONE.denyNext(); 152 try { 153 c.getDeclaredClasses(); 154 } catch (Exception ex) { 155 report(ex); 156 } 157 } 158 } 159