@@ -102,15 +102,55 @@ public void testNoTarget() {
102
102
@ Test
103
103
public void testProtectedMethodInvocation () {
104
104
ProtectedMethodTestBean bean = new ProtectedMethodTestBean ();
105
+ bean .value = "foo" ;
105
106
mockTargetSource .setTarget (bean );
106
107
107
108
AdvisedSupport as = new AdvisedSupport (new Class <?>[]{});
108
109
as .setTargetSource (mockTargetSource );
109
110
as .addAdvice (new NopInterceptor ());
110
111
AopProxy aop = new CglibAopProxy (as );
111
112
112
- Object proxy = aop .getProxy ();
113
+ ProtectedMethodTestBean proxy = ( ProtectedMethodTestBean ) aop .getProxy ();
113
114
assertTrue (AopUtils .isCglibProxy (proxy ));
115
+ assertEquals (proxy .getClass ().getClassLoader (), bean .getClass ().getClassLoader ());
116
+ assertEquals ("foo" , proxy .getString ());
117
+ }
118
+
119
+ @ Test
120
+ public void testPackageMethodInvocation () {
121
+ PackageMethodTestBean bean = new PackageMethodTestBean ();
122
+ bean .value = "foo" ;
123
+ mockTargetSource .setTarget (bean );
124
+
125
+ AdvisedSupport as = new AdvisedSupport (new Class <?>[]{});
126
+ as .setTargetSource (mockTargetSource );
127
+ as .addAdvice (new NopInterceptor ());
128
+ AopProxy aop = new CglibAopProxy (as );
129
+
130
+ PackageMethodTestBean proxy = (PackageMethodTestBean ) aop .getProxy ();
131
+ assertTrue (AopUtils .isCglibProxy (proxy ));
132
+ assertEquals (proxy .getClass ().getClassLoader (), bean .getClass ().getClassLoader ());
133
+ assertEquals ("foo" , proxy .getString ());
134
+ }
135
+
136
+ @ Test
137
+ public void testPackageMethodInvocationWithDifferentClassLoader () {
138
+ ClassLoader child = new ClassLoader (getClass ().getClassLoader ()) {
139
+ };
140
+
141
+ PackageMethodTestBean bean = new PackageMethodTestBean ();
142
+ bean .value = "foo" ;
143
+ mockTargetSource .setTarget (bean );
144
+
145
+ AdvisedSupport as = new AdvisedSupport (new Class <?>[]{});
146
+ as .setTargetSource (mockTargetSource );
147
+ as .addAdvice (new NopInterceptor ());
148
+ AopProxy aop = new CglibAopProxy (as );
149
+
150
+ PackageMethodTestBean proxy = (PackageMethodTestBean ) aop .getProxy (child );
151
+ assertTrue (AopUtils .isCglibProxy (proxy ));
152
+ assertNotEquals (proxy .getClass ().getClassLoader (), bean .getClass ().getClassLoader ());
153
+ assertNull (proxy .getString ()); // we're stuck in the proxy instance
114
154
}
115
155
116
156
@ Test
@@ -410,54 +450,59 @@ public void doTest() throws Exception {
410
450
}
411
451
412
452
413
- public static class HasFinalMethod {
453
+ public static class NoArgCtorTestBean {
454
+
455
+ private boolean called = false ;
414
456
415
- public final void foo () {
457
+ public NoArgCtorTestBean (String x , int y ) {
458
+ called = true ;
459
+ }
460
+
461
+ public boolean wasCalled () {
462
+ return called ;
463
+ }
464
+
465
+ public void reset () {
466
+ called = false ;
416
467
}
417
468
}
418
- }
419
469
420
470
421
- class CglibTestBean {
471
+ public static class ProtectedMethodTestBean {
422
472
423
- private String name ;
473
+ public String value ;
424
474
425
- public CglibTestBean () {
426
- setName ("Some Default" );
475
+ protected String getString () {
476
+ return this .value ;
477
+ }
427
478
}
428
479
429
- public void setName (String name ) {
430
- this .name = name ;
431
- }
432
480
433
- public String getName () {
434
- return this .name ;
481
+ public static class PackageMethodTestBean {
482
+
483
+ public String value ;
484
+
485
+ String getString () {
486
+ return this .value ;
487
+ }
435
488
}
436
489
}
437
490
438
491
439
- class NoArgCtorTestBean {
440
-
441
- private boolean called = false ;
492
+ class CglibTestBean {
442
493
443
- public NoArgCtorTestBean (String x , int y ) {
444
- called = true ;
445
- }
494
+ private String name ;
446
495
447
- public boolean wasCalled () {
448
- return called ;
496
+ public CglibTestBean () {
497
+ setName ( "Some Default" ) ;
449
498
}
450
499
451
- public void reset ( ) {
452
- called = false ;
500
+ public void setName ( String name ) {
501
+ this . name = name ;
453
502
}
454
- }
455
-
456
503
457
- class ProtectedMethodTestBean {
458
-
459
- protected String getString () {
460
- return "foo" ;
504
+ public String getName () {
505
+ return this .name ;
461
506
}
462
507
}
463
508
0 commit comments