Skip to content

Commit ab76397

Browse files
committed
Merge branch '3.2.x' into GRAILS-10032
2 parents fef8368 + 16e4c88 commit ab76397

File tree

21 files changed

+565
-278
lines changed

21 files changed

+565
-278
lines changed

.travis.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@ sudo: false
33
jdk:
44
- oraclejdk7
55
env:
6-
matrix:
7-
- GRADLE_FLAGS="--stacktrace " GRADLE_CMD="test -x grails-test-suite-web:test"
8-
- GRADLE_FLAGS="--stacktrace" GRADLE_CMD="grails-test-suite-web:test"
9-
- GRADLE_FLAGS="--stacktrace --info" GRADLE_CMD="integrationTest"
106
global:
117
- TERM=dumb
128
- MALLOC_ARENA_MAX=1
@@ -34,13 +30,8 @@ install: /bin/true
3430
script:
3531
- ./travis-build.sh
3632
after_success:
37-
- python ./travis/travis_after_all.py
38-
- export $(cat .to_export_back)
39-
- ./travis-publish-archives.sh
4033
- ./trigger-dependent-build.sh
4134
after_failure:
42-
- python ./travis/travis_after_all.py
43-
- export $(cat .to_export_back)
4435
- ./travis-after-failure.sh
4536
deploy:
4637
provider: releases

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ ext {
3333
commonsCollectionsVersion = "3.2.1"
3434
commonsIOVersion = "2.2"
3535
commonsLangVersion = "2.6"
36-
datastoreVersion = "6.0.0.M2"
36+
datastoreVersion = "6.0.0.RC2"
3737
gantVersion = "1.9.6"
3838
gdocEngineVersion = "1.0.1"
3939
groovyVersion = System.getenv('CI_GROOVY_VERSION') ?: "2.4.7"
4040
ivyVersion = "2.3.0"
4141
jansiVersion = "1.11"
4242
jlineVersion = "2.12"
4343
jnaVersion = "4.0.0"
44-
slf4jVersion = "1.7.10"
44+
slf4jVersion = "1.7.21"
4545
reactorCoreVersion = '2.0.8.RELEASE'
4646
reactorVersion = '2.0.7.RELEASE'
4747

grails-bom/plugins.properties

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
hibernate4=6.0.0.M2
2-
hibernate5=6.0.0.M2
3-
mongodb=6.0.0.M2
4-
rx-mongodb=6.0.0.M2
5-
cassandra=6.0.0.M2
6-
neo4j=6.0.0.M2
1+
hibernate4=6.0.0.RC2
2+
hibernate5=6.0.0.RC2
3+
mongodb=6.0.0.RC2
4+
rx-gorm-rest-client=1.0.0.RC2
5+
rx-mongodb=6.0.0.RC2
6+
cassandra=6.0.0.RC2
7+
neo4j=6.0.0.RC2
78
cache=3.0.3
89
asset-pipeline=3.2.1
9-
asset-pipeline-grails=2.8.2
10+
asset-pipeline-grails=2.11.1
1011
scaffolding=3.2.1
1112
fields=2.1.3
1213
geb=1.0.2
13-
views-json=1.1.0.RC1
14-
views-json-templates=1.1.0.RC1
15-
views-markup=1.1.0.RC1
14+
views-json=1.1.0.RC3
15+
views-json-templates=1.1.0.RC3
16+
views-markup=1.1.0.RC3

grails-bom/profiles.properties

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
angular=3.2.0.BUILD-SNAPSHOT
2-
rest-api=3.2.0.BUILD-SNAPSHOT
3-
rest-api-plugin=3.2.0.BUILD-SNAPSHOT
4-
base=3.2.0.BUILD-SNAPSHOT
5-
plugin=3.2.0.BUILD-SNAPSHOT
6-
web-plugin=3.2.0.BUILD-SNAPSHOT
7-
web=3.2.0.BUILD-SNAPSHOT
8-
profile=3.2.0.BUILD-SNAPSHOT
1+
angular=3.2.0.RC1
2+
rest-api=3.2.0.RC1
3+
rest-api-plugin=3.2.0.RC1
4+
base=3.2.0.RC2
5+
plugin=3.2.0.RC1
6+
web-plugin=3.2.0.RC1
7+
web=3.2.0.RC1
8+
profile=3.2.0.RC2

grails-core/src/main/groovy/grails/boot/config/GrailsApplicationPostProcessor.groovy

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import grails.spring.BeanBuilder
1313
import grails.util.Environment
1414
import grails.util.Holders
1515
import groovy.transform.CompileStatic
16-
import groovy.util.logging.Commons
16+
import groovy.util.logging.Slf4j
1717
import org.grails.config.NavigableMap
1818
import org.grails.config.PrefixedMapPropertySource
1919
import org.grails.config.PropertySourcesConfig
@@ -34,9 +34,12 @@ import org.springframework.context.event.ApplicationContextEvent
3434
import org.springframework.context.event.ContextClosedEvent
3535
import org.springframework.context.event.ContextRefreshedEvent
3636
import org.springframework.core.convert.converter.Converter
37+
import org.springframework.core.convert.support.ConfigurableConversionService
3738
import org.springframework.core.env.AbstractEnvironment
3839
import org.springframework.core.env.ConfigurableEnvironment
3940
import org.springframework.core.env.EnumerablePropertySource
41+
import org.springframework.core.io.Resource
42+
import org.springframework.core.io.support.PathMatchingResourcePatternResolver
4043

4144
/**
4245
* A {@link BeanDefinitionRegistryPostProcessor} that enhances any ApplicationContext with plugin manager capabilities
@@ -45,7 +48,7 @@ import org.springframework.core.env.EnumerablePropertySource
4548
* @since 3.0
4649
*/
4750
@CompileStatic
48-
@Commons
51+
@Slf4j
4952
class GrailsApplicationPostProcessor implements BeanDefinitionRegistryPostProcessor, ApplicationContextAware, ApplicationListener<ApplicationContextEvent> {
5053
static final boolean RELOADING_ENABLED = Environment.isReloadingAgentEnabled()
5154

@@ -109,16 +112,23 @@ class GrailsApplicationPostProcessor implements BeanDefinitionRegistryPostProces
109112

110113
protected void loadApplicationConfig() {
111114
org.springframework.core.env.Environment environment = applicationContext.getEnvironment()
115+
ConfigurableConversionService conversionService = null
112116
if(environment instanceof ConfigurableEnvironment) {
113117
if(environment instanceof AbstractEnvironment) {
114-
def cs = environment.getConversionService()
115-
cs.addConverter(new Converter<NavigableMap.NullSafeNavigator, String>() {
118+
conversionService = environment.getConversionService()
119+
conversionService.addConverter(new Converter<String, Resource>() {
120+
@Override
121+
public Resource convert(String source) {
122+
return applicationContext.getResource(source);
123+
}
124+
});
125+
conversionService.addConverter(new Converter<NavigableMap.NullSafeNavigator, String>() {
116126
@Override
117127
public String convert(NavigableMap.NullSafeNavigator source) {
118128
return null;
119129
}
120130
});
121-
cs.addConverter(new Converter<NavigableMap.NullSafeNavigator, Object>() {
131+
conversionService.addConverter(new Converter<NavigableMap.NullSafeNavigator, Object>() {
122132
@Override
123133
public Object convert(NavigableMap.NullSafeNavigator source) {
124134
return null;
@@ -138,7 +148,11 @@ class GrailsApplicationPostProcessor implements BeanDefinitionRegistryPostProces
138148
}
139149
}
140150
}
141-
((DefaultGrailsApplication)grailsApplication).config = new PropertySourcesConfig(propertySources)
151+
def config = new PropertySourcesConfig(propertySources)
152+
if(conversionService != null) {
153+
config.setConversionService( conversionService )
154+
}
155+
((DefaultGrailsApplication)grailsApplication).config = config
142156
}
143157
}
144158

grails-core/src/main/groovy/org/grails/compiler/injection/GrailsASTUtils.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.codehaus.groovy.syntax.Token;
3838
import org.codehaus.groovy.syntax.Types;
3939
import org.codehaus.groovy.transform.sc.StaticCompileTransformation;
40+
import org.codehaus.groovy.transform.trait.Traits;
4041
import org.grails.io.support.FileSystemResource;
4142
import org.grails.io.support.Resource;
4243
import org.springframework.util.StringUtils;
@@ -970,6 +971,16 @@ public static boolean hasAnyAnnotations(final ClassNode classNode, final Class<?
970971
return false;
971972
}
972973

974+
public static boolean removeAnnotation(final MethodNode methodNode, final Class<? extends Annotation> annotationClass) {
975+
List<AnnotationNode> annotations = methodNode.getAnnotations(new ClassNode(annotationClass));
976+
if (annotations.size() > 0) {
977+
methodNode.getAnnotations().removeAll(annotations);
978+
return true;
979+
} else {
980+
return false;
981+
}
982+
}
983+
973984
public static void addMethodIfNotPresent(ClassNode controllerClassNode, MethodNode methodNode) {
974985
MethodNode existing = controllerClassNode.getMethod(methodNode.getName(), methodNode.getParameters());
975986
if (existing == null) {
@@ -1490,4 +1501,12 @@ public static URL getSourceUrl(SourceUnit source) {
14901501
public static URL getSourceUrl(ClassNode classNode) {
14911502
return getSourceUrl(classNode.getModule().getContext());
14921503
}
1504+
1505+
public static boolean hasParameters(MethodNode methodNode) {
1506+
return methodNode.getParameters().length > 0;
1507+
}
1508+
1509+
public static boolean isInheritedFromTrait(MethodNode methodNode) {
1510+
return hasAnnotation(methodNode, Traits.TraitBridge.class);
1511+
}
14931512
}

grails-core/src/main/groovy/org/grails/core/cfg/GroovyConfigPropertySourceLoader.groovy

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import grails.util.BuildSettings
1919
import grails.util.Environment
2020
import grails.util.Metadata
2121
import groovy.transform.CompileStatic
22-
import groovy.util.logging.Commons
22+
import groovy.util.logging.Slf4j
2323
import org.grails.config.NavigableMap
2424
import org.grails.config.NavigableMapPropertySource
2525
import org.grails.core.exceptions.GrailsConfigurationException
@@ -35,7 +35,7 @@ import org.springframework.core.io.Resource
3535
* @since 3.0
3636
*/
3737
@CompileStatic
38-
@Commons
38+
@Slf4j
3939
class GroovyConfigPropertySourceLoader implements PropertySourceLoader {
4040

4141
final String[] fileExtensions = ['groovy'] as String[]
@@ -46,8 +46,9 @@ class GroovyConfigPropertySourceLoader implements PropertySourceLoader {
4646
}
4747

4848
PropertySource<?> load(String name, Resource resource, String profile, List<String> filteredKeys) throws IOException {
49-
def env = Environment.current.name
50-
if(profile == null || env == profile) {
49+
// since ConfigSlurper is already environment aware, don't load it twice
50+
if(profile == null) {
51+
def env = Environment.current.name
5152

5253
if(resource.exists()) {
5354
ConfigSlurper configSlurper = env ? new ConfigSlurper(env) : new ConfigSlurper()
@@ -66,6 +67,13 @@ class GroovyConfigPropertySourceLoader implements PropertySourceLoader {
6667

6768
def propertySource = new NavigableMap()
6869
propertySource.merge(configObject, false)
70+
71+
Resource runtimeResource = resource.createRelative( resource.filename.replace('application', 'runtime') )
72+
if(runtimeResource.exists()) {
73+
def runtimeConfig = configSlurper.parse( runtimeResource.getURL() )
74+
propertySource.merge(runtimeConfig, false)
75+
}
76+
6977
return new NavigableMapPropertySource(name, propertySource)
7078
} catch (Throwable e) {
7179
log.error("Unable to load $resource.filename: $e.message", e)

grails-core/src/main/groovy/org/grails/spring/context/support/MapBasedSmartPropertyOverrideConfigurer.groovy

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,8 @@ class MapBasedSmartPropertyOverrideConfigurer implements BeanFactoryPostProcesso
6060
final beanPropertyValue = beanPropertiesMap.get(beanPropertyName)
6161
applyPropertyValue(factory, beanName.toString(), beanPropertyName.toString(), beanPropertyValue)
6262
}
63-
6463
}
65-
6664
}
67-
6865
}
6966

7067
protected void applyPropertyValue(ConfigurableListableBeanFactory factory, String beanName, String property, Object value) {
@@ -116,15 +113,14 @@ class MapBasedSmartPropertyOverrideConfigurer implements BeanFactoryPostProcesso
116113
}
117114

118115
protected BeanDefinition getTargetBeanDefinitionForFactoryBean(ConfigurableListableBeanFactory factory,
119-
String beanName, BeanDefinition beanDefinition, Class beanClass) {
116+
String beanName, BeanDefinition beanDefinition, Class<? extends FactoryBean> beanClass) {
120117

121118
if (TransactionProxyFactoryBean.isAssignableFrom(beanClass)) {
122119
getTargetBeanDefinition(factory, beanName,
123120
(BeanDefinition)beanDefinition.propertyValues.getPropertyValue("target").value)
124121
}
125122
else {
126-
throw new BeanCreationException(beanName,
127-
"Unable to determine target bean definition for FactoryBeans of type " + beanClass.name)
123+
beanDefinition
128124
}
129125
}
130126
}

grails-gradle-plugin/src/main/groovy/org/grails/gradle/plugin/core/GrailsExtension.groovy

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.grails.gradle.plugin.core
22

3+
import groovy.transform.CompileStatic
34
import org.apache.tools.ant.taskdefs.condition.Os
45
import org.gradle.api.Project
56
import org.gradle.util.ConfigureUtil
@@ -10,6 +11,7 @@ import org.gradle.util.ConfigureUtil
1011
* @author Graeme Rocher
1112
* @since 3.0
1213
*/
14+
@CompileStatic
1315
class GrailsExtension {
1416
Project project
1517

@@ -58,7 +60,7 @@ class GrailsExtension {
5860
*/
5961
void plugins(Closure pluginDefinitions) {
6062
def definer = new PluginDefiner(project,exploded)
61-
ConfigureUtil.configure(pluginDefinitions, definer, Closure.DELEGATE_FIRST)
63+
ConfigureUtil.configureSelf(pluginDefinitions, definer)
6264
}
6365
/**
6466
* Configuration for the reloading agent

grails-gradle-plugin/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -357,10 +357,12 @@ class GrailsGradlePlugin extends GroovyPlugin {
357357
findMainClass.doLast {
358358
def bootExtension = project.extensions.findByType(SpringBootPluginExtension)
359359
def mainClassName = bootExtension.mainClass
360-
consoleTask.args mainClassName
361-
shellTask.args mainClassName
362-
project.tasks.withType(ApplicationContextCommandTask) { ApplicationContextCommandTask task ->
363-
task.args mainClassName
360+
if(mainClassName) {
361+
consoleTask.args mainClassName
362+
shellTask.args mainClassName
363+
project.tasks.withType(ApplicationContextCommandTask) { ApplicationContextCommandTask task ->
364+
task.args mainClassName
365+
}
364366
}
365367
project.tasks.withType(ApplicationContextScriptTask) { ApplicationContextScriptTask task ->
366368
task.args mainClassName

0 commit comments

Comments
 (0)