diff --git a/org.springframework.beans/src/test/java/org/springframework/beans/annotation/RequiredAnnotationBeanPostProcessorTests.java b/org.springframework.beans/src/test/java/org/springframework/beans/annotation/RequiredAnnotationBeanPostProcessorTests.java
new file mode 100644
index 00000000000..3b4fbc6af51
--- /dev/null
+++ b/org.springframework.beans/src/test/java/org/springframework/beans/annotation/RequiredAnnotationBeanPostProcessorTests.java
@@ -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) {
+ }
+
+}
diff --git a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/MyRequired.java b/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/MyRequired.java
deleted file mode 100644
index 94d898d961a..00000000000
--- a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/MyRequired.java
+++ /dev/null
@@ -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 {
-
-}
diff --git a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/RequiredAnnotationBeanPostProcessorTests.java b/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/RequiredAnnotationBeanPostProcessorTests.java
deleted file mode 100644
index cdc2db943a1..00000000000
--- a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/RequiredAnnotationBeanPostProcessorTests.java
+++ /dev/null
@@ -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);
- }
- }
-
-}
diff --git a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/RequiredTestBean.java b/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/RequiredTestBean.java
deleted file mode 100644
index ef78b1c17ff..00000000000
--- a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/RequiredTestBean.java
+++ /dev/null
@@ -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) {
- }
-
-}
diff --git a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithAllRequiredPropertiesProvided.xml b/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithAllRequiredPropertiesProvided.xml
deleted file mode 100644
index 93e04df03b5..00000000000
--- a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithAllRequiredPropertiesProvided.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithCustomAnnotation.xml b/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithCustomAnnotation.xml
deleted file mode 100644
index a643c8917a2..00000000000
--- a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithCustomAnnotation.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithOneRequiredPropertyOmitted.xml b/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithOneRequiredPropertyOmitted.xml
deleted file mode 100644
index 3eb2e3c2e37..00000000000
--- a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithOneRequiredPropertyOmitted.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithThreeRequiredPropertiesOmitted.xml b/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithThreeRequiredPropertiesOmitted.xml
deleted file mode 100644
index 872361c5f4b..00000000000
--- a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/annotation/requiredWithThreeRequiredPropertiesOmitted.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-