Lines 1-6
Link Here
|
|
|
1 |
|
1 |
public aspect Pr113368 { |
2 |
public aspect Pr113368 { |
2 |
|
3 |
|
3 |
private pointcut managedBeanConstruction(ManagedBean bean) : |
4 |
public static void main(String[] args) { |
|
|
5 |
aspectOf().hook(); |
6 |
} |
7 |
|
8 |
void hook() {} |
9 |
|
10 |
private pointcut managedBeanConstruction(ManagedBean bean) : |
4 |
execution(ManagedBean+.new(..)) && this(bean); |
11 |
execution(ManagedBean+.new(..)) && this(bean); |
5 |
|
12 |
|
6 |
//NPE's on the if pointcut below |
13 |
//NPE's on the if pointcut below |
Lines 9-36
Link Here
|
9 |
if(thisJoinPointStaticPart.getSignature().getDeclaringType() == bean.getClass()); |
16 |
if(thisJoinPointStaticPart.getSignature().getDeclaringType() == bean.getClass()); |
10 |
|
17 |
|
11 |
after(ManagedBean bean) returning: topLevelManagedBeanConstruction(bean) { |
18 |
after(ManagedBean bean) returning: topLevelManagedBeanConstruction(bean) { |
12 |
System.out.println("I just constructed " + bean); |
19 |
System.out.println("I just constructed " + bean); |
13 |
} |
|
|
14 |
|
15 |
public static void main(String[] args) { |
16 |
new ManagedBean("super-bean"); |
17 |
new ManagedSubBean(); |
18 |
} |
20 |
} |
19 |
|
21 |
|
20 |
} |
22 |
} |
21 |
|
23 |
|
22 |
class ManagedBean { |
24 |
abstract aspect ManagedBean { |
23 |
|
|
|
24 |
public ManagedBean(String s) { |
25 |
System.out.println(s); |
26 |
} |
27 |
} |
25 |
} |
28 |
|
26 |
|
29 |
|
27 |
|
30 |
class ManagedSubBean extends ManagedBean { |
28 |
aspect ManagedSubBean extends ManagedBean { |
31 |
|
29 |
|
32 |
public ManagedSubBean() { |
30 |
before() : execution(* hook()) { |
33 |
super("sub-bean"); |
31 |
} |
34 |
} |
32 |
|
35 |
|
33 |
} |
36 |
} |
34 |
|
|
|
35 |
aspect AutoStart { |
36 |
before() : staticinitialization(ManagedBean) { |
37 |
ManagedSubBean.aspectOf(); |
38 |
} |
39 |
} |