hudson.util.spring
Class BeanBuilder

java.lang.Object
  extended by groovy.lang.GroovyObjectSupport
      extended by hudson.util.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(org.springframework.context.ApplicationContext parent)
           
BeanBuilder(org.springframework.context.ApplicationContext parent, ClassLoader classLoader)
           
BeanBuilder(ClassLoader classLoader)
           
 
Method Summary
 BeanBuilder beans(groovy.lang.Closure callable)
          When an methods argument is only a closure it is a set of bean definitions
 org.springframework.web.context.WebApplicationContext createApplicationContext()
           
 org.springframework.beans.factory.config.BeanDefinition getBeanDefinition(String name)
          Retrieves a BeanDefinition for the given name
 Map<String,org.springframework.beans.factory.config.BeanDefinition> getBeanDefinitions()
          Retrieves all BeanDefinitions for this BeanBuilder
 org.springframework.context.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
 hudson.util.spring.RuntimeSpringConfiguration getSpringConfig()
          Retrieves the RuntimeSpringConfiguration instance used the the BeanBuilder
 void loadBeans(org.springframework.core.io.Resource resource)
          Loads a single Resource into the bean builder
 void loadBeans(org.springframework.core.io.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")
 Object methodMissing(String name, Object arg)
          This method is invoked by Groovy when a method that's not defined in Java is invoked.
 org.springframework.beans.factory.config.RuntimeBeanReference parentRef(String refName)
           
 void parse(InputStream script)
          Parses the bean definition groovy script.
 void parse(InputStream script, groovy.lang.Binding binding)
          Parses the bean definition groovy script by first exporting the given Binding.
 org.springframework.beans.factory.config.RuntimeBeanReference ref(String refName)
           
 org.springframework.beans.factory.config.RuntimeBeanReference ref(String refName, boolean parentRef)
           
 void registerBeans(org.springframework.context.support.StaticApplicationContext ctx)
           
 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(hudson.util.spring.RuntimeSpringConfiguration springConfig)
          Sets the runtime Spring configuration instance to use.
 
Methods inherited from class groovy.lang.GroovyObjectSupport
getMetaClass, invokeMethod, 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(ClassLoader classLoader)

BeanBuilder

public BeanBuilder(org.springframework.context.ApplicationContext parent)

BeanBuilder

public BeanBuilder(org.springframework.context.ApplicationContext parent,
                   ClassLoader classLoader)
Method Detail

parse

public void parse(InputStream script)
Parses the bean definition groovy script.


parse

public void parse(InputStream script,
                  groovy.lang.Binding binding)
Parses the bean definition groovy script by first exporting the given Binding.


getParentCtx

public org.springframework.context.ApplicationContext getParentCtx()
Retrieves the parent ApplicationContext

Returns:
The parent ApplicationContext

getSpringConfig

public hudson.util.spring.RuntimeSpringConfiguration getSpringConfig()
Retrieves the RuntimeSpringConfiguration instance used the the BeanBuilder

Returns:
The RuntimeSpringConfiguration instance

getBeanDefinition

public org.springframework.beans.factory.config.BeanDefinition getBeanDefinition(String name)
Retrieves a BeanDefinition for the given name

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

getBeanDefinitions

public Map<String,org.springframework.beans.factory.config.BeanDefinition> getBeanDefinitions()
Retrieves all BeanDefinitions for this BeanBuilder

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

setSpringConfig

public void setSpringConfig(hudson.util.spring.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(org.springframework.core.io.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(org.springframework.core.io.Resource[] resources)
               throws IOException
Loads a set of given beans

Parameters:
resources - The resources to load
Throws:
IOException

registerBeans

public void registerBeans(org.springframework.context.support.StaticApplicationContext ctx)

ref

public org.springframework.beans.factory.config.RuntimeBeanReference ref(String refName)

parentRef

public org.springframework.beans.factory.config.RuntimeBeanReference parentRef(String refName)

ref

public org.springframework.beans.factory.config.RuntimeBeanReference ref(String refName,
                                                                         boolean parentRef)

methodMissing

public Object methodMissing(String name,
                            Object arg)
This method is invoked by Groovy when a method that's not defined in Java is invoked. We use that as a syntax for bean definition.


createApplicationContext

public org.springframework.web.context.WebApplicationContext createApplicationContext()

beans

public BeanBuilder beans(groovy.lang.Closure callable)
When an methods argument is only a closure it is a set of bean definitions

Parameters:
callable - The closure argument

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 © 2004-2013. All Rights Reserved.