moving unit tests from .testsuite -> .beans
RequiredAnnotationBeanPostProcessor tests
This commit is contained in:
parent
ef414420c8
commit
97e400efd6
|
|
@ -0,0 +1,193 @@
|
|||
/*
|
||||
* Copyright 2002-2006 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.beans.annotation;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.BeanCreationException;
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.beans.factory.BeanFactoryAware;
|
||||
import org.springframework.beans.factory.BeanNameAware;
|
||||
import org.springframework.beans.factory.annotation.Required;
|
||||
import org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
||||
|
||||
/**
|
||||
* @author Rob Harrop
|
||||
* @author Chris Beams
|
||||
* @since 2.0
|
||||
*/
|
||||
public class RequiredAnnotationBeanPostProcessorTests {
|
||||
|
||||
@Test
|
||||
public void testWithRequiredPropertyOmitted() {
|
||||
try {
|
||||
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
|
||||
BeanDefinition beanDef = BeanDefinitionBuilder
|
||||
.genericBeanDefinition(RequiredTestBean.class)
|
||||
.addPropertyValue("name", "Rob Harrop")
|
||||
.addPropertyValue("favouriteColour", "Blue")
|
||||
.addPropertyValue("jobTitle", "Grand Poobah")
|
||||
.getBeanDefinition();
|
||||
factory.registerBeanDefinition("testBean", beanDef);
|
||||
factory.addBeanPostProcessor(new RequiredAnnotationBeanPostProcessor());
|
||||
factory.preInstantiateSingletons();
|
||||
fail("Should have thrown BeanCreationException");
|
||||
}
|
||||
catch (BeanCreationException ex) {
|
||||
String message = ex.getCause().getMessage();
|
||||
assertTrue(message.indexOf("Property") > -1);
|
||||
assertTrue(message.indexOf("age") > -1);
|
||||
assertTrue(message.indexOf("testBean") > -1);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWithThreeRequiredPropertiesOmitted() {
|
||||
try {
|
||||
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
|
||||
BeanDefinition beanDef = BeanDefinitionBuilder
|
||||
.genericBeanDefinition(RequiredTestBean.class)
|
||||
.addPropertyValue("name", "Rob Harrop")
|
||||
.getBeanDefinition();
|
||||
factory.registerBeanDefinition("testBean", beanDef);
|
||||
factory.addBeanPostProcessor(new RequiredAnnotationBeanPostProcessor());
|
||||
factory.preInstantiateSingletons();
|
||||
fail("Should have thrown BeanCreationException");
|
||||
}
|
||||
catch (BeanCreationException ex) {
|
||||
String message = ex.getCause().getMessage();
|
||||
assertTrue(message.indexOf("Properties") > -1);
|
||||
assertTrue(message.indexOf("age") > -1);
|
||||
assertTrue(message.indexOf("favouriteColour") > -1);
|
||||
assertTrue(message.indexOf("jobTitle") > -1);
|
||||
assertTrue(message.indexOf("testBean") > -1);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWithOnlyRequiredPropertiesSpecified() {
|
||||
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
|
||||
BeanDefinition beanDef = BeanDefinitionBuilder
|
||||
.genericBeanDefinition(RequiredTestBean.class)
|
||||
.addPropertyValue("age", "24")
|
||||
.addPropertyValue("favouriteColour", "Blue")
|
||||
.addPropertyValue("jobTitle", "Grand Poobah")
|
||||
.getBeanDefinition();
|
||||
factory.registerBeanDefinition("testBean", beanDef);
|
||||
factory.addBeanPostProcessor(new RequiredAnnotationBeanPostProcessor());
|
||||
factory.preInstantiateSingletons();
|
||||
RequiredTestBean bean = (RequiredTestBean) factory.getBean("testBean");
|
||||
assertEquals(24, bean.getAge());
|
||||
assertEquals("Blue", bean.getFavouriteColour());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWithCustomAnnotation() {
|
||||
try {
|
||||
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
|
||||
BeanDefinition beanDef = BeanDefinitionBuilder
|
||||
.genericBeanDefinition(RequiredTestBean.class)
|
||||
.getBeanDefinition();
|
||||
factory.registerBeanDefinition("testBean", beanDef);
|
||||
RequiredAnnotationBeanPostProcessor rabpp = new RequiredAnnotationBeanPostProcessor();
|
||||
rabpp.setRequiredAnnotationType(MyRequired.class);
|
||||
factory.addBeanPostProcessor(rabpp);
|
||||
factory.preInstantiateSingletons();
|
||||
fail("Should have thrown BeanCreationException");
|
||||
}
|
||||
catch (BeanCreationException ex) {
|
||||
String message = ex.getCause().getMessage();
|
||||
assertTrue(message.indexOf("Property") > -1);
|
||||
assertTrue(message.indexOf("name") > -1);
|
||||
assertTrue(message.indexOf("testBean") > -1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.METHOD)
|
||||
@interface MyRequired {
|
||||
}
|
||||
|
||||
|
||||
class RequiredTestBean implements BeanNameAware, BeanFactoryAware {
|
||||
|
||||
private String name;
|
||||
|
||||
private int age;
|
||||
|
||||
private String favouriteColour;
|
||||
|
||||
private String jobTitle;
|
||||
|
||||
|
||||
public int getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
@Required
|
||||
public void setAge(int age) {
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@MyRequired
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getFavouriteColour() {
|
||||
return favouriteColour;
|
||||
}
|
||||
|
||||
@Required
|
||||
public void setFavouriteColour(String favouriteColour) {
|
||||
this.favouriteColour = favouriteColour;
|
||||
}
|
||||
|
||||
public String getJobTitle() {
|
||||
return jobTitle;
|
||||
}
|
||||
|
||||
@Required
|
||||
public void setJobTitle(String jobTitle) {
|
||||
this.jobTitle = jobTitle;
|
||||
}
|
||||
|
||||
@Required
|
||||
public void setBeanName(String name) {
|
||||
}
|
||||
|
||||
@Required
|
||||
public void setBeanFactory(BeanFactory beanFactory) {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
/*
|
||||
* Copyright 2002-2006 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.beans.factory.annotation;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import java.lang.annotation.ElementType;
|
||||
|
||||
/**
|
||||
* @author Rob Harrop
|
||||
* @since 2.0
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.METHOD)
|
||||
public @interface MyRequired {
|
||||
|
||||
}
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
/*
|
||||
* Copyright 2002-2006 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.beans.factory.annotation;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.springframework.beans.factory.BeanCreationException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
|
||||
/**
|
||||
* @author Rob Harrop
|
||||
* @author Chris Beams
|
||||
* @since 2.0
|
||||
*/
|
||||
public class RequiredAnnotationBeanPostProcessorTests extends TestCase {
|
||||
|
||||
public void testWithRequiredPropertyOmitted() throws Exception {
|
||||
try {
|
||||
new ClassPathXmlApplicationContext("requiredWithOneRequiredPropertyOmitted.xml", getClass());
|
||||
fail("Should have thrown BeanCreationException");
|
||||
}
|
||||
catch (BeanCreationException ex) {
|
||||
String message = ex.getCause().getMessage();
|
||||
assertTrue(message.indexOf("Property") > -1);
|
||||
assertTrue(message.indexOf("age") > -1);
|
||||
assertTrue(message.indexOf("testBean") > -1);
|
||||
}
|
||||
}
|
||||
|
||||
public void testWithThreeRequiredPropertiesOmitted() throws Exception {
|
||||
try {
|
||||
new ClassPathXmlApplicationContext("requiredWithThreeRequiredPropertiesOmitted.xml", getClass());
|
||||
fail("Should have thrown BeanCreationException");
|
||||
}
|
||||
catch (BeanCreationException ex) {
|
||||
String message = ex.getCause().getMessage();
|
||||
assertTrue(message.indexOf("Properties") > -1);
|
||||
assertTrue(message.indexOf("age") > -1);
|
||||
assertTrue(message.indexOf("favouriteColour") > -1);
|
||||
assertTrue(message.indexOf("jobTitle") > -1);
|
||||
assertTrue(message.indexOf("testBean") > -1);
|
||||
}
|
||||
}
|
||||
|
||||
public void testWithOnlyRequiredPropertiesSpecified() throws Exception {
|
||||
ApplicationContext context =
|
||||
new ClassPathXmlApplicationContext("requiredWithAllRequiredPropertiesProvided.xml", getClass());
|
||||
RequiredTestBean bean = (RequiredTestBean) context.getBean("testBean");
|
||||
assertEquals(24, bean.getAge());
|
||||
assertEquals("Blue", bean.getFavouriteColour());
|
||||
}
|
||||
|
||||
public void testWithCustomAnnotation() throws Exception {
|
||||
try {
|
||||
new ClassPathXmlApplicationContext("requiredWithCustomAnnotation.xml", getClass());
|
||||
fail("Should have thrown BeanCreationException");
|
||||
}
|
||||
catch (BeanCreationException ex) {
|
||||
String message = ex.getCause().getMessage();
|
||||
assertTrue(message.indexOf("Property") > -1);
|
||||
assertTrue(message.indexOf("name") > -1);
|
||||
assertTrue(message.indexOf("testBean") > -1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
/*
|
||||
* Copyright 2002-2006 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.beans.factory.annotation;
|
||||
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.beans.factory.BeanFactoryAware;
|
||||
import org.springframework.beans.factory.BeanNameAware;
|
||||
|
||||
/**
|
||||
* @author Rob Harrop
|
||||
* @since 2.0
|
||||
*/
|
||||
public class RequiredTestBean implements BeanNameAware, BeanFactoryAware {
|
||||
|
||||
private String name;
|
||||
|
||||
private int age;
|
||||
|
||||
private String favouriteColour;
|
||||
|
||||
private String jobTitle;
|
||||
|
||||
|
||||
public int getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
@Required
|
||||
public void setAge(int age) {
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@MyRequired
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getFavouriteColour() {
|
||||
return favouriteColour;
|
||||
}
|
||||
|
||||
@Required
|
||||
public void setFavouriteColour(String favouriteColour) {
|
||||
this.favouriteColour = favouriteColour;
|
||||
}
|
||||
|
||||
public String getJobTitle() {
|
||||
return jobTitle;
|
||||
}
|
||||
|
||||
@Required
|
||||
public void setJobTitle(String jobTitle) {
|
||||
this.jobTitle = jobTitle;
|
||||
}
|
||||
|
||||
@Required
|
||||
public void setBeanName(String name) {
|
||||
}
|
||||
|
||||
@Required
|
||||
public void setBeanFactory(BeanFactory beanFactory) {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<?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 class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
|
||||
|
||||
<bean id="testBean" class="org.springframework.beans.factory.annotation.RequiredTestBean">
|
||||
<property name="age" value="24"/>
|
||||
<property name="favouriteColour" value="Blue"/>
|
||||
<property name="jobTitle" value="Grand Poobah"/>
|
||||
</bean>
|
||||
|
||||
</beans>
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<?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 class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor">
|
||||
<property name="requiredAnnotationType" value="org.springframework.beans.factory.annotation.MyRequired"/>
|
||||
</bean>
|
||||
|
||||
<bean id="testBean" class="org.springframework.beans.factory.annotation.RequiredTestBean"/>
|
||||
|
||||
</beans>
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<?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 class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
|
||||
|
||||
<bean id="testBean" class="org.springframework.beans.factory.annotation.RequiredTestBean">
|
||||
<property name="name" value="Rob Harrop"/>
|
||||
<property name="favouriteColour" value="Blue"/>
|
||||
<property name="jobTitle" value="Grand Poobah"/>
|
||||
</bean>
|
||||
|
||||
</beans>
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<?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 class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
|
||||
|
||||
<bean id="testBean" class="org.springframework.beans.factory.annotation.RequiredTestBean">
|
||||
<property name="name" value="Rob Harrop"/>
|
||||
</bean>
|
||||
|
||||
</beans>
|
||||
Loading…
Reference in New Issue