From d904bcbf03c3f7971c050af0baa07303e14bb238 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Sat, 18 Jun 2011 19:58:53 +0000 Subject: [PATCH] [SPR-8386] AnnotationConfigContextLoader now only considers static inner classes annotated with @Configuration when generating default configuration classes. --- ...AnnotatedFooConfigInnerClassTestCase.java} | 5 ++- .../AnnotationConfigContextLoaderTests.java | 26 +++++++++---- ...ontextConfigurationInnerClassTestCase.java | 3 ++ ...ainVanillaFooConfigInnerClassTestCase.java | 39 +++++++++++++++++++ 4 files changed, 65 insertions(+), 8 deletions(-) rename org.springframework.test/src/test/java/org/springframework/test/context/support/{FooConfigInnerClassTestCase.java => AnnotatedFooConfigInnerClassTestCase.java} (87%) create mode 100644 org.springframework.test/src/test/java/org/springframework/test/context/support/PlainVanillaFooConfigInnerClassTestCase.java diff --git a/org.springframework.test/src/test/java/org/springframework/test/context/support/FooConfigInnerClassTestCase.java b/org.springframework.test/src/test/java/org/springframework/test/context/support/AnnotatedFooConfigInnerClassTestCase.java similarity index 87% rename from org.springframework.test/src/test/java/org/springframework/test/context/support/FooConfigInnerClassTestCase.java rename to org.springframework.test/src/test/java/org/springframework/test/context/support/AnnotatedFooConfigInnerClassTestCase.java index 29becd58b24..d44ce27d960 100644 --- a/org.springframework.test/src/test/java/org/springframework/test/context/support/FooConfigInnerClassTestCase.java +++ b/org.springframework.test/src/test/java/org/springframework/test/context/support/AnnotatedFooConfigInnerClassTestCase.java @@ -20,10 +20,13 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** + * Not an actual test case. + * * @author Sam Brannen * @since 3.1 + * @see AnnotationConfigContextLoaderTests */ -public class FooConfigInnerClassTestCase { +public class AnnotatedFooConfigInnerClassTestCase { @Configuration static class FooConfig { diff --git a/org.springframework.test/src/test/java/org/springframework/test/context/support/AnnotationConfigContextLoaderTests.java b/org.springframework.test/src/test/java/org/springframework/test/context/support/AnnotationConfigContextLoaderTests.java index 5000796f99e..636bed78d36 100644 --- a/org.springframework.test/src/test/java/org/springframework/test/context/support/AnnotationConfigContextLoaderTests.java +++ b/org.springframework.test/src/test/java/org/springframework/test/context/support/AnnotationConfigContextLoaderTests.java @@ -32,19 +32,31 @@ public class AnnotationConfigContextLoaderTests { private final AnnotationConfigContextLoader contextLoader = new AnnotationConfigContextLoader(); - @Test - public void generateDefaultConfigurationClassesWithFailure() { - Class[] defaultLocations = contextLoader.generateDefaultConfigurationClasses(FooConfigInnerClassTestCase.class); - assertNotNull(defaultLocations); - assertEquals("FooConfigInnerClassTestCase.FooConfig should NOT be found", 0, defaultLocations.length); - } + // Developer's note: AnnotationConfigContextLoader currently generates a + // default config class named exactly ContextConfiguration, which is a + // static inner class of the test class itself. @Test - public void generateDefaultConfigurationClassesWithSuccess() { + public void generateDefaultConfigurationClassesForAnnotatedInnerClassNamedContextConfiguration() { Class[] defaultLocations = contextLoader.generateDefaultConfigurationClasses(ContextConfigurationInnerClassTestCase.class); assertNotNull(defaultLocations); assertEquals("ContextConfigurationInnerClassTestCase.ContextConfiguration should be found", 1, defaultLocations.length); } + @Test + public void generateDefaultConfigurationClassesForAnnotatedInnerClass() { + Class[] defaultLocations = contextLoader.generateDefaultConfigurationClasses(AnnotatedFooConfigInnerClassTestCase.class); + assertNotNull(defaultLocations); + assertEquals("AnnotatedFooConfigInnerClassTestCase.FooConfig should NOT be found", 0, defaultLocations.length); + } + + @Test + public void generateDefaultConfigurationClassesForNonAnnotatedInnerClass() { + Class[] defaultLocations = contextLoader.generateDefaultConfigurationClasses(PlainVanillaFooConfigInnerClassTestCase.class); + assertNotNull(defaultLocations); + assertEquals("PlainVanillaFooConfigInnerClassTestCase.FooConfig should NOT be found", 0, + defaultLocations.length); + } + } diff --git a/org.springframework.test/src/test/java/org/springframework/test/context/support/ContextConfigurationInnerClassTestCase.java b/org.springframework.test/src/test/java/org/springframework/test/context/support/ContextConfigurationInnerClassTestCase.java index 631d140646c..54734f15c52 100644 --- a/org.springframework.test/src/test/java/org/springframework/test/context/support/ContextConfigurationInnerClassTestCase.java +++ b/org.springframework.test/src/test/java/org/springframework/test/context/support/ContextConfigurationInnerClassTestCase.java @@ -20,8 +20,11 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** + * Not an actual test case. + * * @author Sam Brannen * @since 3.1 + * @see AnnotationConfigContextLoaderTests */ public class ContextConfigurationInnerClassTestCase { diff --git a/org.springframework.test/src/test/java/org/springframework/test/context/support/PlainVanillaFooConfigInnerClassTestCase.java b/org.springframework.test/src/test/java/org/springframework/test/context/support/PlainVanillaFooConfigInnerClassTestCase.java new file mode 100644 index 00000000000..0588ff037ce --- /dev/null +++ b/org.springframework.test/src/test/java/org/springframework/test/context/support/PlainVanillaFooConfigInnerClassTestCase.java @@ -0,0 +1,39 @@ +/* + * Copyright 2011 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.test.context.support; + +import org.springframework.context.annotation.Bean; + +/** + * Not an actual test case. + * + * @author Sam Brannen + * @since 3.1 + * @see AnnotationConfigContextLoaderTests + */ +public class PlainVanillaFooConfigInnerClassTestCase { + + // Intentionally NOT annotated with @Configuration + static class FooConfig { + + @Bean + public String foo() { + return "foo"; + } + } + +}