<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<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"/>
	</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>
	</bean>

	<bean id="doubleJdkBeanNameProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
	  <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>
	  <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>
				<value>nopInterceptor</value>
				<value>countingBeforeAdvice</value>
			</list>
		</property>
	</bean>

	<bean id="introductionBeanNameProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<description>
			Illustrates a JDK introduction
		</description>
	  <property name="beanNames"><value>*introductionUsingJdk</value></property>
	  <property name="interceptorNames">
			<list>
				<value>introductionNopInterceptor</value>
				<value>timestampIntroduction</value>
				<value>lockableAdvisor</value>
			</list>
	  </property>
	</bean>

	<bean id="timestampIntroduction" class="test.advice.TimestampIntroductionAdvisor"/>

	<!--
		Stateful mixin. Note that singleton property is false.
	-->
	<bean id="lockableAdvisor" class="test.mixin.LockMixinAdvisor"
			scope="prototype"/>

	<bean id="countingBeforeAdvice" class="test.advice.CountingBeforeAdvice"/>

	<bean id="nopInterceptor" class="test.interceptor.NopInterceptor"/>

	<bean id="introductionNopInterceptor" class="test.interceptor.NopInterceptor"/>

	<bean id="introductionUsingJdk" class="org.springframework.beans.TestBean">
		<property name="name"><value>introductionUsingJdk</value></property>
	</bean>

	<bean id="second-introductionUsingJdk" class="org.springframework.beans.TestBean">	
		<property name="name"><value>second-introductionUsingJdk</value></property>
	</bean>

	<!--
		Lazy only because it breaks other tests until this test is fixed
	-->
	<bean id="factory-introductionUsingJdk" class="org.springframework.aop.framework.autoproxy.CreatesTestBean"
			lazy-init="true">
	</bean>

	<bean id="jdk1" class="org.springframework.beans.TestBean">	
		<property name="name"><value>jdk1</value></property>
	</bean>

	<bean id="frozenBean" class="org.springframework.beans.TestBean">
		<property name="name" value="frozenBean"/>
	</bean>

	<bean id="cglib1" class="org.springframework.beans.TestBean">	
		<property name="name"><value>cglib1</value></property>
	</bean>

	<bean id="onlyJdk" class="org.springframework.beans.TestBean">	
		<property name="name"><value>onlyJdk</value></property>
	</bean>

	<bean id="doubleJdk" class="org.springframework.beans.TestBean">
		<property name="name"><value>doubleJdk</value></property>
	</bean>

	<bean id="noproxy" class="org.springframework.beans.TestBean">	
		<property name="name"><value>noproxy</value></property>
	</bean>

</beans>		
