Browse Source

moving unit tests from .testsuite -> .beans

RequiredAnnotationBeanPostProcessor tests
pull/23217/head
Chris Beams 17 years ago
parent
commit
97e400efd6
  1. 193
      org.springframework.beans/src/test/java/org/springframework/beans/annotation/RequiredAnnotationBeanPostProcessorTests.java
  2. 32
      org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/MyRequired.java
  3. 81
      org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/RequiredAnnotationBeanPostProcessorTests.java
  4. 82
      org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/RequiredTestBean.java
  5. 14
      org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithAllRequiredPropertiesProvided.xml
  6. 12
      org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithCustomAnnotation.xml
  7. 14
      org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithOneRequiredPropertyOmitted.xml
  8. 12
      org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithThreeRequiredPropertiesOmitted.xml

193
org.springframework.beans/src/test/java/org/springframework/beans/annotation/RequiredAnnotationBeanPostProcessorTests.java

@ -0,0 +1,193 @@ @@ -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) {
}
}

32
org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/MyRequired.java

@ -1,32 +0,0 @@ @@ -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 {
}

81
org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/RequiredAnnotationBeanPostProcessorTests.java

@ -1,81 +0,0 @@ @@ -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);
}
}
}

82
org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/RequiredTestBean.java

@ -1,82 +0,0 @@ @@ -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) {
}
}

14
org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithAllRequiredPropertiesProvided.xml

@ -1,14 +0,0 @@ @@ -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>

12
org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithCustomAnnotation.xml

@ -1,12 +0,0 @@ @@ -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>

14
org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithOneRequiredPropertyOmitted.xml

@ -1,14 +0,0 @@ @@ -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>

12
org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithThreeRequiredPropertiesOmitted.xml

@ -1,12 +0,0 @@ @@ -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…
Cancel
Save