|
|
|
|
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
|
|
|
|
/* |
|
|
|
|
* Copyright 2002-2019 the original author or authors. |
|
|
|
|
* Copyright 2002-2022 the original author or authors. |
|
|
|
|
* |
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
|
@ -16,6 +16,7 @@
@@ -16,6 +16,7 @@
|
|
|
|
|
|
|
|
|
|
package org.springframework.test.util; |
|
|
|
|
|
|
|
|
|
import org.junit.jupiter.api.Nested; |
|
|
|
|
import org.junit.jupiter.api.Test; |
|
|
|
|
|
|
|
|
|
import org.springframework.aop.framework.ProxyFactory; |
|
|
|
|
@ -37,91 +38,98 @@ class AopTestUtilsTests {
@@ -37,91 +38,98 @@ class AopTestUtilsTests {
|
|
|
|
|
private final FooImpl foo = new FooImpl(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getTargetObjectForNull() { |
|
|
|
|
assertThatIllegalArgumentException().isThrownBy(() -> |
|
|
|
|
getTargetObject(null)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getTargetObjectForNonProxiedObject() { |
|
|
|
|
Foo target = getTargetObject(foo); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getTargetObjectWrappedInSingleJdkDynamicProxy() { |
|
|
|
|
Foo target = getTargetObject(jdkProxy(foo)); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getTargetObjectWrappedInSingleCglibProxy() { |
|
|
|
|
Foo target = getTargetObject(cglibProxy(foo)); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getTargetObjectWrappedInDoubleJdkDynamicProxy() { |
|
|
|
|
Foo target = getTargetObject(jdkProxy(jdkProxy(foo))); |
|
|
|
|
assertThat(target).isNotSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getTargetObjectWrappedInDoubleCglibProxy() { |
|
|
|
|
Foo target = getTargetObject(cglibProxy(cglibProxy(foo))); |
|
|
|
|
assertThat(target).isNotSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectForNull() { |
|
|
|
|
assertThatIllegalArgumentException().isThrownBy(() -> |
|
|
|
|
getUltimateTargetObject(null)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectForNonProxiedObject() { |
|
|
|
|
Foo target = getUltimateTargetObject(foo); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectWrappedInSingleJdkDynamicProxy() { |
|
|
|
|
Foo target = getUltimateTargetObject(jdkProxy(foo)); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectWrappedInSingleCglibProxy() { |
|
|
|
|
Foo target = getUltimateTargetObject(cglibProxy(foo)); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectWrappedInDoubleJdkDynamicProxy() { |
|
|
|
|
Foo target = getUltimateTargetObject(jdkProxy(jdkProxy(foo))); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectWrappedInDoubleCglibProxy() { |
|
|
|
|
Foo target = getUltimateTargetObject(cglibProxy(cglibProxy(foo))); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectWrappedInCglibProxyWrappedInJdkDynamicProxy() { |
|
|
|
|
Foo target = getUltimateTargetObject(jdkProxy(cglibProxy(foo))); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectWrappedInCglibProxyWrappedInDoubleJdkDynamicProxy() { |
|
|
|
|
Foo target = getUltimateTargetObject(jdkProxy(jdkProxy(cglibProxy(foo)))); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Foo jdkProxy(Foo foo) { |
|
|
|
|
@Nested |
|
|
|
|
class GetTargetObject { |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getTargetObjectForNull() { |
|
|
|
|
assertThatIllegalArgumentException().isThrownBy(() -> getTargetObject(null)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getTargetObjectForNonProxiedObject() { |
|
|
|
|
Foo target = getTargetObject(foo); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getTargetObjectWrappedInSingleJdkDynamicProxy() { |
|
|
|
|
Foo target = getTargetObject(jdkProxy(foo)); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getTargetObjectWrappedInSingleCglibProxy() { |
|
|
|
|
Foo target = getTargetObject(cglibProxy(foo)); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getTargetObjectWrappedInDoubleJdkDynamicProxy() { |
|
|
|
|
Foo target = getTargetObject(jdkProxy(jdkProxy(foo))); |
|
|
|
|
assertThat(target).isNotSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getTargetObjectWrappedInDoubleCglibProxy() { |
|
|
|
|
Foo target = getTargetObject(cglibProxy(cglibProxy(foo))); |
|
|
|
|
assertThat(target).isNotSameAs(foo); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Nested |
|
|
|
|
class GetUltimateTargetObject { |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectForNull() { |
|
|
|
|
assertThatIllegalArgumentException().isThrownBy(() -> getUltimateTargetObject(null)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectForNonProxiedObject() { |
|
|
|
|
Foo target = getUltimateTargetObject(foo); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectWrappedInSingleJdkDynamicProxy() { |
|
|
|
|
Foo target = getUltimateTargetObject(jdkProxy(foo)); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectWrappedInSingleCglibProxy() { |
|
|
|
|
Foo target = getUltimateTargetObject(cglibProxy(foo)); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectWrappedInDoubleJdkDynamicProxy() { |
|
|
|
|
Foo target = getUltimateTargetObject(jdkProxy(jdkProxy(foo))); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectWrappedInDoubleCglibProxy() { |
|
|
|
|
Foo target = getUltimateTargetObject(cglibProxy(cglibProxy(foo))); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectWrappedInCglibProxyWrappedInJdkDynamicProxy() { |
|
|
|
|
Foo target = getUltimateTargetObject(jdkProxy(cglibProxy(foo))); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void getUltimateTargetObjectWrappedInCglibProxyWrappedInDoubleJdkDynamicProxy() { |
|
|
|
|
Foo target = getUltimateTargetObject(jdkProxy(jdkProxy(cglibProxy(foo)))); |
|
|
|
|
assertThat(target).isSameAs(foo); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static Foo jdkProxy(Foo foo) { |
|
|
|
|
ProxyFactory pf = new ProxyFactory(); |
|
|
|
|
pf.setTarget(foo); |
|
|
|
|
pf.addInterface(Foo.class); |
|
|
|
|
@ -131,7 +139,7 @@ class AopTestUtilsTests {
@@ -131,7 +139,7 @@ class AopTestUtilsTests {
|
|
|
|
|
return proxy; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Foo cglibProxy(Foo foo) { |
|
|
|
|
private static Foo cglibProxy(Foo foo) { |
|
|
|
|
ProxyFactory pf = new ProxyFactory(); |
|
|
|
|
pf.setTarget(foo); |
|
|
|
|
pf.setProxyTargetClass(true); |
|
|
|
|
|