Polishing

This commit is contained in:
Sam Brannen 2020-05-11 14:59:49 +02:00
parent 14e249aee3
commit a07dc80d72
2 changed files with 36 additions and 63 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2019 the original author or authors.
* Copyright 2002-2020 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,7 +16,6 @@
package org.springframework.aop.framework.autoproxy;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import test.mixin.Lockable;
import test.mixin.LockedException;
@ -40,42 +39,36 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
* @author Rob Harrop
* @author Chris Beams
*/
public class BeanNameAutoProxyCreatorTests {
class BeanNameAutoProxyCreatorTests {
private BeanFactory beanFactory;
@BeforeEach
public void setup() {
// Note that we need an ApplicationContext, not just a BeanFactory,
// for post-processing and hence auto-proxying to work.
beanFactory = new ClassPathXmlApplicationContext(getClass().getSimpleName() + "-context.xml", getClass());
}
// Note that we need an ApplicationContext, not just a BeanFactory,
// for post-processing and hence auto-proxying to work.
private final BeanFactory beanFactory = new ClassPathXmlApplicationContext(getClass().getSimpleName() + "-context.xml", getClass());
@Test
public void testNoProxy() {
void noProxy() {
TestBean tb = (TestBean) beanFactory.getBean("noproxy");
assertThat(AopUtils.isAopProxy(tb)).isFalse();
assertThat(tb.getName()).isEqualTo("noproxy");
}
@Test
public void testJdkProxyWithExactNameMatch() {
void proxyWithExactNameMatch() {
ITestBean tb = (ITestBean) beanFactory.getBean("onlyJdk");
jdkAssertions(tb, 1);
assertThat(tb.getName()).isEqualTo("onlyJdk");
}
@Test
public void testJdkProxyWithDoubleProxying() {
void proxyWithDoubleProxying() {
ITestBean tb = (ITestBean) beanFactory.getBean("doubleJdk");
jdkAssertions(tb, 2);
assertThat(tb.getName()).isEqualTo("doubleJdk");
}
@Test
public void testJdkIntroduction() {
void jdkIntroduction() {
ITestBean tb = (ITestBean) beanFactory.getBean("introductionUsingJdk");
NopInterceptor nop = (NopInterceptor) beanFactory.getBean("introductionNopInterceptor");
assertThat(nop.getCount()).isEqualTo(0);
@ -110,7 +103,7 @@ public class BeanNameAutoProxyCreatorTests {
}
@Test
public void testJdkIntroductionAppliesToCreatedObjectsNotFactoryBean() {
void jdkIntroductionAppliesToCreatedObjectsNotFactoryBean() {
ITestBean tb = (ITestBean) beanFactory.getBean("factory-introductionUsingJdk");
NopInterceptor nop = (NopInterceptor) beanFactory.getBean("introductionNopInterceptor");
assertThat(nop.getCount()).as("NOP should not have done any work yet").isEqualTo(0);
@ -118,8 +111,7 @@ public class BeanNameAutoProxyCreatorTests {
int age = 5;
tb.setAge(age);
assertThat(tb.getAge()).isEqualTo(age);
boolean condition = tb instanceof TimeStamped;
assertThat(condition).as("Introduction was made").isTrue();
assertThat(tb).as("Introduction was made").isInstanceOf(TimeStamped.class);
assertThat(((TimeStamped) tb).getTimeStamp()).isEqualTo(0);
assertThat(nop.getCount()).isEqualTo(3);
@ -144,21 +136,21 @@ public class BeanNameAutoProxyCreatorTests {
}
@Test
public void testJdkProxyWithWildcardMatch() {
void proxyWithWildcardMatch() {
ITestBean tb = (ITestBean) beanFactory.getBean("jdk1");
jdkAssertions(tb, 1);
assertThat(tb.getName()).isEqualTo("jdk1");
}
@Test
public void testCglibProxyWithWildcardMatch() {
void cglibProxyWithWildcardMatch() {
TestBean tb = (TestBean) beanFactory.getBean("cglib1");
cglibAssertions(tb);
assertThat(tb.getName()).isEqualTo("cglib1");
}
@Test
public void testWithFrozenProxy() {
void withFrozenProxy() {
ITestBean testBean = (ITestBean) beanFactory.getBean("frozenBean");
assertThat(((Advised)testBean).isFrozen()).isTrue();
}
@ -195,25 +187,16 @@ public class BeanNameAutoProxyCreatorTests {
class CreatesTestBean implements FactoryBean<Object> {
/**
* @see org.springframework.beans.factory.FactoryBean#getObject()
*/
@Override
public Object getObject() throws Exception {
return new TestBean();
}
/**
* @see org.springframework.beans.factory.FactoryBean#getObjectType()
*/
@Override
public Class<?> getObjectType() {
return TestBean.class;
}
/**
* @see org.springframework.beans.factory.FactoryBean#isSingleton()
*/
@Override
public boolean isSingleton() {
return true;

View File

@ -4,38 +4,28 @@
<beans>
<bean id="frozenProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames" value="frozenBean"/>
<property name="frozen" value="true"/>
<property name="interceptorNames" value="nopInterceptor"/>
<property name="beanNames" value="frozenBean" />
<property name="frozen" value="true" />
<property name="interceptorNames" value="nopInterceptor" />
</bean>
<bean id="_jdkBeanNameProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<description>
Automatically proxies using JDK dynamic proxies
</description>
<property name="beanNames"><value>jdk*,onlyJdk,doubleJdk</value></property>
<property name="interceptorNames">
<list>
<value>nopInterceptor</value>
</list>
</property>
<description>Automatically proxies using JDK dynamic proxies</description>
<property name="beanNames" value="jdk*,onlyJdk,doubleJdk" />
<property name="interceptorNames" value="nopInterceptor" />
</bean>
<bean id="doubleJdkBeanNameProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames" value="doubleJdk"/>
<property name="interceptorNames" value="nopInterceptor"/>
<property name="beanNames" value="doubleJdk" />
<property name="interceptorNames" value="nopInterceptor" />
</bean>
<bean id="_cglibBeanNameProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<value>
cglib*
</value>
<property name="beanNames" value="cglib*" />
<property name="proxyTargetClass">
<description>Use the inherited ProxyConfig property to force CGLIB proxying</description>
<value>true</value>
</property>
<property name="proxyTargetClass">
<description>Use the inherited ProxyConfig property to force CGLIB proxying</description>
<value>true</value>
</property>
<property name="interceptorNames">
<description>Interceptors and Advisors to apply automatically</description>
<list>
@ -49,14 +39,14 @@
<description>
Illustrates a JDK introduction
</description>
<property name="beanNames"><value>*introductionUsingJdk</value></property>
<property name="interceptorNames">
<property name="beanNames" value="*introductionUsingJdk" />
<property name="interceptorNames">
<list>
<value>introductionNopInterceptor</value>
<value>timestampIntroduction</value>
<value>lockableAdvisor</value>
</list>
</property>
</property>
</bean>
<bean id="timestampIntroduction" class="org.springframework.aop.testfixture.advice.TimestampIntroductionAdvisor"/>
@ -74,11 +64,11 @@
<bean id="introductionNopInterceptor" class="org.springframework.aop.testfixture.interceptor.NopInterceptor"/>
<bean id="introductionUsingJdk" class="org.springframework.beans.testfixture.beans.TestBean">
<property name="name"><value>introductionUsingJdk</value></property>
<property name="name" value="introductionUsingJdk" />
</bean>
<bean id="second-introductionUsingJdk" class="org.springframework.beans.testfixture.beans.TestBean">
<property name="name"><value>second-introductionUsingJdk</value></property>
<property name="name" value="second-introductionUsingJdk" />
</bean>
<!--
@ -89,7 +79,7 @@
</bean>
<bean id="jdk1" class="org.springframework.beans.testfixture.beans.TestBean">
<property name="name"><value>jdk1</value></property>
<property name="name" value="jdk1" />
</bean>
<bean id="frozen" class="org.springframework.beans.testfixture.beans.TestBean">
@ -99,19 +89,19 @@
<alias name="frozen" alias="frozenBean"/>
<bean id="cglib1" class="org.springframework.beans.testfixture.beans.TestBean">
<property name="name"><value>cglib1</value></property>
<property name="name" value="cglib1" />
</bean>
<bean id="onlyJdk" class="org.springframework.beans.testfixture.beans.TestBean">
<property name="name"><value>onlyJdk</value></property>
<property name="name" value="onlyJdk" />
</bean>
<bean id="doubleJdk" class="org.springframework.beans.testfixture.beans.TestBean">
<property name="name"><value>doubleJdk</value></property>
<property name="name" value="doubleJdk" />
</bean>
<bean id="noproxy" class="org.springframework.beans.testfixture.beans.TestBean">
<property name="name"><value>noproxy</value></property>
<property name="name" value="noproxy" />
</bean>
</beans>