Polish AopProxyUtilsTests
This commit is contained in:
parent
b560c10d4c
commit
2a0b3c1af9
|
@ -17,8 +17,6 @@
|
||||||
package org.springframework.aop.framework;
|
package org.springframework.aop.framework;
|
||||||
|
|
||||||
import java.lang.reflect.Proxy;
|
import java.lang.reflect.Proxy;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
@ -30,107 +28,84 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
|
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Tests for {@link AopProxyUtils}.
|
||||||
|
*
|
||||||
* @author Rod Johnson
|
* @author Rod Johnson
|
||||||
* @author Chris Beams
|
* @author Chris Beams
|
||||||
* @author Sam Brannen
|
* @author Sam Brannen
|
||||||
*/
|
*/
|
||||||
public class AopProxyUtilsTests {
|
class AopProxyUtilsTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCompleteProxiedInterfacesWorksWithNull() {
|
void completeProxiedInterfacesWorksWithNull() {
|
||||||
AdvisedSupport as = new AdvisedSupport();
|
AdvisedSupport as = new AdvisedSupport();
|
||||||
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
|
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
|
||||||
assertThat(completedInterfaces.length).isEqualTo(2);
|
assertThat(completedInterfaces).containsExactly(SpringProxy.class, Advised.class);
|
||||||
List<?> ifaces = Arrays.asList(completedInterfaces);
|
|
||||||
assertThat(ifaces.contains(Advised.class)).isTrue();
|
|
||||||
assertThat(ifaces.contains(SpringProxy.class)).isTrue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCompleteProxiedInterfacesWorksWithNullOpaque() {
|
void completeProxiedInterfacesWorksWithNullOpaque() {
|
||||||
AdvisedSupport as = new AdvisedSupport();
|
AdvisedSupport as = new AdvisedSupport();
|
||||||
as.setOpaque(true);
|
as.setOpaque(true);
|
||||||
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
|
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
|
||||||
assertThat(completedInterfaces.length).isEqualTo(1);
|
assertThat(completedInterfaces).containsExactly(SpringProxy.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCompleteProxiedInterfacesAdvisedNotIncluded() {
|
void completeProxiedInterfacesAdvisedNotIncluded() {
|
||||||
AdvisedSupport as = new AdvisedSupport();
|
AdvisedSupport as = new AdvisedSupport();
|
||||||
as.addInterface(ITestBean.class);
|
as.addInterface(ITestBean.class);
|
||||||
as.addInterface(Comparable.class);
|
as.addInterface(Comparable.class);
|
||||||
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
|
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
|
||||||
assertThat(completedInterfaces.length).isEqualTo(4);
|
assertThat(completedInterfaces).containsExactly(
|
||||||
|
ITestBean.class, Comparable.class, SpringProxy.class, Advised.class);
|
||||||
// Can't assume ordering for others, so use a list
|
|
||||||
List<?> l = Arrays.asList(completedInterfaces);
|
|
||||||
assertThat(l.contains(Advised.class)).isTrue();
|
|
||||||
assertThat(l.contains(ITestBean.class)).isTrue();
|
|
||||||
assertThat(l.contains(Comparable.class)).isTrue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCompleteProxiedInterfacesAdvisedIncluded() {
|
void completeProxiedInterfacesAdvisedIncluded() {
|
||||||
AdvisedSupport as = new AdvisedSupport();
|
AdvisedSupport as = new AdvisedSupport();
|
||||||
as.addInterface(ITestBean.class);
|
|
||||||
as.addInterface(Comparable.class);
|
|
||||||
as.addInterface(Advised.class);
|
as.addInterface(Advised.class);
|
||||||
|
as.addInterface(ITestBean.class);
|
||||||
|
as.addInterface(Comparable.class);
|
||||||
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
|
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
|
||||||
assertThat(completedInterfaces.length).isEqualTo(4);
|
assertThat(completedInterfaces).containsExactly(
|
||||||
|
Advised.class, ITestBean.class, Comparable.class, SpringProxy.class);
|
||||||
// Can't assume ordering for others, so use a list
|
|
||||||
List<?> l = Arrays.asList(completedInterfaces);
|
|
||||||
assertThat(l.contains(Advised.class)).isTrue();
|
|
||||||
assertThat(l.contains(ITestBean.class)).isTrue();
|
|
||||||
assertThat(l.contains(Comparable.class)).isTrue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCompleteProxiedInterfacesAdvisedNotIncludedOpaque() {
|
void completeProxiedInterfacesAdvisedNotIncludedOpaque() {
|
||||||
AdvisedSupport as = new AdvisedSupport();
|
AdvisedSupport as = new AdvisedSupport();
|
||||||
as.setOpaque(true);
|
as.setOpaque(true);
|
||||||
as.addInterface(ITestBean.class);
|
as.addInterface(ITestBean.class);
|
||||||
as.addInterface(Comparable.class);
|
as.addInterface(Comparable.class);
|
||||||
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
|
Class<?>[] completedInterfaces = AopProxyUtils.completeProxiedInterfaces(as);
|
||||||
assertThat(completedInterfaces.length).isEqualTo(3);
|
assertThat(completedInterfaces).containsExactly(ITestBean.class, Comparable.class, SpringProxy.class);
|
||||||
|
|
||||||
// Can't assume ordering for others, so use a list
|
|
||||||
List<?> l = Arrays.asList(completedInterfaces);
|
|
||||||
assertThat(l.contains(Advised.class)).isFalse();
|
|
||||||
assertThat(l.contains(ITestBean.class)).isTrue();
|
|
||||||
assertThat(l.contains(Comparable.class)).isTrue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProxiedUserInterfacesWithSingleInterface() {
|
void proxiedUserInterfacesWithSingleInterface() {
|
||||||
ProxyFactory pf = new ProxyFactory();
|
ProxyFactory pf = new ProxyFactory();
|
||||||
pf.setTarget(new TestBean());
|
pf.setTarget(new TestBean());
|
||||||
pf.addInterface(ITestBean.class);
|
pf.addInterface(ITestBean.class);
|
||||||
Object proxy = pf.getProxy();
|
Class<?>[] userInterfaces = AopProxyUtils.proxiedUserInterfaces(pf.getProxy());
|
||||||
Class<?>[] userInterfaces = AopProxyUtils.proxiedUserInterfaces(proxy);
|
assertThat(userInterfaces).containsExactly(ITestBean.class);
|
||||||
assertThat(userInterfaces.length).isEqualTo(1);
|
|
||||||
assertThat(userInterfaces[0]).isEqualTo(ITestBean.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProxiedUserInterfacesWithMultipleInterfaces() {
|
void proxiedUserInterfacesWithMultipleInterfaces() {
|
||||||
ProxyFactory pf = new ProxyFactory();
|
ProxyFactory pf = new ProxyFactory();
|
||||||
pf.setTarget(new TestBean());
|
pf.setTarget(new TestBean());
|
||||||
pf.addInterface(ITestBean.class);
|
pf.addInterface(ITestBean.class);
|
||||||
pf.addInterface(Comparable.class);
|
pf.addInterface(Comparable.class);
|
||||||
Object proxy = pf.getProxy();
|
Class<?>[] userInterfaces = AopProxyUtils.proxiedUserInterfaces(pf.getProxy());
|
||||||
Class<?>[] userInterfaces = AopProxyUtils.proxiedUserInterfaces(proxy);
|
assertThat(userInterfaces).containsExactly(ITestBean.class, Comparable.class);
|
||||||
assertThat(userInterfaces.length).isEqualTo(2);
|
|
||||||
assertThat(userInterfaces[0]).isEqualTo(ITestBean.class);
|
|
||||||
assertThat(userInterfaces[1]).isEqualTo(Comparable.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProxiedUserInterfacesWithNoInterface() {
|
void proxiedUserInterfacesWithNoInterface() {
|
||||||
Object proxy = Proxy.newProxyInstance(getClass().getClassLoader(), new Class[0],
|
Object proxy = Proxy.newProxyInstance(getClass().getClassLoader(), new Class[0],
|
||||||
(proxy1, method, args) -> null);
|
(proxy1, method, args) -> null);
|
||||||
assertThatIllegalArgumentException().isThrownBy(() ->
|
assertThatIllegalArgumentException().isThrownBy(() -> AopProxyUtils.proxiedUserInterfaces(proxy));
|
||||||
AopProxyUtils.proxiedUserInterfaces(proxy));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue