Skip to content

Commit

Permalink
Upgrade to Spring 3
Browse files Browse the repository at this point in the history
  • Loading branch information
graemerocher committed Jul 14, 2009
1 parent 954ca02 commit 57db3ea
Show file tree
Hide file tree
Showing 34 changed files with 62 additions and 81 deletions.
Binary file added grails/lib/aopalliance-1.0.jar
Binary file not shown.
Binary file added grails/lib/hsqldb-1.8.0.10.jar
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1 change: 0 additions & 1 deletion grails/scripts/_GrailsWar.groovy
Expand Up @@ -57,7 +57,6 @@ DEFAULT_DEPS = [
"ivy-*.jar",
"jsr107cache-*.jar",
"sitemesh-*.jar",
"spring-*.jar",
"org.springframework.*-*.jar",
"jcl-over-slf4j-*.jar",
"slf4j-api-*.jar",
Expand Down
2 changes: 1 addition & 1 deletion grails/src/java/grails/util/BuildSettings.groovy
Expand Up @@ -34,7 +34,7 @@ class BuildSettings {
commons-codec-|commons-collections-|commons-dbcp-|commons-fileupload-|commons-io-|commons-lang-|\
commons-pool-|commons-validator-|dom4j-|ehcache-|ejb3-persistence-|groovy-all-|hsqldb-|ivy-|jcl-over-slf4j-|jdbc2_0-stdext|\
jsr107cache-|jta-|log4j-|ognl-|org\\.springframework\\.\\w+-|oro-|\
oscache-|sitemesh-|slf4j-api-|slf4j-log4j12-|spring-|xercesImpl-|\
oscache-|sitemesh-|slf4j-api-|slf4j-log4j12-|xercesImpl-|\
xpp3_min-).*\\.jar"""
static final Pattern JAR_PATTERN = ~/^\S+\.jar$/

Expand Down
Expand Up @@ -52,14 +52,11 @@ class CoreGrailsPlugin {
targetObject = ref("grailsApplication", true)
targetMethod = "getClassLoader"
}
classEditor(ClassEditor) {
classLoader = classLoader
}
if(Environment.current == Environment.DEVELOPMENT)
shutdownHook(DevelopmentShutdownHook)

customEditors(CustomEditorConfigurer) {
customEditors = [(java.lang.Class.class):classEditor]
customEditors = [(java.lang.Class.name):ClassEditor.name]
}
}

Expand Down
Expand Up @@ -27,6 +27,7 @@ import org.codehaus.groovy.grails.exceptions.GrailsConfigurationException
import java.sql.SQLException
import java.sql.Driver
import java.sql.DriverManager
import grails.util.Metadata

/**
* A plug-in that handles the configuration of Hibernate within Grails
Expand Down Expand Up @@ -150,8 +151,10 @@ class DataSourceGrailsPlugin {
connection?.close()
}
}

deregisterJDBCDrivers()

if(Metadata.current.warDeployed) {
deregisterJDBCDrivers()
}

}
private void deregisterJDBCDrivers() {
Expand Down
Expand Up @@ -329,13 +329,8 @@ Try using Grails' default cache provider: 'org.hibernate.cache.OSCacheProvider'"

private static registerDynamicMethods(GrailsDomainClass dc, GrailsApplication application, ApplicationContext ctx, SessionFactory sessionFactory) {
dc.metaClass.methodMissing = { String name, args ->
// println "METHOD MISSING $name"
throw new MissingMethodException(name, dc.clazz, args, true)
}
// dc.metaClass.propertyMissing = { String name ->
// println "PROPERTY MISSING HERE ! $name"
//
// }
addBasicPersistenceMethods(dc, application, ctx)
addQueryMethods(dc, application, ctx)
addTransactionalMethods(dc, application, ctx)
Expand Down Expand Up @@ -503,15 +498,14 @@ Try using Grails' default cache provider: 'org.hibernate.cache.OSCacheProvider'"
template.bulkUpdate(query, GrailsClassUtils.collectionToObjectArray(args))
}
metaClass.static.executeUpdate = {String query, Map argMap ->
template.execute( { session ->
template.executeWithNativeSession( { Session session ->
Query queryObject = session.createQuery(query)
SessionFactoryUtils.applyTransactionTimeout(queryObject, template.sessionFactory);
for (entry in argMap) {
queryObject.setParameter(entry.key, entry.value)
}
queryObject.executeUpdate()
} as HibernateCallback
, true);
} as HibernateCallback);
}


Expand Down
Expand Up @@ -22,6 +22,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.lang.annotation.Annotation;

public class MockApplicationContext extends GroovyObjectSupport implements WebApplicationContext {

Expand Down Expand Up @@ -89,7 +90,7 @@ public String getId() {
}

public String getDisplayName() {
throw new UnsupportedOperationException("Method not supported by implementation");
return getId();
}

public long getStartupDate() {
Expand Down Expand Up @@ -132,7 +133,7 @@ public String[] getBeanNamesForType(Class type, boolean includePrototypes,
return getBeanNamesForType(type);
}

public Map getBeansOfType(Class type) throws BeansException {
public <T> Map<String, T> getBeansOfType(Class<T> type) throws BeansException {
String[] beanNames = getBeanNamesForType(type);
Map newMap = new HashMap();
for (int i = 0; i < beanNames.length; i++) {
Expand All @@ -141,32 +142,49 @@ public Map getBeansOfType(Class type) throws BeansException {

}
return newMap;
}
}

public Map getBeansOfType(Class type, boolean includePrototypes,
boolean includeFactoryBeans) throws BeansException {
String[] beanNames = getBeanNamesForType(type);
Map newMap = new HashMap();
for (int i = 0; i < beanNames.length; i++) {
String beanName = beanNames[i];
newMap.put(beanName, getBean(beanName));
public <T> Map<String, T> getBeansOfType(Class<T> type, boolean includeNonSingletons, boolean allowEagerInit) throws BeansException {
return getBeansOfType(type);
}

public <A extends Annotation> A findAnnotationOnBean(String name, Class<A> annotation) {
Object o = getBean(name);
if(o!=null) {
return o.getClass().getAnnotation(annotation);
}
return newMap;
return null;
}

public Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> annotation, boolean b, boolean b1) throws BeansException {
return getBeansWithAnnotation(annotation);
}

public Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> annotation) throws BeansException {
Map<String, Object> submap = new HashMap<String, Object>();
for (Object beanName : beans.keySet()) {
Object bean = beans.get(beanName);
if(bean!=null&&bean.getClass().getAnnotation(annotation)!=null) {
submap.put(beanName.toString(), bean);
}
}
return submap;
}



public Object getBean(String name) throws BeansException {
if(!beans.containsKey(name))throw new NoSuchBeanDefinitionException(name);
return beans.get(name);
}

public Object getBean(String name, Class requiredType)
throws BeansException {
if(!beans.containsKey(name))throw new NoSuchBeanDefinitionException( name);
if(requiredType != null && beans.get(name).getClass() != requiredType)throw new NoSuchBeanDefinitionException(name);
public <T> T getBean(String name, Class<T> requiredType) throws BeansException {
if(!beans.containsKey(name))throw new NoSuchBeanDefinitionException( name);
if(requiredType != null && beans.get(name).getClass() != requiredType)throw new NoSuchBeanDefinitionException(name);

return (T) beans.get(name);
}

return beans.get(name);
}

public Object getBean(String name, Object[] args) throws BeansException {
return getBean(name);
Expand Down

This file was deleted.

14 changes: 9 additions & 5 deletions grails/src/test/grails/spring/BeanBuilderTests.groovy
Expand Up @@ -758,11 +758,6 @@ class TestScope implements Scope {

int instanceCount

public Object get(String name, ObjectFactory objectFactory) {
instanceCount++
objectFactory.getObject()
}


public Object remove(String name) {
// do nothing
Expand All @@ -775,6 +770,15 @@ class TestScope implements Scope {
return "mock"
}

public Object get(String name, ObjectFactory<?> objectFactory) {
instanceCount++
objectFactory.getObject()

}

public Object resolveContextualObject(String s) {
return null; // noop
}
}
class BirthdayCardSender {
List peopleSentCards = []
Expand Down
Expand Up @@ -4,11 +4,13 @@
import groovy.lang.GroovyClassLoader;
import groovy.lang.GroovyObject;
import junit.framework.TestCase;
import org.codehaus.groovy.grails.commons.*;
import org.codehaus.groovy.grails.commons.ConfigurationHolder;
import org.codehaus.groovy.grails.commons.DefaultGrailsApplication;
import org.codehaus.groovy.grails.commons.GrailsApplication;
import org.codehaus.groovy.grails.commons.GrailsDomainClass;
import org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager;
import org.codehaus.groovy.grails.plugins.DefaultPluginMetaManager;
import org.codehaus.groovy.grails.plugins.PluginMetaManager;
import org.codehaus.groovy.grails.support.ClassEditor;
import org.codehaus.groovy.grails.support.MockApplicationContext;
import org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver;
import org.codehaus.groovy.grails.web.servlet.mvc.GrailsUrlHandlerMapping;
Expand Down Expand Up @@ -71,8 +73,7 @@ public void testConfigure() throws Exception {

// test class editor setup
assertNotNull(ctx);
assertTrue(ctx.getBean(GrailsRuntimeConfigurator.CLASS_LOADER_BEAN) instanceof GroovyClassLoader );
assertTrue(ctx.getBean(GrailsRuntimeConfigurator.CLASS_EDITOR_BEAN) instanceof ClassEditor);
assertTrue(ctx.getBean(GrailsRuntimeConfigurator.CLASS_LOADER_BEAN) instanceof GroovyClassLoader );

// test exception resolver
GrailsExceptionResolver er = (GrailsExceptionResolver)ctx.getBean(GrailsRuntimeConfigurator.EXCEPTION_HANDLER_BEAN);
Expand Down
Expand Up @@ -55,7 +55,6 @@ class Customer {
assertEquals 3, custClass.count()

custClass.executeUpdate("delete from Customer c where c.name=:name", [name:'Fred'])

assertEquals 2, custClass.count()
}

Expand Down
Expand Up @@ -21,7 +21,6 @@ class CoreGrailsPluginTests extends AbstractGrailsMockTests {

def appCtx = springConfig.getApplicationContext()

assert appCtx.containsBean("classEditor")
assert appCtx.containsBean("classLoader")
assert appCtx.containsBean("customEditors")
}
Expand Down
Expand Up @@ -61,7 +61,7 @@ class DataSourceGrailsPluginTests extends AbstractGrailsMockTests {
def appCtx = configurator.configure(ctx.getServletContext())

DataSource dataSource = appCtx.getBean("dataSource")
assert dataSource
assert dataSource

def pluginManager = PluginManagerHolder.currentPluginManager()

Expand Down
Expand Up @@ -24,8 +24,9 @@ class GroovyPageWithJSPTagsTests extends AbstractGrailsTagTests{
def rootLoader = new RootLoader([] as URL[], Thread.currentThread().getContextClassLoader())
def res = new FileSystemResource("lib/standard-2.4.jar")
rootLoader.addURL res.getURL()
res = resolver.getResources("file:lib/spring-webmvc*.jar")[0]
rootLoader.addURL res.getURL()
resolver.getResources("file:lib/org.springframework.web*.jar").each {
rootLoader.addURL it.getURL()
}
return rootLoader
}
webRequest.getCurrentRequest().setAttribute(GroovyPagesServlet.SERVLET_INSTANCE, new GroovyPagesServlet())
Expand Down

0 comments on commit 57db3ea

Please sign in to comment.