summaryrefslogtreecommitdiff
path: root/spring-context/src/test/java/org/springframework/context/annotation
diff options
context:
space:
mode:
Diffstat (limited to 'spring-context/src/test/java/org/springframework/context/annotation')
-rw-r--r--spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorTests.java20
-rw-r--r--spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassWithConditionTests.java64
2 files changed, 64 insertions, 20 deletions
diff --git a/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorTests.java b/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorTests.java
index a1feb216..5bebb953 100644
--- a/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorTests.java
+++ b/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorTests.java
@@ -1063,17 +1063,27 @@ public class ConfigurationClassPostProcessorTests {
}
}
- public interface DefaultMethodsConfig {
+ public interface BaseInterface {
- @Bean
- default ServiceBean serviceBean() {
- return provider().getServiceBean();
- }
+ ServiceBean serviceBean();
+ }
+
+ public interface BaseDefaultMethods extends BaseInterface {
@Bean
default ServiceBeanProvider provider() {
return new ServiceBeanProvider();
}
+
+ @Bean
+ @Override
+ default ServiceBean serviceBean() {
+ return provider().getServiceBean();
+ }
+ }
+
+ public interface DefaultMethodsConfig extends BaseDefaultMethods {
+
}
@Configuration
diff --git a/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassWithConditionTests.java b/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassWithConditionTests.java
index 312baf1c..8d55a9f0 100644
--- a/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassWithConditionTests.java
+++ b/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassWithConditionTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2015 the original author or authors.
+ * Copyright 2002-2016 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.
@@ -22,12 +22,10 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.Map;
-import org.junit.Rule;
import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.core.annotation.AnnotationAttributes;
import org.springframework.core.type.AnnotatedTypeMetadata;
import org.springframework.core.type.AnnotationMetadata;
@@ -45,9 +43,6 @@ import static org.junit.Assert.*;
@SuppressWarnings("resource")
public class ConfigurationClassWithConditionTests {
- @Rule
- public ExpectedException thrown = ExpectedException.none();
-
@Test
public void conditionalOnMissingBeanMatch() throws Exception {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
@@ -95,12 +90,27 @@ public class ConfigurationClassWithConditionTests {
}
@Test
+ public void metaConditionalWithAsm() throws Exception {
+ AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
+ ctx.registerBeanDefinition("config", new RootBeanDefinition(ConfigurationWithMetaCondition.class.getName()));
+ ctx.refresh();
+ assertTrue(ctx.containsBean("bean"));
+ }
+
+ @Test
public void nonConfigurationClass() throws Exception {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(NonConfigurationClass.class);
ctx.refresh();
- thrown.expect(NoSuchBeanDefinitionException.class);
- assertNull(ctx.getBean(NonConfigurationClass.class));
+ assertFalse(ctx.containsBean("bean1"));
+ }
+
+ @Test
+ public void nonConfigurationClassWithAsm() throws Exception {
+ AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
+ ctx.registerBeanDefinition("config", new RootBeanDefinition(NonConfigurationClass.class.getName()));
+ ctx.refresh();
+ assertFalse(ctx.containsBean("bean1"));
}
@Test
@@ -108,8 +118,15 @@ public class ConfigurationClassWithConditionTests {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(ConditionOnMethodConfiguration.class);
ctx.refresh();
- thrown.expect(NoSuchBeanDefinitionException.class);
- assertNull(ctx.getBean(ExampleBean.class));
+ assertFalse(ctx.containsBean("bean1"));
+ }
+
+ @Test
+ public void methodConditionalWithAsm() throws Exception {
+ AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
+ ctx.registerBeanDefinition("config", new RootBeanDefinition(ConditionOnMethodConfiguration.class.getName()));
+ ctx.refresh();
+ assertFalse(ctx.containsBean("bean1"));
}
@Test
@@ -144,6 +161,7 @@ public class ConfigurationClassWithConditionTests {
@Configuration
static class BeanOneConfiguration {
+
@Bean
public ExampleBean bean1() {
return new ExampleBean();
@@ -153,6 +171,7 @@ public class ConfigurationClassWithConditionTests {
@Configuration
@Conditional(NoBeanOneCondition.class)
static class BeanTwoConfiguration {
+
@Bean
public ExampleBean bean2() {
return new ExampleBean();
@@ -162,6 +181,7 @@ public class ConfigurationClassWithConditionTests {
@Configuration
@Conditional(HasBeanOneCondition.class)
static class BeanThreeConfiguration {
+
@Bean
public ExampleBean bean3() {
return new ExampleBean();
@@ -171,6 +191,7 @@ public class ConfigurationClassWithConditionTests {
@Configuration
@MetaConditional("test")
static class ConfigurationWithMetaCondition {
+
@Bean
public ExampleBean bean() {
return new ExampleBean();
@@ -180,14 +201,22 @@ public class ConfigurationClassWithConditionTests {
@Conditional(MetaConditionalFilter.class)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
- public static @interface MetaConditional {
+ public @interface MetaConditional {
+
String value();
}
@Conditional(NeverCondition.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
- public static @interface Never {
+ public @interface Never {
+ }
+
+ @Conditional(AlwaysCondition.class)
+ @Never
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target({ElementType.TYPE, ElementType.METHOD})
+ public @interface MetaNever {
}
static class NoBeanOneCondition implements Condition {
@@ -238,8 +267,13 @@ public class ConfigurationClassWithConditionTests {
}
@Component
- @Never
+ @MetaNever
static class NonConfigurationClass {
+
+ @Bean
+ public ExampleBean bean1() {
+ return new ExampleBean();
+ }
}
@Configuration
@@ -254,7 +288,7 @@ public class ConfigurationClassWithConditionTests {
@Configuration
@Never
- @Import({ ConfigurationNotCreated.class, RegistrarNotCreated.class, ImportSelectorNotCreated.class })
+ @Import({ConfigurationNotCreated.class, RegistrarNotCreated.class, ImportSelectorNotCreated.class})
static class ImportsNotCreated {
static {
if (true) throw new RuntimeException();