11 |
|
import java.io.ByteArrayOutputStream; |
12 |
|
import java.io.ObjectInputStream; |
13 |
|
import java.io.ObjectOutputStream; |
14 |
+ |
import java.util.ArrayList; |
15 |
|
import java.util.Arrays; |
16 |
|
import java.util.Date; |
17 |
+ |
import java.util.Enumeration; |
18 |
+ |
import java.util.List; |
19 |
|
import java.util.NoSuchElementException; |
20 |
|
import java.util.PropertyPermission; |
21 |
|
import java.util.concurrent.*; |
145 |
|
} |
146 |
|
|
147 |
|
/** |
148 |
< |
* Runs all JSR166 unit tests using junit.textui.TestRunner |
148 |
> |
* Runs all JSR166 unit tests using junit.textui.TestRunner. |
149 |
> |
* Optional command line arg provides the number of iterations to |
150 |
> |
* repeat running the tests. |
151 |
|
*/ |
152 |
|
public static void main(String[] args) { |
153 |
|
if (useSecurityManager) { |
512 |
|
} |
513 |
|
|
514 |
|
/** |
515 |
+ |
* A debugging tool to print all stack traces, as jstack does. |
516 |
+ |
*/ |
517 |
+ |
void printAllStackTraces() { |
518 |
+ |
System.err.println( |
519 |
+ |
Arrays.toString( |
520 |
+ |
java.lang.management.ManagementFactory.getThreadMXBean() |
521 |
+ |
.dumpAllThreads(true, true))); |
522 |
+ |
} |
523 |
+ |
|
524 |
+ |
/** |
525 |
|
* Checks that thread does not terminate within the default |
526 |
|
* millisecond delay of {@code timeoutMillis()}. |
527 |
|
*/ |
638 |
|
SecurityManager sm = System.getSecurityManager(); |
639 |
|
if (sm == null) { |
640 |
|
r.run(); |
641 |
+ |
} |
642 |
+ |
runWithSecurityManagerWithPermissions(r, permissions); |
643 |
+ |
} |
644 |
+ |
|
645 |
+ |
/** |
646 |
+ |
* Runs Runnable r with a security policy that permits precisely |
647 |
+ |
* the specified permissions. If there is no current security |
648 |
+ |
* manager, a temporary one is set for the duration of the |
649 |
+ |
* Runnable. We require that any security manager permit |
650 |
+ |
* getPolicy/setPolicy. |
651 |
+ |
*/ |
652 |
+ |
public void runWithSecurityManagerWithPermissions(Runnable r, |
653 |
+ |
Permission... permissions) { |
654 |
+ |
SecurityManager sm = System.getSecurityManager(); |
655 |
+ |
if (sm == null) { |
656 |
|
Policy savedPolicy = Policy.getPolicy(); |
657 |
|
try { |
658 |
|
Policy.setPolicy(permissivePolicy()); |
659 |
|
System.setSecurityManager(new SecurityManager()); |
660 |
< |
runWithPermissions(r, permissions); |
660 |
> |
runWithSecurityManagerWithPermissions(r, permissions); |
661 |
|
} finally { |
662 |
|
System.setSecurityManager(null); |
663 |
|
Policy.setPolicy(savedPolicy); |
705 |
|
return perms.implies(p); |
706 |
|
} |
707 |
|
public void refresh() {} |
708 |
+ |
public String toString() { |
709 |
+ |
List<Permission> ps = new ArrayList<Permission>(); |
710 |
+ |
for (Enumeration<Permission> e = perms.elements(); e.hasMoreElements();) |
711 |
+ |
ps.add(e.nextElement()); |
712 |
+ |
return "AdjustablePolicy with permissions " + ps; |
713 |
+ |
} |
714 |
|
} |
715 |
|
|
716 |
|
/** |