|
|
@ -133,69 +133,61 @@ class GroovyBeanDefinitionReaderTests extends GroovyTestCase { |
|
|
|
void testUseTwoSpringNamespaces() { |
|
|
|
void testUseTwoSpringNamespaces() { |
|
|
|
def beanReader = new GroovyBeanDefinitionReader() |
|
|
|
def beanReader = new GroovyBeanDefinitionReader() |
|
|
|
|
|
|
|
|
|
|
|
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder() |
|
|
|
TestScope scope = new TestScope() |
|
|
|
try { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
builder.bind("bar", "success") |
|
|
|
|
|
|
|
builder.activate() |
|
|
|
|
|
|
|
TestScope scope = new TestScope() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GenericApplicationContext appCtx = beanReader.getSpringConfig().getUnrefreshedApplicationContext() |
|
|
|
|
|
|
|
appCtx.getBeanFactory().registerScope("test", scope) |
|
|
|
|
|
|
|
beanReader.beans { |
|
|
|
|
|
|
|
xmlns aop:"http://www.springframework.org/schema/aop" |
|
|
|
|
|
|
|
xmlns jee:"http://www.springframework.org/schema/jee" |
|
|
|
|
|
|
|
scopedList(ArrayList) { bean -> |
|
|
|
|
|
|
|
bean.scope = "test" |
|
|
|
|
|
|
|
aop.'scoped-proxy'() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
jee.'jndi-lookup'(id:"foo", 'jndi-name':"bar") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GenericApplicationContext appCtx = beanReader.getSpringConfig().getUnrefreshedApplicationContext() |
|
|
|
|
|
|
|
appCtx.getBeanFactory().registerScope("test", scope) |
|
|
|
|
|
|
|
beanReader.beans { |
|
|
|
|
|
|
|
xmlns aop:"http://www.springframework.org/schema/aop" |
|
|
|
|
|
|
|
xmlns util:"http://www.springframework.org/schema/util" |
|
|
|
|
|
|
|
scopedList(ArrayList) { bean -> |
|
|
|
|
|
|
|
bean.scope = "test" |
|
|
|
|
|
|
|
aop.'scoped-proxy'() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
util.list(id: 'foo') { |
|
|
|
|
|
|
|
value 'one' |
|
|
|
|
|
|
|
value 'two' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
appCtx = beanReader.createApplicationContext() |
|
|
|
appCtx = beanReader.createApplicationContext() |
|
|
|
|
|
|
|
|
|
|
|
assertEquals "success", appCtx.getBean("foo") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertNotNull appCtx.getBean("scopedList") |
|
|
|
|
|
|
|
assertNotNull appCtx.getBean("scopedList").size() |
|
|
|
|
|
|
|
assertNotNull appCtx.getBean("scopedList").size() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// should only be true because bean not initialized until proxy called |
|
|
|
assert ['one', 'two'] == appCtx.getBean("foo") |
|
|
|
assertEquals 2, scope.instanceCount |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
beanReader = new GroovyBeanDefinitionReader() |
|
|
|
assertNotNull appCtx.getBean("scopedList") |
|
|
|
|
|
|
|
assertNotNull appCtx.getBean("scopedList").size() |
|
|
|
|
|
|
|
assertNotNull appCtx.getBean("scopedList").size() |
|
|
|
|
|
|
|
|
|
|
|
appCtx = beanReader.getSpringConfig().getUnrefreshedApplicationContext() |
|
|
|
// should only be true because bean not initialized until proxy called |
|
|
|
appCtx.getBeanFactory().registerScope("test", scope) |
|
|
|
assertEquals 2, scope.instanceCount |
|
|
|
beanReader.beans { |
|
|
|
|
|
|
|
xmlns aop:"http://www.springframework.org/schema/aop", |
|
|
|
|
|
|
|
jee:"http://www.springframework.org/schema/jee" |
|
|
|
|
|
|
|
scopedList(ArrayList) { bean -> |
|
|
|
|
|
|
|
bean.scope = "test" |
|
|
|
|
|
|
|
aop.'scoped-proxy'() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
jee.'jndi-lookup'(id:"foo", 'jndi-name':"bar") |
|
|
|
beanReader = new GroovyBeanDefinitionReader() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
appCtx = beanReader.getSpringConfig().getUnrefreshedApplicationContext() |
|
|
|
|
|
|
|
appCtx.getBeanFactory().registerScope("test", scope) |
|
|
|
|
|
|
|
beanReader.beans { |
|
|
|
|
|
|
|
xmlns aop:"http://www.springframework.org/schema/aop", |
|
|
|
|
|
|
|
util:"http://www.springframework.org/schema/util" |
|
|
|
|
|
|
|
scopedList(ArrayList) { bean -> |
|
|
|
|
|
|
|
bean.scope = "test" |
|
|
|
|
|
|
|
aop.'scoped-proxy'() |
|
|
|
} |
|
|
|
} |
|
|
|
appCtx = beanReader.createApplicationContext() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals "success", appCtx.getBean("foo") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertNotNull appCtx.getBean("scopedList") |
|
|
|
util.list(id: 'foo') { |
|
|
|
assertNotNull appCtx.getBean("scopedList").size() |
|
|
|
value 'one' |
|
|
|
assertNotNull appCtx.getBean("scopedList").size() |
|
|
|
value 'two' |
|
|
|
|
|
|
|
} |
|
|
|
// should only be true because bean not initialized until proxy called |
|
|
|
} |
|
|
|
assertEquals 4, scope.instanceCount |
|
|
|
appCtx = beanReader.createApplicationContext() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assert ['one', 'two'] == appCtx.getBean("foo") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertNotNull appCtx.getBean("scopedList") |
|
|
|
|
|
|
|
assertNotNull appCtx.getBean("scopedList").size() |
|
|
|
|
|
|
|
assertNotNull appCtx.getBean("scopedList").size() |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
// should only be true because bean not initialized until proxy called |
|
|
|
finally { |
|
|
|
assertEquals 4, scope.instanceCount |
|
|
|
builder.deactivate() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void testSpringAOPSupport() { |
|
|
|
void testSpringAOPSupport() { |
|
|
@ -262,24 +254,17 @@ class GroovyBeanDefinitionReaderTests extends GroovyTestCase { |
|
|
|
void testSpringNamespaceBean() { |
|
|
|
void testSpringNamespaceBean() { |
|
|
|
def beanReader = new GroovyBeanDefinitionReader() |
|
|
|
def beanReader = new GroovyBeanDefinitionReader() |
|
|
|
|
|
|
|
|
|
|
|
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder() |
|
|
|
beanReader.beans { |
|
|
|
try { |
|
|
|
xmlns util: 'http://www.springframework.org/schema/util' |
|
|
|
|
|
|
|
util.list(id: 'foo') { |
|
|
|
builder.bind("bar", "success") |
|
|
|
value 'one' |
|
|
|
builder.activate() |
|
|
|
value 'two' |
|
|
|
|
|
|
|
|
|
|
|
beanReader.beans { |
|
|
|
|
|
|
|
xmlns jee:"http://www.springframework.org/schema/jee" |
|
|
|
|
|
|
|
jee.'jndi-lookup'(id:"foo", 'jndi-name':"bar") |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
ApplicationContext appCtx = beanReader.createApplicationContext() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals "success", appCtx.getBean("foo") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
finally { |
|
|
|
|
|
|
|
builder.deactivate() |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def ctx = beanReader.createApplicationContext() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assert ['one', 'two'] == ctx.getBean('foo') |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void testNamedArgumentConstructor() { |
|
|
|
void testNamedArgumentConstructor() { |
|
|
@ -772,9 +757,7 @@ beanReader.createApplicationContext() |
|
|
|
assertEquals "Fred", appCtx.getBean("personA").name |
|
|
|
assertEquals "Fred", appCtx.getBean("personA").name |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// test for GRAILS-4995 |
|
|
|
|
|
|
|
void testListOfBeansAsConstructorArg() { |
|
|
|
void testListOfBeansAsConstructorArg() { |
|
|
|
if(notYetImplemented()) return |
|
|
|
|
|
|
|
def beanReader = new GroovyBeanDefinitionReader() |
|
|
|
def beanReader = new GroovyBeanDefinitionReader() |
|
|
|
|
|
|
|
|
|
|
|
beanReader.beans { |
|
|
|
beanReader.beans { |
|
|
@ -790,6 +773,34 @@ beanReader.createApplicationContext() |
|
|
|
assert ctx.containsBean('someotherbean2') |
|
|
|
assert ctx.containsBean('someotherbean2') |
|
|
|
assert ctx.containsBean('somebean') |
|
|
|
assert ctx.containsBean('somebean') |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void testBeanWithListAndMapConstructor() { |
|
|
|
|
|
|
|
def beanReader = new GroovyBeanDefinitionReader() |
|
|
|
|
|
|
|
beanReader.beans { |
|
|
|
|
|
|
|
bart(Bean1) { |
|
|
|
|
|
|
|
person = "bart" |
|
|
|
|
|
|
|
age = 11 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
lisa(Bean1) { |
|
|
|
|
|
|
|
person = "lisa" |
|
|
|
|
|
|
|
age = 9 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
beanWithList(Bean5, [bart, lisa]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// test runtime references both as ref() and as plain name |
|
|
|
|
|
|
|
beanWithMap(Bean6, [bart:bart, lisa:ref('lisa')]) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
def ctx = beanReader.createApplicationContext() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def beanWithList = ctx.getBean("beanWithList") |
|
|
|
|
|
|
|
assertEquals 2, beanWithList.people.size() |
|
|
|
|
|
|
|
assertEquals "bart", beanWithList.people[0].person |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def beanWithMap = ctx.getBean("beanWithMap") |
|
|
|
|
|
|
|
assertEquals 9, beanWithMap.peopleByName.lisa.age |
|
|
|
|
|
|
|
assertEquals "bart", beanWithMap.peopleByName.bart.person |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void testAnonymousInnerBeanViaBeanMethod() { |
|
|
|
void testAnonymousInnerBeanViaBeanMethod() { |
|
|
|
def beanReader = new GroovyBeanDefinitionReader() |
|
|
|
def beanReader = new GroovyBeanDefinitionReader() |
|
|
@ -903,6 +914,20 @@ class Bean4 { |
|
|
|
} |
|
|
|
} |
|
|
|
String person |
|
|
|
String person |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// bean with List-valued constructor arg |
|
|
|
|
|
|
|
class Bean5 { |
|
|
|
|
|
|
|
Bean5(List<Bean1> people) { |
|
|
|
|
|
|
|
this.people = people |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
List<Bean1> people |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// bean with Map-valued constructor arg |
|
|
|
|
|
|
|
class Bean6 { |
|
|
|
|
|
|
|
Bean6(Map<String, Bean1> peopleByName) { |
|
|
|
|
|
|
|
this.peopleByName = peopleByName |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
Map<String, Bean1> peopleByName |
|
|
|
|
|
|
|
} |
|
|
|
// a factory bean |
|
|
|
// a factory bean |
|
|
|
class Bean1Factory { |
|
|
|
class Bean1Factory { |
|
|
|
Bean1 newInstance() { |
|
|
|
Bean1 newInstance() { |
|
|
|