Browse Source

Test injection of special types on @Feature methods

Prove that injection of special container types such as ResourceLoader,
BeanFactory, etc already works with the current implementation of
@Feature methods.

Issue: SPR-7975
pull/7/head
Chris Beams 14 years ago
parent
commit
5cfbed8881
  1. 25
      org.springframework.context/src/test/java/org/springframework/context/annotation/FeatureConfigurationClassTests.java

25
org.springframework.context/src/test/java/org/springframework/context/annotation/FeatureConfigurationClassTests.java

@ -16,9 +16,14 @@ @@ -16,9 +16,14 @@
package org.springframework.context.annotation;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import org.junit.Test;
import org.springframework.context.annotation.configuration.StubSpecification;
import org.springframework.context.config.FeatureSpecification;
import org.springframework.core.io.ResourceLoader;
public class FeatureConfigurationClassTests {
@ -29,6 +34,14 @@ public class FeatureConfigurationClassTests { @@ -29,6 +34,14 @@ public class FeatureConfigurationClassTests {
ctx.refresh();
}
@Test
public void featureMethodsMayAcceptResourceLoaderParameter() {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.setDisplayName("enclosing app ctx");
ctx.register(FeatureMethodWithResourceLoaderParameter.class);
ctx.refresh();
}
}
@ -49,4 +62,16 @@ class FeatureConfigWithBeanAnnotatedMethod { @@ -49,4 +62,16 @@ class FeatureConfigWithBeanAnnotatedMethod {
public FeatureSpecification feature() {
return new StubSpecification();
}
}
@FeatureConfiguration
class FeatureMethodWithResourceLoaderParameter {
@Feature
public FeatureSpecification feature(ResourceLoader rl) {
// prove that the injected ResourceLoader is actually the enclosing application context
Object target = ((EarlyBeanReferenceProxy)rl).dereferenceTargetBean();
assertThat(target, instanceOf(AnnotationConfigApplicationContext.class));
assertThat(((AnnotationConfigApplicationContext)target).getDisplayName(), is("enclosing app ctx"));
return new StubSpecification();
}
}
Loading…
Cancel
Save