1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.onami.factoryannotation;
20
21 import java.security.AccessController;
22 import java.security.PrivilegedAction;
23
24 class PrivilegedHelper<T>
25 implements PrivilegedAction<T>
26 {
27
28 private final Class<T> clazz;
29
30 private final PrivilegedHelperCallback<T> callback;
31
32 public PrivilegedHelper( final Class<T> clazz, final PrivilegedHelperCallback<T> callback )
33 {
34
35 this.clazz = clazz;
36 this.callback = callback;
37 }
38
39 public T run()
40 {
41 return callback.execute( clazz );
42 }
43
44 public static final <T> T executePrivileged( final Class<T> clazz, final PrivilegedHelperCallback<T> callback )
45 {
46
47 return AccessController.doPrivileged( new PrivilegedHelper<T>( clazz, callback ) );
48 }
49
50 static interface PrivilegedHelperCallback<T>
51 {
52
53 T execute( Class<T> clazz );
54
55 }
56
57 }