Skip to content

Commit

Permalink
GRAILS-5779 - start removing bean builder code
Browse files Browse the repository at this point in the history
Use the corresponding library provided by Spring 4
  • Loading branch information
Jeff Scott Brown committed Sep 16, 2013
1 parent cde69d8 commit b6a3701
Show file tree
Hide file tree
Showing 29 changed files with 73 additions and 3,189 deletions.
10 changes: 5 additions & 5 deletions grails-core/src/main/groovy/grails/spring/WebBeanBuilder.java
Expand Up @@ -15,17 +15,17 @@
*/
package grails.spring;

import org.codehaus.groovy.grails.commons.spring.RuntimeSpringConfiguration;
import org.codehaus.groovy.grails.commons.spring.WebRuntimeSpringConfiguration;
import org.springframework.context.ApplicationContext;
import org.springframework.context.groovy.DefaultRuntimeSpringConfiguration;
import org.springframework.context.groovy.GroovyBeanDefinitionReader;

/**
* Extended version of the BeanBuilder class that provides support for constructing WebApplicationContext instances
*
* @author Graeme Rocher
* @since 1.0
*/
public class WebBeanBuilder extends BeanBuilder {
public class WebBeanBuilder extends GroovyBeanDefinitionReader {

public WebBeanBuilder() {
super();
Expand All @@ -44,7 +44,7 @@ public WebBeanBuilder(ApplicationContext parent, ClassLoader classLoader) {
}

@Override
protected RuntimeSpringConfiguration createRuntimeSpringConfiguration(ApplicationContext parent, ClassLoader classLoader) {
return new WebRuntimeSpringConfiguration(parent, classLoader);
protected org.springframework.context.groovy.RuntimeSpringConfiguration createRuntimeSpringConfiguration(ApplicationContext parent, ClassLoader classLoader) {
return new DefaultRuntimeSpringConfiguration(parent, classLoader);
}
}
Expand Up @@ -15,7 +15,6 @@
*/
package org.codehaus.groovy.grails.commons.spring;

import grails.spring.BeanBuilder;
import grails.util.CollectionUtils;
import grails.util.Environment;
import grails.util.Holders;
Expand All @@ -42,6 +41,9 @@
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.groovy.DefaultRuntimeSpringConfiguration;
import org.springframework.context.groovy.GroovyBeanDefinitionReader;
import org.springframework.context.groovy.RuntimeSpringConfiguration;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
Expand Down Expand Up @@ -309,7 +311,7 @@ else if (LOG.isDebugEnabled()) {
GrailsRuntimeConfigurator.loadSpringGroovyResources(springConfig, app);
}

private static volatile BeanBuilder springGroovyResourcesBeanBuilder = null;
private static volatile GroovyBeanDefinitionReader springGroovyResourcesBeanBuilder = null;

/**
* Attempt to load the beans defined by a BeanBuilder DSL closure in "resources.groovy".
Expand Down Expand Up @@ -356,8 +358,8 @@ public static void loadExternalSpringConfig(RuntimeSpringConfiguration config, f
}
}

public static BeanBuilder reloadSpringResourcesConfig(RuntimeSpringConfiguration config, GrailsApplication application, Class<?> groovySpringResourcesClass) throws InstantiationException, IllegalAccessException {
springGroovyResourcesBeanBuilder = new BeanBuilder(null, config,Thread.currentThread().getContextClassLoader());
public static GroovyBeanDefinitionReader reloadSpringResourcesConfig(RuntimeSpringConfiguration config, GrailsApplication application, Class<?> groovySpringResourcesClass) throws InstantiationException, IllegalAccessException {
springGroovyResourcesBeanBuilder = new GroovyBeanDefinitionReader(null, config,Thread.currentThread().getContextClassLoader());
springGroovyResourcesBeanBuilder.setBinding(new Binding(CollectionUtils.newMap(
"application", application,
"grailsApplication", application))); // GRAILS-7550
Expand Down
Expand Up @@ -15,7 +15,7 @@
*/
package org.codehaus.groovy.grails.commons.spring;

import grails.spring.BeanBuilder;
import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
Expand All @@ -26,6 +26,7 @@
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.groovy.GroovyBeanDefinitionReader;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.ResourcePatternResolver;
Expand Down Expand Up @@ -157,10 +158,14 @@ protected ResourcePatternResolver getResourcePatternResolver() {
protected void prepareBeanFactory(ConfigurableListableBeanFactory beanFactory) {
if (configLocations.length > 0) {
for (String configLocation : configLocations) {
BeanBuilder beanBuilder = new BeanBuilder(getParent(),getClassLoader());
final ServletContextResource resource = new ServletContextResource(getServletContext(), configLocation);
beanBuilder.loadBeans(resource);
beanBuilder.registerBeans(this);
try {
GroovyBeanDefinitionReader beanBuilder = new GroovyBeanDefinitionReader(getParent(),getClassLoader());
final ServletContextResource resource = new ServletContextResource(getServletContext(), configLocation);
beanBuilder.loadBeans(resource);
beanBuilder.registerBeans(this);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
super.prepareBeanFactory(beanFactory);
Expand Down
Expand Up @@ -19,6 +19,7 @@

import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.groovy.DefaultRuntimeSpringConfiguration;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.util.Assert;
import org.springframework.web.context.ConfigurableWebApplicationContext;
Expand Down
Expand Up @@ -37,13 +37,13 @@
import org.codehaus.groovy.grails.commons.ArtefactHandler;
import org.codehaus.groovy.grails.commons.GrailsApplication;
import org.codehaus.groovy.grails.commons.cfg.ConfigurationHelper;
import org.codehaus.groovy.grails.commons.spring.RuntimeSpringConfiguration;
import org.codehaus.groovy.grails.compiler.GrailsProjectWatcher;
import org.codehaus.groovy.grails.io.support.GrailsResourceUtils;
import org.codehaus.groovy.grails.plugins.exceptions.PluginException;
import org.codehaus.groovy.runtime.DefaultGroovyMethods;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.groovy.RuntimeSpringConfiguration;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
Expand Down
Expand Up @@ -24,9 +24,7 @@ import org.codehaus.groovy.grails.aop.framework.autoproxy.GroovyAwareAspectJAwar
import org.codehaus.groovy.grails.aop.framework.autoproxy.GroovyAwareInfrastructureAdvisorAutoProxyCreator
import org.codehaus.groovy.grails.commons.cfg.GrailsPlaceholderConfigurer
import org.codehaus.groovy.grails.commons.cfg.MapBasedSmartPropertyOverrideConfigurer
import org.codehaus.groovy.grails.commons.spring.DefaultRuntimeSpringConfiguration
import org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator
import org.codehaus.groovy.grails.commons.spring.RuntimeSpringConfiguration
import org.codehaus.groovy.grails.core.io.DefaultResourceLocator
import org.codehaus.groovy.grails.plugins.support.aware.GrailsApplicationAwareBeanPostProcessor
import org.codehaus.groovy.grails.plugins.support.aware.PluginManagerAwareBeanPostProcessor
Expand All @@ -37,6 +35,8 @@ import org.springframework.beans.factory.config.CustomEditorConfigurer
import org.springframework.beans.factory.config.MethodInvokingFactoryBean
import org.springframework.beans.factory.support.DefaultListableBeanFactory
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader
import org.springframework.context.groovy.DefaultRuntimeSpringConfiguration
import org.springframework.context.groovy.RuntimeSpringConfiguration
import org.springframework.core.io.Resource

/**
Expand Down
Expand Up @@ -15,7 +15,6 @@
*/
package org.codehaus.groovy.grails.plugins;

import grails.spring.BeanBuilder;
import grails.util.BuildScope;
import grails.util.CollectionUtils;
import grails.util.Environment;
Expand Down Expand Up @@ -46,7 +45,6 @@
import org.codehaus.groovy.grails.commons.ArtefactHandler;
import org.codehaus.groovy.grails.commons.GrailsApplication;
import org.codehaus.groovy.grails.commons.GrailsClassUtils;
import org.codehaus.groovy.grails.commons.spring.RuntimeSpringConfiguration;
import org.codehaus.groovy.grails.core.io.SpringResource;
import org.codehaus.groovy.grails.exceptions.GrailsConfigurationException;
import org.codehaus.groovy.grails.plugins.exceptions.PluginException;
Expand All @@ -59,6 +57,8 @@
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.groovy.GroovyBeanDefinitionReader;
import org.springframework.context.groovy.RuntimeSpringConfiguration;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
Expand Down Expand Up @@ -472,8 +472,8 @@ public ApplicationContext getParentCtx() {
return application.getParentContext();
}

public BeanBuilder beans(Closure closure) {
BeanBuilder bb = new BeanBuilder(getParentCtx(), new GroovyClassLoader(application.getClassLoader()));
public GroovyBeanDefinitionReader beans(Closure closure) {
GroovyBeanDefinitionReader bb = new GroovyBeanDefinitionReader(getParentCtx(), new GroovyClassLoader(application.getClassLoader()));
bb.invokeMethod("beans", new Object[]{closure});
return bb;
}
Expand All @@ -499,7 +499,7 @@ public void doWithRuntimeConfiguration(RuntimeSpringConfiguration springConfig)
}

Closure c = (Closure)plugin.getProperty(DO_WITH_SPRING);
BeanBuilder bb = new BeanBuilder(getParentCtx(),springConfig, application.getClassLoader());
GroovyBeanDefinitionReader bb = new GroovyBeanDefinitionReader(getParentCtx(),springConfig, application.getClassLoader());
Binding b = new Binding();
b.setVariable("application", application);
b.setVariable("manager", getManager());
Expand Down
Expand Up @@ -24,10 +24,10 @@
import java.util.Map;

import org.codehaus.groovy.grails.commons.GrailsApplication;
import org.codehaus.groovy.grails.commons.spring.RuntimeSpringConfiguration;
import org.codehaus.groovy.grails.plugins.support.WatchPattern;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.groovy.RuntimeSpringConfiguration;
import org.springframework.core.io.Resource;
import org.springframework.core.type.filter.TypeFilter;
import org.w3c.dom.Element;
Expand Down
Expand Up @@ -22,10 +22,10 @@
import java.util.Map;

import org.codehaus.groovy.grails.commons.GrailsApplication;
import org.codehaus.groovy.grails.commons.spring.RuntimeSpringConfiguration;
import org.codehaus.groovy.grails.plugins.exceptions.PluginException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.groovy.RuntimeSpringConfiguration;
import org.springframework.core.io.Resource;
import org.springframework.core.type.filter.TypeFilter;
import org.springframework.web.context.ServletContextAware;
Expand Down
Expand Up @@ -18,10 +18,11 @@
import grails.build.logging.GrailsConsole;
import groovy.lang.GroovySystem;
import groovy.lang.MetaClassRegistry;

import org.codehaus.groovy.grails.commons.GrailsApplication;
import org.codehaus.groovy.grails.commons.spring.RuntimeSpringConfiguration;
import org.codehaus.groovy.grails.plugins.exceptions.PluginException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.groovy.RuntimeSpringConfiguration;
import org.springframework.core.io.Resource;

/**
Expand Down
Expand Up @@ -15,13 +15,15 @@
*/
package org.codehaus.groovy.grails.project.loader

import grails.spring.BeanBuilder
import grails.spring.WebBeanBuilder
import grails.util.BuildSettings
import grails.util.Holders
import grails.util.PluginBuildSettings
import groovy.transform.CompileStatic
import groovy.transform.TypeCheckingMode

import javax.servlet.ServletContext

import org.codehaus.groovy.grails.cli.api.BaseSettingsApi
import org.codehaus.groovy.grails.cli.jndi.JndiBindingSupport
import org.codehaus.groovy.grails.cli.support.GrailsBuildEventListener
Expand All @@ -39,11 +41,10 @@ import org.codehaus.groovy.grails.project.plugins.GrailsProjectPluginLoader
import org.codehaus.groovy.grails.support.CommandLineResourceLoader
import org.springframework.beans.factory.config.MethodInvokingFactoryBean
import org.springframework.context.ApplicationContext
import org.springframework.context.groovy.GroovyBeanDefinitionReader
import org.springframework.mock.web.MockServletContext
import org.springframework.web.context.WebApplicationContext

import javax.servlet.ServletContext

/**
* Capable of bootstrapping a Grails project and returning the loaded ApplicationContext
*
Expand Down Expand Up @@ -81,7 +82,7 @@ class GrailsProjectLoader extends BaseSettingsApi{
@CompileStatic
GrailsApplication loadApplication() {
buildEventListener.triggerEvent("AppLoadStart", ["Loading Grails Application"])
BeanBuilder beanDefinitions
GroovyBeanDefinitionReader beanDefinitions
profile("Loading parent ApplicationContext") {
def builder = parentContext ? new WebBeanBuilder(parentContext) : new WebBeanBuilder()
beanDefinitions = defineParentBeans(builder)
Expand Down Expand Up @@ -164,7 +165,7 @@ class GrailsProjectLoader extends BaseSettingsApi{
}

@CompileStatic(TypeCheckingMode.SKIP)
protected BeanBuilder defineParentBeans(WebBeanBuilder builder) {
protected GroovyBeanDefinitionReader defineParentBeans(WebBeanBuilder builder) {
builder.beans {
grailsApplication(DefaultGrailsApplication, pluginSettings.getArtefactResourcesForCurrentEnvironment())
}
Expand Down
@@ -1,8 +1,9 @@
package org.codehaus.groovy.grails.commons.cfg

import grails.spring.BeanBuilder
import org.codehaus.groovy.grails.commons.DefaultGrailsApplication
import org.codehaus.groovy.grails.plugins.CoreGrailsPlugin
import org.springframework.context.groovy.GroovyBeanDefinitionReader

import spock.lang.Issue
import spock.lang.Specification

Expand All @@ -14,11 +15,11 @@ class GrailsPlaceHolderConfigurerCorePluginRuntimeSpec extends Specification{
@Issue('GRAILS-10130')
void "Test that system properties are used to replace values at runtime with GrailsPlaceHolderConfigurer"() {
given:"A configured application context"
def parent = new BeanBuilder()
def parent = new GroovyBeanDefinitionReader()
parent.beans {
grailsApplication(DefaultGrailsApplication)
}
def bb = new BeanBuilder(parent.createApplicationContext())
def bb = new GroovyBeanDefinitionReader(parent.createApplicationContext())

final beanBinding = new Binding()
beanBinding.setVariable('application', new DefaultGrailsApplication())
Expand Down
@@ -1,7 +1,8 @@
package org.codehaus.groovy.grails.commons.cfg

import grails.spring.BeanBuilder
import org.codehaus.groovy.grails.commons.DefaultGrailsApplication
import org.springframework.context.groovy.GroovyBeanDefinitionReader

import spock.lang.Issue
import spock.lang.Specification

Expand All @@ -14,7 +15,7 @@ class GrailsPlaceholderConfigurerSpec extends Specification {
when:"A bean is defined with a placeholder"
def application = new DefaultGrailsApplication()
application.config.foo.bar="test"
def bb = new BeanBuilder()
def bb = new GroovyBeanDefinitionReader()
bb.beans {
addBeanFactoryPostProcessor(new GrailsPlaceholderConfigurer(application))
testBean(TestBean) {
Expand All @@ -34,7 +35,7 @@ class GrailsPlaceholderConfigurerSpec extends Specification {
def application = new DefaultGrailsApplication()
application.config.bar.foo="test"
application.config.more.stuff='another ${place.holder}'
def bb = new BeanBuilder()
def bb = new GroovyBeanDefinitionReader()
bb.beans {
addBeanFactoryPostProcessor(new GrailsPlaceholderConfigurer(application))
testBean(TestBean) {
Expand All @@ -54,7 +55,7 @@ class GrailsPlaceholderConfigurerSpec extends Specification {
application.config.foo.bar="test"
application.config.grails.spring.placeholder.prefix='£{'
application.setConfig(application.config)
def bb = new BeanBuilder()
def bb = new GroovyBeanDefinitionReader()
bb.beans {
addBeanFactoryPostProcessor(new GrailsPlaceholderConfigurer(application))
testBean(TestBean) {
Expand Down
Expand Up @@ -16,7 +16,6 @@
package grails.test.mixin.support

import grails.async.Promises
import grails.spring.BeanBuilder
import grails.test.GrailsMock
import grails.test.MockUtils
import grails.util.Holders
Expand Down Expand Up @@ -50,6 +49,7 @@ import org.junit.BeforeClass
import org.springframework.beans.CachedIntrospectionResults
import org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor
import org.springframework.context.MessageSource
import org.springframework.context.groovy.GroovyBeanDefinitionReader
import org.springframework.context.support.ConversionServiceFactoryBean
import org.springframework.context.support.StaticMessageSource
import org.springframework.mock.web.MockServletContext
Expand Down Expand Up @@ -80,7 +80,7 @@ class GrailsUnitTestMixin {

@CompileStatic
static void defineBeans(Closure callable) {
def bb = new BeanBuilder()
def bb = new GroovyBeanDefinitionReader()
def binding = new Binding()
binding.setVariable "application", grailsApplication
bb.setBinding binding
Expand Down

0 comments on commit b6a3701

Please sign in to comment.