grails.spring
Class BeanBuilder

java.lang.Object
  extended by groovy.lang.GroovyObjectSupport
      extended by grails.spring.BeanBuilder
All Implemented Interfaces:
groovy.lang.GroovyObject

public class BeanBuilder
extends groovy.lang.GroovyObjectSupport

Runtime bean configuration wrapper. Like a Groovy builder, but more of a DSL for Spring configuration. Allows syntax like:

 import org.hibernate.SessionFactory
 import org.apache.commons.dbcp.BasicDataSource
 
 BeanBuilder builder = new BeanBuilder()
 builder.beans {
   dataSource(BasicDataSource) {                  // <--- invokeMethod
      driverClassName = "org.hsqldb.jdbcDriver"
      url = "jdbc:hsqldb:mem:grailsDB"
      username = "sa"                            // <-- setProperty
      password = ""
      settings = [mynew:"setting"]
  } 
  sessionFactory(SessionFactory) {
           dataSource = dataSource                 // <-- getProperty for retrieving refs
  }
  myService(MyService) {
      nestedBean = { AnotherBean bean->          // <-- setProperty with closure for nested bean
                dataSource = dataSource
      }
  }
 }
 

You can also use the Spring IO API to load resources containing beans defined as a Groovy script using either the constructors or the loadBeans(Resource[] resources) method

Since:
0.4
Author:
Graeme Rocher

Constructor Summary
BeanBuilder()
           
BeanBuilder(ApplicationContext parent)
           
BeanBuilder(ApplicationContext parent, Resource resource)
           
BeanBuilder(ApplicationContext parent, Resource[] resources)
           
BeanBuilder(ApplicationContext parent, String resourcePattern)
           
BeanBuilder(Resource resource)
           
BeanBuilder(Resource[] resources)
           
BeanBuilder(String resourcePattern)
          A constructor that takes a resource pattern as (@see org.springframework.core.io.support.PathMatchingResourcePatternResolver) This allows you load multiple bean resources in this single builder eg new BeanBuilder("classpath:*Beans.groovy")
 
Method Summary
 BeanDefinition getBeanDefinition(String name)
          Retrieves a BeanDefinition for the given name
 Map getBeanDefinitions()
          Retrieves all BeanDefinitions for this BeanBuilder
 org.apache.commons.logging.Log getLog()
           
 ApplicationContext getParentCtx()
          Retrieves the parent ApplicationContext
 Object getProperty(String name)
          This method overrides property retrieval in the scope of the BeanBuilder to either: a) Retrieve a variable from the bean builder's binding if it exits b) Retrieve a RuntimeBeanReference for a specific bean if it exists c) Otherwise just delegate to super.getProperty which will resolve properties from the BeanBuilder itself
 RuntimeSpringConfiguration getSpringConfig()
          Retrieves the RuntimeSpringConfiguration instance used the the BeanBuilder
 Object invokeMethod(String name, Object arg)
          This method overrides method invocation to create beans for each method name that takes a class argument
 void loadBeans(Resource resource)
          Loads a single Resource into the bean builder
 void loadBeans(Resource[] resources)
          Loads a set of given beans
 void loadBeans(String resourcePattern)
          Takes a resource pattern as (@see org.springframework.core.io.support.PathMatchingResourcePatternResolver) This allows you load multiple bean resources in this single builder eg loadBeans("classpath:*Beans.groovy")
 void setBinding(groovy.lang.Binding b)
          Sets the binding (the variables available in the scope of the BeanBuilder)
 void setProperty(String name, Object value)
          This method overrides property setting in the scope of the BeanBuilder to set properties on the current BeanConfiguration
 void setSpringConfig(RuntimeSpringConfiguration springConfig)
          Sets the runtime Spring configuration instance to use.
 
Methods inherited from class groovy.lang.GroovyObjectSupport
getMetaClass, setMetaClass
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BeanBuilder

public BeanBuilder()

BeanBuilder

public BeanBuilder(ApplicationContext parent)

BeanBuilder

public BeanBuilder(String resourcePattern)
            throws IOException
A constructor that takes a resource pattern as (@see org.springframework.core.io.support.PathMatchingResourcePatternResolver) This allows you load multiple bean resources in this single builder eg new BeanBuilder("classpath:*Beans.groovy")

Parameters:
resourcePattern -
Throws:
IOException - When the path cannot be matched

BeanBuilder

public BeanBuilder(Resource resource)
            throws IOException
Throws:
IOException

BeanBuilder

public BeanBuilder(Resource[] resources)
            throws IOException
Throws:
IOException

BeanBuilder

public BeanBuilder(ApplicationContext parent,
                   String resourcePattern)
            throws IOException
Throws:
IOException

BeanBuilder

public BeanBuilder(ApplicationContext parent,
                   Resource resource)
            throws IOException
Throws:
IOException

BeanBuilder

public BeanBuilder(ApplicationContext parent,
                   Resource[] resources)
            throws IOException
Throws:
IOException
Method Detail

getLog

public org.apache.commons.logging.Log getLog()

getParentCtx

public ApplicationContext getParentCtx()
Retrieves the parent ApplicationContext

Returns:
The parent ApplicationContext

getSpringConfig

public RuntimeSpringConfiguration getSpringConfig()
Retrieves the RuntimeSpringConfiguration instance used the the BeanBuilder

Returns:
The RuntimeSpringConfiguration instance

getBeanDefinition

public BeanDefinition getBeanDefinition(String name)
Retrieves a BeanDefinition for the given name

Parameters:
name - The bean definition
Returns:
The BeanDefinition instance

getBeanDefinitions

public Map getBeanDefinitions()
Retrieves all BeanDefinitions for this BeanBuilder

Returns:
A map of BeanDefinition instances with the bean id as the key

setSpringConfig

public void setSpringConfig(RuntimeSpringConfiguration springConfig)
Sets the runtime Spring configuration instance to use. This is not necessary to set and is configured to default value if not, but is useful for integrating with other spring configuration mechanisms @see org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator

Parameters:
springConfig - The spring config

loadBeans

public void loadBeans(String resourcePattern)
               throws IOException
Takes a resource pattern as (@see org.springframework.core.io.support.PathMatchingResourcePatternResolver) This allows you load multiple bean resources in this single builder eg loadBeans("classpath:*Beans.groovy")

Parameters:
resourcePattern -
Throws:
IOException - When the path cannot be matched

loadBeans

public void loadBeans(Resource resource)
               throws IOException
Loads a single Resource into the bean builder

Parameters:
resource - The resource to load
Throws:
IOException - When an error occurs

loadBeans

public void loadBeans(Resource[] resources)
               throws IOException
Loads a set of given beans

Parameters:
resources - The resources to load
Throws:
IOException

invokeMethod

public Object invokeMethod(String name,
                           Object arg)
This method overrides method invocation to create beans for each method name that takes a class argument

Specified by:
invokeMethod in interface groovy.lang.GroovyObject
Overrides:
invokeMethod in class groovy.lang.GroovyObjectSupport

setProperty

public void setProperty(String name,
                        Object value)
This method overrides property setting in the scope of the BeanBuilder to set properties on the current BeanConfiguration

Specified by:
setProperty in interface groovy.lang.GroovyObject
Overrides:
setProperty in class groovy.lang.GroovyObjectSupport

getProperty

public Object getProperty(String name)
This method overrides property retrieval in the scope of the BeanBuilder to either: a) Retrieve a variable from the bean builder's binding if it exits b) Retrieve a RuntimeBeanReference for a specific bean if it exists c) Otherwise just delegate to super.getProperty which will resolve properties from the BeanBuilder itself

Specified by:
getProperty in interface groovy.lang.GroovyObject
Overrides:
getProperty in class groovy.lang.GroovyObjectSupport

setBinding

public void setBinding(groovy.lang.Binding b)
Sets the binding (the variables available in the scope of the BeanBuilder)

Parameters:
b - The Binding instance


Copyright (c) 2005-2006 The Grails project