Skip to content

Commit 7534a79

Browse files
committed
Merge branch '3.2.x' of https://github.com/grails/grails-core into 3.2.x
2 parents 1f47caf + ff4050e commit 7534a79

File tree

9 files changed

+116
-53
lines changed

9 files changed

+116
-53
lines changed

grails-bom/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ publishing {
130130
}
131131
}
132132

133-
['core', 'simple','web','rest-client','gorm', 'gorm-support', 'test-support', 'gorm-cassandra', 'gorm-mongodb', 'gorm-neo4j', 'gorm-hibernate4', 'gorm-hibernate5', 'gorm-hibernate', 'gorm-test'].each { name ->
133+
['core', 'simple','web','rest-client','gorm', 'gorm-validation', 'gorm-support', 'test-support', 'hibernate-core','gorm-test'].each { name ->
134134
mkp.dependency {
135135
mkp.groupId 'org.grails'
136136
mkp.artifactId "grails-datastore-$name"

grails-bom/plugins.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
hibernate4=6.0.8
22
hibernate5=6.0.8
33
mongodb=6.0.8
4-
rx-gorm-rest-client=1.0.4.RELEASE
4+
rx-gorm-rest-client=1.0.5.RELEASE
55
rx-mongodb=6.0.8
66
neo4j=6.0.8
77
cache=3.0.3

grails-bom/profiles.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
angular=3.2.2
22
rest-api=3.2.1
33
rest-api-plugin=3.2.0
4-
base=3.2.6.BUILD-SNAPSHOT
4+
base=3.2.7.BUILD-SNAPSHOT
55
plugin=3.2.1
66
web-plugin=3.2.0
77
web-jboss7=1.0.0.RC2
88
web=3.2.1
99
profile=3.2.1
10-
angular2=1.0.4.BUILD-SNAPSHOT
10+
angular2=1.0.4
1111
react=2.0.1
1212
webpack=1.0.2

grails-bootstrap/src/main/groovy/grails/io/IOUtils.groovy

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ class IOUtils extends SpringIOUtils {
230230

231231

232232
@Memoized
233-
public static File findApplicationDirectoryFile() {
233+
static File findApplicationDirectoryFile() {
234234
def directory = findApplicationDirectory()
235235
if(directory) {
236236
def f = new File(directory)
@@ -248,7 +248,7 @@ class IOUtils extends SpringIOUtils {
248248
* @param targetClass The target class
249249
* @return The application directory or null if it can't be found
250250
*/
251-
public static File findApplicationDirectoryFile(Class targetClass) {
251+
static File findApplicationDirectoryFile(Class targetClass) {
252252

253253
def rootResource = findRootResource(targetClass)
254254
if(rootResource != null) {
@@ -267,8 +267,46 @@ class IOUtils extends SpringIOUtils {
267267
return null
268268
}
269269

270+
/**
271+
* Finds a source file for the given class name
272+
*
273+
* @param className The class name
274+
* @return The source file
275+
*/
276+
@Memoized
277+
static File findSourceFile(String className) {
278+
File applicationDir = BuildSettings.BASE_DIR
279+
File file = null
280+
if(applicationDir != null) {
281+
String fileName = className.replace('.' as char, File.separatorChar) + '.groovy'
282+
List<File> allFiles = [ new File(applicationDir, "src/main/groovy") ]
283+
File[] files = new File(applicationDir, "grails-app").listFiles(new FileFilter() {
284+
@Override
285+
boolean accept(File f) {
286+
return f.isDirectory() && !f.isHidden() && !f.name.startsWith('.')
287+
}
288+
})
289+
if(files != null) {
290+
allFiles.addAll( Arrays.asList(files) )
291+
}
292+
for(File dir in allFiles) {
293+
File possibleFile = new File(dir, fileName)
294+
if(possibleFile.exists()) {
295+
file = possibleFile
296+
break
297+
}
298+
}
299+
300+
}
301+
return file
302+
}
303+
304+
/**
305+
* Finds the directory where the Application class is contained
306+
* @return The application directory
307+
*/
270308
@Memoized
271-
public static String findApplicationDirectory() {
309+
static String findApplicationDirectory() {
272310
if(applicationDirectory) {
273311
return applicationDirectory
274312
}
@@ -296,10 +334,10 @@ class IOUtils extends SpringIOUtils {
296334
final Class<?> mainClass = Thread.currentThread().contextClassLoader.loadClass(mainClassName)
297335
final URL classResource = mainClass ? findClassResource(mainClass) : null
298336
if(classResource) {
299-
def file = new UrlResource(classResource).getFile()
300-
def path = file.canonicalPath
337+
File file = new UrlResource(classResource).getFile()
338+
String path = file.canonicalPath
301339

302-
def buildClassespath = BuildSettings.BUILD_CLASSES_PATH.replace('/', File.separator)
340+
String buildClassespath = BuildSettings.BUILD_CLASSES_PATH.replace('/', File.separator)
303341
if(path.contains(buildClassespath)) {
304342
location = path.substring(0, path.indexOf(buildClassespath) - 1)
305343
}
@@ -312,6 +350,6 @@ class IOUtils extends SpringIOUtils {
312350
// ignore
313351
}
314352
applicationDirectory = location
315-
return location;
353+
return location
316354
}
317355
}

grails-gradle-plugin/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ dependencies {
2323
}
2424

2525
compile "org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion"
26-
compile 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
27-
compile "io.spring.gradle:dependency-management-plugin:0.6.0.RELEASE"
26+
compile 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
27+
compile "io.spring.gradle:dependency-management-plugin:0.6.1.RELEASE"
2828
compile 'com.netflix.nebula:gradle-extra-configurations-plugin:2.2.0'
2929
}

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

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ import grails.util.BuildSettings
1919
import grails.util.Environment
2020
import grails.util.GrailsNameUtils
2121
import grails.util.Metadata
22-
import groovy.transform.CompileDynamic
2322
import groovy.transform.CompileStatic
23+
import io.spring.gradle.dependencymanagement.DependencyManagementExtension
2424
import io.spring.gradle.dependencymanagement.DependencyManagementPlugin
2525
import nebula.plugin.extraconfigurations.ProvidedBasePlugin
2626
import org.apache.tools.ant.filters.EscapeUnicode
2727
import org.apache.tools.ant.filters.ReplaceTokens
28+
import org.gradle.api.Action
2829
import org.gradle.api.JavaVersion
2930
import org.gradle.api.Plugin
3031
import org.gradle.api.Project
@@ -33,7 +34,6 @@ import org.gradle.api.artifacts.Configuration
3334
import org.gradle.api.artifacts.ConfigurationContainer
3435
import org.gradle.api.artifacts.Dependency
3536
import org.gradle.api.artifacts.DependencyResolveDetails
36-
import org.gradle.api.file.CopySpec
3737
import org.gradle.api.file.FileCollection
3838
import org.gradle.api.java.archives.Manifest
3939
import org.gradle.api.plugins.GroovyPlugin
@@ -72,6 +72,7 @@ import javax.inject.Inject
7272
class GrailsGradlePlugin extends GroovyPlugin {
7373
public static final String APPLICATION_CONTEXT_COMMAND_CLASS = "grails.dev.commands.ApplicationCommand"
7474
public static final String PROFILE_CONFIGURATION = "profile"
75+
public static final List<String> CORE_GORM_LIBRARIES = ['core', 'simple', 'web', 'rest-client', 'gorm', 'gorm-validation', 'gorm-support', 'test-support', 'hibernate-core', 'gorm-test']
7576
List<Class<Plugin>> basePluginClasses = [ProvidedBasePlugin, IntegrationTestGradlePlugin]
7677
List<String> excludedGrailsAppSourceDirs = ['migrations', 'assets']
7778
List<String> grailsAppResourceDirs = ['views', 'i18n', 'conf']
@@ -148,9 +149,39 @@ class GrailsGradlePlugin extends GroovyPlugin {
148149
project.plugins.apply(SpringBootPlugin)
149150
}
150151

151-
if (!project.plugins.findPlugin(DependencyManagementPlugin)) {
152+
DependencyManagementPlugin dependencyManagementPlugin = project.plugins.findPlugin(DependencyManagementPlugin)
153+
if (dependencyManagementPlugin == null) {
152154
project.plugins.apply(DependencyManagementPlugin)
153155
}
156+
157+
DependencyManagementExtension dme = project.extensions.findByType(DependencyManagementExtension)
158+
159+
applyBomImport(dme, project)
160+
161+
if(project.hasProperty('gormVersion')) {
162+
String gormVersion = project.properties['gormVersion']
163+
project.configurations.all( { Configuration configuration ->
164+
configuration.resolutionStrategy.eachDependency( { DependencyResolveDetails details ->
165+
String dependencyName = details.requested.name
166+
if(details.requested.group == 'org.grails' &&
167+
dependencyName.startsWith('grails-datastore')) {
168+
for(suffix in GrailsGradlePlugin.CORE_GORM_LIBRARIES) {
169+
if(dependencyName.endsWith(suffix)) {
170+
details.useVersion(gormVersion)
171+
return
172+
}
173+
}
174+
}
175+
} as Action<DependencyResolveDetails>)
176+
} as Action<Configuration>)
177+
}
178+
}
179+
180+
private void applyBomImport(DependencyManagementExtension dme, project) {
181+
dme.imports({
182+
mavenBom("org.grails:grails-bom:${project.properties['grailsVersion']}")
183+
})
184+
dme.setApplyMavenExclusions(false)
154185
}
155186

156187
protected String getDefaultProfile() {

grails-plugin-rest/src/main/groovy/org/grails/plugins/web/rest/transform/ResourceTransform.groovy

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package org.grails.plugins.web.rest.transform
1717

18+
import grails.io.IOUtils
19+
1820
import static java.lang.reflect.Modifier.*
1921
import static org.grails.compiler.injection.GrailsASTUtils.*
2022
import grails.artefact.Artefact
@@ -69,8 +71,6 @@ import org.grails.compiler.injection.GrailsAwareInjectionOperation
6971
import org.grails.compiler.injection.TraitInjectionUtils
7072
import org.grails.compiler.web.ControllerActionTransformer
7173
import org.grails.core.artefact.ControllerArtefactHandler
72-
import org.grails.core.io.DefaultResourceLocator
73-
import org.grails.core.io.ResourceLocator
7474
import org.grails.transaction.transform.TransactionalTransform
7575
import org.springframework.beans.factory.annotation.Autowired
7676
import org.springframework.beans.factory.annotation.Qualifier
@@ -99,18 +99,8 @@ class ResourceTransform implements ASTTransformation, CompilationUnitAware {
9999
public static final String REDIRECT_METHOD = "redirect"
100100
public static final ClassNode AUTOWIRED_CLASS_NODE = new ClassNode(Autowired).getPlainNodeReference()
101101

102-
private ResourceLocator resourceLocator
103102
private CompilationUnit unit
104103

105-
ResourceLocator getResourceLocator() {
106-
if (resourceLocator == null) {
107-
resourceLocator = new DefaultResourceLocator()
108-
String basedir = BuildSettings.BASE_DIR.absolutePath
109-
110-
resourceLocator.setSearchLocation(basedir)
111-
}
112-
return resourceLocator
113-
}
114104

115105
@Override
116106
void visit(ASTNode[] astNodes, SourceUnit source) {
@@ -124,10 +114,8 @@ class ResourceTransform implements ASTTransformation, CompilationUnitAware {
124114
return
125115
}
126116

127-
final resourceLocator = getResourceLocator()
128-
final className = "${parent.name}${ControllerArtefactHandler.TYPE}"
129-
final resource = resourceLocator.findResourceForClassName(className)
130-
117+
String className = "${parent.name}${ControllerArtefactHandler.TYPE}"
118+
final File resource = IOUtils.findSourceFile(className)
131119
LinkableTransform.addLinkingMethods(parent)
132120

133121
if (resource == null) {

grails-shell/src/main/groovy/org/grails/cli/profile/commands/CreateAppCommand.groovy

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import org.grails.cli.profile.Feature
3333
import org.grails.cli.profile.Profile
3434
import org.grails.cli.profile.ProfileRepository
3535
import org.grails.cli.profile.ProfileRepositoryAware
36+
import org.grails.cli.profile.repository.MavenProfileRepository
3637
import org.grails.io.support.FileSystemResource
3738
import org.grails.io.support.Resource
3839
import java.nio.file.FileVisitResult
@@ -226,6 +227,14 @@ class CreateAppCommand extends ArgumentCompletingCommand implements ProfileRepos
226227

227228
initializeVariables(cmd.appName, defaultpackagename, profileName, cmd.grailsVersion)
228229

230+
if(profileRepository instanceof MavenProfileRepository) {
231+
MavenProfileRepository mpr = (MavenProfileRepository)profileRepository
232+
org.springframework.boot.cli.compiler.dependencies.Dependency gormDep = mpr.profileDependencyVersions.find("org.grails", "grails-datastore-core")
233+
if(gormDep != null) {
234+
variables['gorm.version'] = gormDep.version
235+
}
236+
}
237+
229238
Path appFullDirectory = Paths.get(cmd.baseDir.path, appname)
230239

231240
File projectTargetDirectory = cmd.inplace ? new File(".").canonicalFile : appFullDirectory.toAbsolutePath().normalize().toFile()

grails-shell/src/main/groovy/org/grails/cli/profile/repository/GrailsAetherGrapeEngineFactory.groovy

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ import org.eclipse.aether.RepositorySystem
66
import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory
77
import org.eclipse.aether.impl.DefaultServiceLocator
88
import org.eclipse.aether.internal.impl.DefaultRepositorySystem
9-
import org.eclipse.aether.repository.Authentication
10-
import org.eclipse.aether.repository.AuthenticationContext
11-
import org.eclipse.aether.repository.AuthenticationDigest
129
import org.eclipse.aether.repository.RemoteRepository
1310
import org.eclipse.aether.repository.RepositoryPolicy
1411
import org.eclipse.aether.spi.connector.RepositoryConnectorFactory
@@ -31,49 +28,49 @@ import org.springframework.boot.cli.compiler.grape.RepositorySystemSessionAutoCo
3128
*/
3229
class GrailsAetherGrapeEngineFactory {
3330

34-
public static AetherGrapeEngine create(GroovyClassLoader classLoader,
31+
static AetherGrapeEngine create(GroovyClassLoader classLoader,
3532
List<GrailsRepositoryConfiguration> repositoryConfigurations,
3633
DependencyResolutionContext dependencyResolutionContext) {
3734

3835
RepositorySystem repositorySystem = createServiceLocator()
39-
.getService(RepositorySystem.class);
36+
.getService(RepositorySystem.class)
4037

4138
DefaultRepositorySystemSession repositorySystemSession = MavenRepositorySystemUtils
42-
.newSession();
39+
.newSession()
4340

4441
ServiceLoader<RepositorySystemSessionAutoConfiguration> autoConfigurations = ServiceLoader
45-
.load(RepositorySystemSessionAutoConfiguration.class);
42+
.load(RepositorySystemSessionAutoConfiguration.class)
4643

4744
for (RepositorySystemSessionAutoConfiguration autoConfiguration : autoConfigurations) {
48-
autoConfiguration.apply(repositorySystemSession, repositorySystem);
45+
autoConfiguration.apply(repositorySystemSession, repositorySystem)
4946
}
5047

5148
new DefaultRepositorySystemSessionAutoConfiguration()
52-
.apply(repositorySystemSession, repositorySystem);
49+
.apply(repositorySystemSession, repositorySystem)
5350

5451
return new AetherGrapeEngine(classLoader, repositorySystem,
5552
repositorySystemSession, createRepositories(repositoryConfigurations),
56-
dependencyResolutionContext);
53+
dependencyResolutionContext)
5754
}
5855

5956
private static ServiceLocator createServiceLocator() {
60-
DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
61-
locator.addService(RepositorySystem.class, DefaultRepositorySystem.class);
57+
DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator()
58+
locator.addService(RepositorySystem.class, DefaultRepositorySystem.class)
6259
locator.addService(RepositoryConnectorFactory.class,
63-
BasicRepositoryConnectorFactory.class);
64-
locator.addService(TransporterFactory.class, HttpTransporterFactory.class);
65-
locator.addService(TransporterFactory.class, FileTransporterFactory.class);
66-
return locator;
60+
BasicRepositoryConnectorFactory.class)
61+
locator.addService(TransporterFactory.class, HttpTransporterFactory.class)
62+
locator.addService(TransporterFactory.class, FileTransporterFactory.class)
63+
return locator
6764
}
6865

6966
private static List<RemoteRepository> createRepositories(
7067
List<GrailsRepositoryConfiguration> repositoryConfigurations) {
7168
List<RemoteRepository> repositories = new ArrayList<RemoteRepository>(
72-
repositoryConfigurations.size());
69+
repositoryConfigurations.size())
7370
for (GrailsRepositoryConfiguration repositoryConfiguration : repositoryConfigurations) {
7471
RemoteRepository.Builder builder = new RemoteRepository.Builder(
7572
repositoryConfiguration.getName(), "default",
76-
repositoryConfiguration.getUri().toASCIIString());
73+
repositoryConfiguration.getUri().toASCIIString())
7774
if (repositoryConfiguration.hasCredentials()) {
7875
builder.authentication = new AuthenticationBuilder()
7976
.addUsername(repositoryConfiguration.username)
@@ -83,10 +80,10 @@ class GrailsAetherGrapeEngineFactory {
8380
if (!repositoryConfiguration.getSnapshotsEnabled()) {
8481
builder.setSnapshotPolicy(
8582
new RepositoryPolicy(false, RepositoryPolicy.UPDATE_POLICY_NEVER,
86-
RepositoryPolicy.CHECKSUM_POLICY_IGNORE));
83+
RepositoryPolicy.CHECKSUM_POLICY_IGNORE))
8784
}
88-
repositories.add(builder.build());
85+
repositories.add(builder.build())
8986
}
90-
return repositories;
87+
return repositories
9188
}
9289
}

0 commit comments

Comments
 (0)