2424import org .junit .runner .RunWith ;
2525import org .mockito .Mock ;
2626import org .mockito .junit .MockitoJUnitRunner ;
27+ import org .springframework .aop .SpringProxy ;
2728import org .springframework .aop .framework .AdvisedSupport ;
2829
2930import static org .hamcrest .core .Is .is ;
@@ -48,18 +49,69 @@ public void setUp() {
4849 }
4950
5051 @ Test
51- public void testInterceptNormalObject () throws Throwable {
52- doReturn (Object .class ).when (advisedSupport ).getTargetClass ();
52+ public void testInterceptClassImplementsNoInterfaces () throws Throwable {
53+ // doReturn(Object.class).when(advisedSupport).getTargetClass();
54+ // doReturn(Object.class.getInterfaces()).when(advisedSupport).getProxiedInterfaces();
55+ assertThat (true , is (interceptor .afterMethod (enhancedInstance , null , new Object [] {advisedSupport }, new Class [] {Object .class }, true )));
56+ }
57+
58+ @ Test
59+ public void testInterceptClassImplementsUserSuppliedInterface () throws Throwable {
60+ doReturn (MockClassImplementsUserSuppliedInterface .class ).when (advisedSupport ).getTargetClass ();
61+ doReturn (MockClassImplementsUserSuppliedInterface .class .getInterfaces ()).when (advisedSupport ).getProxiedInterfaces ();
5362 assertThat (false , is (interceptor .afterMethod (enhancedInstance , null , new Object [] {advisedSupport }, new Class [] {Object .class }, false )));
5463 }
5564
5665 @ Test
57- public void testInterceptEnhanceInstanceObject () throws Throwable {
58- doReturn (MockClass .class ).when (advisedSupport ).getTargetClass ();
66+ public void testInterceptClassImplementsSpringProxy () throws Throwable {
67+ // doReturn(MockClassImplementsSpringProxy.class).when(advisedSupport).getTargetClass();
68+ // doReturn(MockClassImplementsSpringProxy.class.getInterfaces()).when(advisedSupport).getProxiedInterfaces();
69+ assertThat (true , is (interceptor .afterMethod (enhancedInstance , null , new Object [] {advisedSupport }, new Class [] {Object .class }, true )));
70+ }
71+
72+ @ Test
73+ public void testInterceptClassImplementsEnhancedInstance () throws Throwable {
74+ doReturn (MockClassImplementsEnhancedInstance .class ).when (advisedSupport ).getTargetClass ();
75+ doReturn (MockClassImplementsEnhancedInstance .class .getInterfaces ()).when (advisedSupport ).getProxiedInterfaces ();
5976 assertThat (true , is (interceptor .afterMethod (enhancedInstance , null , new Object [] {advisedSupport }, new Class [] {Object .class }, false )));
6077 }
6178
62- private class MockClass implements EnhancedInstance {
79+ @ Test
80+ public void testClassImplementsEnhancedInstanceAndUserSuppliedInterface () throws Throwable {
81+ doReturn (MockClassImplementsSpringProxyAndUserSuppliedInterface .class ).when (advisedSupport ).getTargetClass ();
82+ doReturn (MockClassImplementsSpringProxyAndUserSuppliedInterface .class .getInterfaces ()).when (advisedSupport ).getProxiedInterfaces ();
83+ assertThat (false , is (interceptor .afterMethod (enhancedInstance , null , new Object [] {advisedSupport }, new Class [] {Object .class }, false )));
84+ }
85+
86+ @ Test
87+ public void testInterceptClassImplementsSpringProxyAndEnhancedInstance () throws Throwable {
88+ doReturn (MockClassImplementsSpringProxyAndEnhancedInstance .class ).when (advisedSupport ).getTargetClass ();
89+ doReturn (MockClassImplementsSpringProxyAndEnhancedInstance .class .getInterfaces ()).when (advisedSupport ).getProxiedInterfaces ();
90+ assertThat (true , is (interceptor .afterMethod (enhancedInstance , null , new Object [] {advisedSupport }, new Class [] {Object .class }, false )));
91+ }
92+
93+ @ Test
94+ public void testInterceptClassImplementsSpringProxyAndUserSuppliedInterface () throws Throwable {
95+ doReturn (MockClassImplementsSpringProxyAndUserSuppliedInterface .class ).when (advisedSupport ).getTargetClass ();
96+ doReturn (MockClassImplementsSpringProxyAndUserSuppliedInterface .class .getInterfaces ()).when (advisedSupport ).getProxiedInterfaces ();
97+ assertThat (false , is (interceptor .afterMethod (enhancedInstance , null , new Object [] {advisedSupport }, new Class [] {Object .class }, false )));
98+ }
99+
100+ @ Test
101+ public void testInterceptClassImplementsEnhancedInstanceAndUserSuppliedInterface () throws Throwable {
102+ doReturn (MockClassImplementsEnhancedInstanceAndUserSuppliedInterface .class ).when (advisedSupport ).getTargetClass ();
103+ doReturn (MockClassImplementsEnhancedInstanceAndUserSuppliedInterface .class .getInterfaces ()).when (advisedSupport ).getProxiedInterfaces ();
104+ assertThat (false , is (interceptor .afterMethod (enhancedInstance , null , new Object [] {advisedSupport }, new Class [] {Object .class }, false )));
105+ }
106+
107+ @ Test
108+ public void testInterceptClassImplementsSpringProxyAndEnhancedInstanceAndUserSuppliedInterface () throws Throwable {
109+ doReturn (MockClassImplementsSpringProxyAndEnhancedInstanceAndUserSuppliedInterface .class ).when (advisedSupport ).getTargetClass ();
110+ doReturn (MockClassImplementsSpringProxyAndEnhancedInstanceAndUserSuppliedInterface .class .getInterfaces ()).when (advisedSupport ).getProxiedInterfaces ();
111+ assertThat (false , is (interceptor .afterMethod (enhancedInstance , null , new Object [] {advisedSupport }, new Class [] {Object .class }, false )));
112+ }
113+
114+ private class MockClassImplementsEnhancedInstance implements EnhancedInstance {
63115
64116 @ Override
65117 public Object getSkyWalkingDynamicField () {
@@ -72,4 +124,81 @@ public void setSkyWalkingDynamicField(Object value) {
72124 }
73125 }
74126
127+ private class MockClassImplementsUserSuppliedInterface implements UserSuppliedInterface {
128+
129+ @ Override
130+ public void methodOfUserSuppliedInterface () {
131+
132+ }
133+
134+ }
135+
136+ private class MockClassImplementsSpringProxy implements SpringProxy {
137+
138+ }
139+
140+ private class MockClassImplementsSpringProxyAndEnhancedInstance implements EnhancedInstance , SpringProxy {
141+
142+ @ Override
143+ public Object getSkyWalkingDynamicField () {
144+ return null ;
145+ }
146+
147+ @ Override
148+ public void setSkyWalkingDynamicField (Object value ) {
149+
150+ }
151+
152+ }
153+
154+ private class MockClassImplementsEnhancedInstanceAndUserSuppliedInterface implements EnhancedInstance , UserSuppliedInterface {
155+
156+ @ Override
157+ public Object getSkyWalkingDynamicField () {
158+ return null ;
159+ }
160+
161+ @ Override
162+ public void setSkyWalkingDynamicField (Object value ) {
163+
164+ }
165+
166+ @ Override
167+ public void methodOfUserSuppliedInterface () {
168+ }
169+
170+ }
171+
172+ private class MockClassImplementsSpringProxyAndUserSuppliedInterface implements SpringProxy , UserSuppliedInterface {
173+
174+ @ Override
175+ public void methodOfUserSuppliedInterface () {
176+ }
177+
178+ }
179+
180+ private class MockClassImplementsSpringProxyAndEnhancedInstanceAndUserSuppliedInterface implements EnhancedInstance , SpringProxy , UserSuppliedInterface {
181+
182+ @ Override
183+ public Object getSkyWalkingDynamicField () {
184+ return null ;
185+ }
186+
187+ @ Override
188+ public void setSkyWalkingDynamicField (Object value ) {
189+
190+ }
191+
192+ @ Override
193+ public void methodOfUserSuppliedInterface () {
194+ }
195+
196+ }
197+
198+ interface UserSuppliedInterface {
199+
200+ void methodOfUserSuppliedInterface ();
201+
202+ }
203+
75204}
0 commit comments