@ -133,69 +133,61 @@ class GroovyBeanDefinitionReaderTests extends GroovyTestCase {
@@ -133,69 +133,61 @@ class GroovyBeanDefinitionReaderTests extends GroovyTestCase {
void testUseTwoSpringNamespaces ( ) {
def beanReader = new GroovyBeanDefinitionReader ( )
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder ( )
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" )
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 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 ( )
assertEquals "success" , appCtx . getBean ( "foo" )
assertNotNull appCtx . getBean ( "scopedList" )
assertNotNull appCtx . getBean ( "scopedList" ) . size ( )
assertNotNull appCtx . getBean ( "scopedList" ) . size ( )
appCtx = beanReader . createApplicationContext ( )
// should only be true because bean not initialized until proxy called
assertEquals 2 , scope . instanceCount
assert [ 'one' , 'two' ] = = appCtx . getBean ( "foo" )
beanReader = new GroovyBeanDefinitionReader ( )
assertNotNull appCtx . getBean ( "scopedList" )
assertNotNull appCtx . getBean ( "scopedList" ) . size ( )
assertNotNull appCtx . getBean ( "scopedList" ) . size ( )
appCtx = beanReader . getSpringConfig ( ) . getUnrefreshedApplicationContext ( )
appCtx . getBeanFactory ( ) . registerScope ( "test" , scope )
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' ( )
}
// should only be true because bean not initialized until proxy called
assertEquals 2 , scope . instanceCount
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" )
assertNotNull appCtx . getBean ( "scopedList" ) . size ( )
assertNotNull appCtx . getBean ( "scopedList" ) . size ( )
util . list ( id: 'foo' ) {
value 'one'
value 'two'
}
}
appCtx = beanReader . createApplicationContext ( )
// should only be true because bean not initialized until proxy called
assertEquals 4 , scope . instanceCount
assert [ 'one' , 'two' ] = = appCtx . getBean ( "foo" )
assertNotNull appCtx . getBean ( "scopedList" )
assertNotNull appCtx . getBean ( "scopedList" ) . size ( )
assertNotNull appCtx . getBean ( "scopedList" ) . size ( )
}
finally {
builder . deactivate ( )
}
// should only be true because bean not initialized until proxy called
assertEquals 4 , scope . instanceCount
}
void testSpringAOPSupport ( ) {
@ -262,24 +254,17 @@ class GroovyBeanDefinitionReaderTests extends GroovyTestCase {
@@ -262,24 +254,17 @@ class GroovyBeanDefinitionReaderTests extends GroovyTestCase {
void testSpringNamespaceBean ( ) {
def beanReader = new GroovyBeanDefinitionReader ( )
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder ( )
try {
builder . bind ( "bar" , "success" )
builder . activate ( )
beanReader . beans {
xmlns jee: "http://www.springframework.org/schema/jee"
jee . 'jndi-lookup' ( id: "foo" , 'jndi-name' : "bar" )
beanReader . beans {
xmlns util: 'http://www.springframework.org/schema/util'
util . list ( id: 'foo' ) {
value 'one'
value 'two'
}
}
ApplicationContext appC tx = beanReader . createApplicationContext ( )
def ctx = beanReader . createApplicationContext ( )
assertEquals "success" , appCtx . getBean ( "foo" )
}
finally {
builder . deactivate ( )
}
assert [ 'one' , 'two' ] = = ctx . getBean ( 'foo' )
}
void testNamedArgumentConstructor ( ) {
@ -772,9 +757,7 @@ beanReader.createApplicationContext()
@@ -772,9 +757,7 @@ beanReader.createApplicationContext()
assertEquals "Fred" , appCtx . getBean ( "personA" ) . name
}
// test for GRAILS - 4995
void testListOfBeansAsConstructorArg ( ) {
if ( notYetImplemented ( ) ) return
def beanReader = new GroovyBeanDefinitionReader ( )
beanReader . beans {
@ -791,6 +774,34 @@ beanReader.createApplicationContext()
@@ -791,6 +774,34 @@ beanReader.createApplicationContext()
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 ( ) {
def beanReader = new GroovyBeanDefinitionReader ( )
beanReader . beans {
@ -903,6 +914,20 @@ class Bean4 {
@@ -903,6 +914,20 @@ class Bean4 {
}
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
class Bean1Factory {
Bean1 newInstance ( ) {