aboutsummaryrefslogtreecommitdiffstats
path: root/tests/new/privilegedAspects/driver/UnprivilegedAspect.java
blob: 7a2c1283fcb85525eb396162296b947f79acab52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package driver;

// import pack.DefaultTarget; // does not work - ok 
import pack.PublicTarget; 

/**
 * This is a copy of PrivilegedAspect, but without the privilege.
 * It is an error test for unprivileged access to target classes
 * esp. when compiled at the same time as PrivilegedAspect.
 * todo: remove this case or render manageable.
 */
// Keep in sync with PrivilegedAspect
public aspect UnprivilegedAspect {
    /** run all other static methods 
     * @param args ignored */
    public static void main(String[] args) {
        readPublicTarget();
        readPublicInnerTarget();
        readDefaultTarget();
        readDefaultInnerTarget();
    }

    /** in public class 
     * read static and instance fields and 
     * invoke methods, both of all access types 
     */
    public static void readPublicTarget() {
        Class c = PublicTarget.class;
        int i = 0;
        i += PublicTarget.publicStaticInt;
        i += PublicTarget.protectedStaticInt;
        i += PublicTarget.defaultStaticInt;
        i += PublicTarget.privateStaticInt;
        PublicTarget publicTarget = new PublicTarget();
        i += publicTarget.publicInt;
        i += publicTarget.protectedInt;
        i += publicTarget.defaultInt;
        i += publicTarget. privateInt;
        publicTarget.publicMethod(); 
        publicTarget.protectedMethod();
        publicTarget.defaultMethod();
        publicTarget.privateMethod();
    }

    /** in public inner class 
     * read static and instance fields and 
     * invoke methods, both of all access types 
     */
    public static void readPublicInnerTarget() {
        Class c = PublicTarget.PublicInner.class;
        int i = 0;
        i += PublicTarget.PublicInner.publicStaticPublicInnerInt;
        i += PublicTarget.PublicInner.protectedStaticPublicInnerInt;
        i += PublicTarget.PublicInner.defaultStaticPublicInnerInt;
        i += PublicTarget.PublicInner.privateStaticPublicInnerInt;
        PublicTarget.PublicInner publicInnerTarget 
            = new PublicTarget().new PublicInner();
        i += publicInnerTarget.publicPublicInnerInt;
        i += publicInnerTarget.protectedPublicInnerInt;
        i += publicInnerTarget.defaultPublicInnerInt;
        i += publicInnerTarget. privatePublicInnerInt;
        publicInnerTarget.publicPublicInnerMethod(); 
        publicInnerTarget.protectedPublicInnerMethod();
        publicInnerTarget.defaultPublicInnerMethod();
        publicInnerTarget.privatePublicInnerMethod();
    }

    /** in class with default access 
     * read static and instance fields and 
     * invoke methods, both of all access types 
     */
    public static void readDefaultTarget() {
        Class c = pack.DefaultTarget.class;
        int i = 0;
        i += pack.DefaultTarget.publicStaticInt;
        i += pack.DefaultTarget.protectedStaticInt;
        i += pack.DefaultTarget.defaultStaticInt;
        i += pack.DefaultTarget.privateStaticInt;
        pack.DefaultTarget defaultTarget = new pack.DefaultTarget();
        i += defaultTarget.publicInt;
        i += defaultTarget.protectedInt;
        i += defaultTarget.defaultInt;
        i += defaultTarget. privateInt;
        defaultTarget.publicMethod(); 
        defaultTarget.protectedMethod();
        defaultTarget.defaultMethod();
        defaultTarget.privateMethod();
    }

    /** in inner class with default access 
     * read static and instance fields and 
     * invoke methods, both of all access types 
     */
    public static void readDefaultInnerTarget() {
        Class c = pack.DefaultTarget.DefaultInner.class;
        int i = 0;
        i += pack.DefaultTarget.DefaultInner.publicStaticDefaultInnerInt;
        i += pack.DefaultTarget.DefaultInner.protectedStaticDefaultInnerInt;
        i += pack.DefaultTarget.DefaultInner.defaultStaticDefaultInnerInt;
        i += pack.DefaultTarget.DefaultInner.privateStaticDefaultInnerInt;
        pack.DefaultTarget.DefaultInner defaultInnerTarget 
            = new pack.DefaultTarget().new DefaultInner();
        i += defaultInnerTarget.publicDefaultInnerInt;
        i += defaultInnerTarget.protectedDefaultInnerInt;
        i += defaultInnerTarget.defaultDefaultInnerInt;
        i += defaultInnerTarget.privateDefaultInnerInt;
        defaultInnerTarget.publicDefaultInnerMethod(); 
        defaultInnerTarget.protectedDefaultInnerMethod();
        defaultInnerTarget.defaultDefaultInnerMethod();
        defaultInnerTarget.privateDefaultInnerMethod();
    }
}