Skip to content

Commit

Permalink
Merge branch '6.2.x' into 7.0.x
Browse files Browse the repository at this point in the history
 Conflicts:
	.github/workflows/gradle.yml
	.github/workflows/groovy-joint-workflow.yml
	.github/workflows/retry-release.yml
	build.gradle
	gradle.properties
	grails-console/src/main/groovy/grails/ui/shell/support/GroovyshApplicationContext.groovy
	grails-core/src/main/groovy/grails/beans/util/LazyBeanMap.groovy
	grails-core/src/main/groovy/grails/boot/config/GrailsApplicationPostProcessor.groovy
	grails-core/src/main/groovy/grails/util/GrailsUtil.java
	grails-core/src/main/groovy/org/grails/compiler/injection/GlobalGrailsClassInjectorTransformation.groovy
	grails-core/src/test/groovy/org/grails/exception/reporting/StackTracePrinterSpec.groovy
	grails-databinding/src/test/groovy/grails/databinding/XMLBindingSpec.groovy
	grails-plugin-mimetypes/src/test/groovy/grails/web/mime/MimeUtilitySpec.groovy
	grails-shell/src/main/groovy/org/grails/cli/boot/GrailsDependencyVersions.groovy
	grails-test-suite-persistence/src/test/groovy/grails/web/databinding/GrailsWebDataBinderSpec.groovy
	grails-test-suite-uber/src/test/groovy/grails/persistence/EntityTransformTests.groovy
	grails-test-suite-uber/src/test/groovy/grails/test/mixin/unique/UniqueConstraintOnHasOneSpec.groovy
	grails-test-suite-uber/src/test/groovy/org/grails/commons/MultipleClassesPerFileTests.groovy
	grails-test-suite-uber/src/test/groovy/org/grails/commons/UrlMappingsArtefactHandlerTests.groovy
	grails-test-suite-uber/src/test/groovy/org/grails/plugins/testing/GrailsMockHttpServletRequestTests.groovy
	grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalDomainClassJsonRendererSpec.groovy
	grails-test-suite-uber/src/test/groovy/org/grails/plugins/web/rest/render/hal/HalDomainClassXmlRendererSpec.groovy
	grails-test-suite-web/src/test/groovy/org/grails/plugins/web/rest/render/xml/DefaultXmlRendererSpec.groovy
	grails-test-suite-web/src/test/groovy/org/grails/web/binding/JSONBindingToNullSpec.groovy
	grails-test/src/main/groovy/org/grails/plugins/testing/AbstractGrailsMockHttpServletResponse.groovy
	grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/HalGPathResultMapSpec.groovy
  • Loading branch information
jdaugherty committed Oct 2, 2024
2 parents 345a7cb + 6a26d4b commit bc02130
Show file tree
Hide file tree
Showing 48 changed files with 545 additions and 477 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
run: ./gradlew assemble
- name: "📤 Upload Distribution"
if: success()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: grails-${{ steps.release_version.outputs.value }}.zip
path: build/distributions/grails-${{ steps.release_version.outputs.value }}.zip
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/retry-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
ref: "v${{ github.event.inputs.release }}"
token: ${{ secrets.GH_TOKEN }}
- name: "☕️ Setup JDK"
uses: actions/setup-java@v4
uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 # v4
with:
distribution: temurin
java-version: 17
Expand Down
2 changes: 2 additions & 0 deletions gradle/idea.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import groovy.xml.XmlParser

idea {
project {
jdkName "1.7"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ package grails.codegen.model

import grails.util.GrailsNameUtils
import groovy.transform.CompileStatic
import org.codehaus.groovy.runtime.MetaClassHelper
import org.apache.groovy.util.BeanUtils
import org.grails.io.support.FileSystemResource
import org.grails.io.support.GrailsResourceUtils
import org.grails.io.support.Resource
Expand Down Expand Up @@ -89,7 +89,7 @@ trait ModelBuilder {
final String packagePath

ModelImpl(String className) {
this.className = MetaClassHelper.capitalize(GrailsNameUtils.getShortName(className))
this.className = BeanUtils.capitalize(GrailsNameUtils.getShortName(className))
this.fullName = className
this.propertyName = GrailsNameUtils.getPropertyName(className)
this.packageName = GrailsNameUtils.getPackageName(className)
Expand All @@ -111,7 +111,14 @@ trait ModelBuilder {

@Override
Map<String, Object> asMap() {
(Map<String,Object>) [ className: className, fullName: fullName, propertyName: propertyName, modelName: propertyName, packageName: packageName, packagePath: packagePath, simpleName: simpleName, lowerCaseName: lowerCaseName]
[className: className,
fullName: fullName,
propertyName: propertyName,
modelName: propertyName,
packageName: packageName,
packagePath: packagePath,
simpleName: simpleName,
lowerCaseName: lowerCaseName] as Map<String, Object>
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,10 @@
package grails.ui.shell.support

import grails.core.GrailsApplication
import grails.ui.support.DevelopmentWebApplicationContext
import org.apache.groovy.groovysh.Groovysh
import org.codehaus.groovy.tools.shell.IO
import org.springframework.context.support.GenericApplicationContext


/**
* @author Graeme Rocher
* @since 3.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import groovy.transform.InheritConstructors
import org.apache.groovy.groovysh.Groovysh
import org.codehaus.groovy.tools.shell.IO


/**
* @author Graeme Rocher
* @since 3.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class GrailsApplicationPostProcessor implements BeanDefinitionRegistryPostProces
}
this.classes = classes != null ? classes : [] as Class[]
grailsApplication = applicationClass != null ? new DefaultGrailsApplication(applicationClass) : new DefaultGrailsApplication()
pluginManager = new DefaultGrailsPluginManager(grailsApplication)
pluginManager = applicationContext?.getBeanNamesForType(GrailsPluginManager) ? applicationContext.getBean(GrailsPluginManager) : new DefaultGrailsPluginManager(grailsApplication)
if(applicationContext != null) {
setApplicationContext(applicationContext)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
*/
package grails.util;

import grails.util.GrailsStringUtils;
import groovy.lang.GroovyObjectSupport;
import org.codehaus.groovy.runtime.DefaultGroovyMethods;
import org.codehaus.groovy.util.HashCodeHelper;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ abstract class GrailsStringUtils extends StringUtils{
* Same as {@link StringUtils#isEmpty(java.lang.Object)} but trims the string for surrounding whitespace
*/
static boolean isBlank(String str) {
isEmpty(str?.trim())
!hasText(str?.trim())
}

/**
Expand All @@ -179,7 +179,7 @@ abstract class GrailsStringUtils extends StringUtils{
* Opposite of {@link GrailsStringUtils#isEmpty(java.lang.Object)}
*/
static boolean isNotEmpty(String str) {
!isEmpty(str)
hasText(str)
}

/**
Expand Down
15 changes: 0 additions & 15 deletions grails-core/src/main/groovy/grails/util/GrailsUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,27 +15,12 @@
*/
package grails.util;

import grails.io.IOUtils;
import groovy.lang.Binding;
import groovy.lang.GroovyShell;
import groovy.lang.Writable;
import groovy.xml.slurpersupport.GPathResult;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.grails.core.io.CachingPathMatchingResourcePatternResolver;
import org.grails.exceptions.reporting.DefaultStackTraceFilterer;
import org.grails.exceptions.reporting.StackTraceFilterer;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.Writer;
import java.net.URL;
import java.util.jar.Attributes;
import java.util.jar.Manifest;

/**
* Grails utility methods for command line and GUI applications.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class GrailsFactoriesLoader extends FactoriesLoaderSupport {
boolean hasArguments = !(arguments != null && arguments.length==0)
List<T> results = new ArrayList<T>()
for(Class<? extends T> clazz : loadFactoryClasses(factoryClass, classLoader)) {
results.add(hasArguments ? clazz.newInstance(arguments) : clazz.newInstance())
results.add(hasArguments ? clazz.newInstance(arguments) : clazz.getDeclaredConstructor().newInstance())
}
OrderComparator.sort((List<?>) results)
results
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class EnhancesSpec extends Specification{
void "Test that the enhances trait transform works as expected"() {

when:"The generated transformer is loaded"
def traitInjector = getClass().classLoader.loadClass("grails.artefact.FooTraitInjector").newInstance()
def traitInjector = getClass().classLoader.loadClass("grails.artefact.FooTraitInjector").getDeclaredConstructor().newInstance()

then:"It is a valid trait injector"
traitInjector instanceof TraitInjector
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,10 @@ package org.grails.core.io

import groovy.xml.XmlSlurper
import grails.core.DefaultGrailsApplication
import org.grails.plugins.BinaryGrailsPlugin
import org.grails.plugins.BinaryGrailsPluginDescriptor
import org.grails.plugins.MockBinaryPluginResource
import org.grails.plugins.MockGrailsPluginManager
import org.grails.plugins.TestBinaryGrailsPlugin
import groovy.xml.XmlSlurper
import org.grails.plugins.*
import org.springframework.core.io.ByteArrayResource
import org.springframework.core.io.ResourceLoader

import spock.lang.Specification

class ResourceLocatorSpec extends Specification {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class FooController {
filterer.setCutOffPackage("org.spockframework.util")
Throwable exception
try {
cls.newInstance().show()
cls.getDeclaredConstructor().newInstance().show()
} catch (e) {
filterer.filter(e)
exception = e
Expand Down Expand Up @@ -77,7 +77,7 @@ class FooService {
filterer.setCutOffPackage("org.spockframework.util")
Throwable exception
try {
cls.newInstance().show()
cls.getDeclaredConstructor().newInstance().show()
} catch (e) {
filterer.filter(e, true)
println getExceptionContents(e)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package org.grails.plugins

import grails.boot.config.GrailsAutoConfiguration
import grails.core.DefaultGrailsApplication
import grails.core.GrailsApplication
import grails.plugins.GrailsPlugin
import grails.plugins.GrailsPluginManager
import groovy.transform.CompileStatic
import org.grails.plugins.DefaultGrailsPlugin
import org.grails.plugins.MockGrailsPluginManager
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.core.io.FileSystemResource
Expand All @@ -24,17 +21,17 @@ class GrailsPluginConfigurationClass extends GrailsAutoConfiguration {

@Bean(name = "grailsPluginManager")
GrailsPluginManager getGrailsPluginManager() {
String tempDir = System.getProperty("java.io.tmpdir")
GrailsApplication grailsApplication = new DefaultGrailsApplication()
final MockGrailsPluginManager pluginManager = new MockGrailsPluginManager(grailsApplication)
final List<DefaultGrailsPlugin> plugins = createGrailsPlugins(grailsApplication)
plugins.forEach({ plugin -> pluginManager.registerMockPlugin((GrailsPlugin) plugin)})
return pluginManager
MockGrailsPluginManager pluginManager = new MockGrailsPluginManager()
createGrailsPlugins(pluginManager.application).each {
pluginManager.registerMockPlugin(it)
}
pluginManager
}

private List<DefaultGrailsPlugin> createGrailsPlugins(DefaultGrailsApplication grailsApplication) {
private List<GrailsPlugin> createGrailsPlugins(GrailsApplication grailsApplication) {
final String grailsVersion = '4.0.1'
def gcl = new GroovyClassLoader()

GrailsPlugin plugin = new MockTestGrailsPlugin(gcl.parseClass("""class TestGrailsPlugin {
def version = '1.0.0'
def grailsVersion = '$grailsVersion'
Expand All @@ -45,7 +42,8 @@ class GrailsPluginConfigurationClass extends GrailsAutoConfiguration {
def version = '1.0.0'
def grailsVersion = '$grailsVersion'
}"""), grailsApplication)
[plugin, plugin2]

List<GrailsPlugin>.of(plugin, plugin2)
}

class MockTestGrailsPlugin extends DefaultGrailsPlugin {
Expand Down Expand Up @@ -82,10 +80,6 @@ class GrailsPluginConfigurationClass extends GrailsAutoConfiguration {

class MockTestTwoGrailsPlugin extends DefaultGrailsPlugin {

MockTestTwoGrailsPlugin(Class<?> pluginClass, Resource resource, GrailsApplication application) {
super(pluginClass, resource, application)
}

MockTestTwoGrailsPlugin(Class<?> pluginClass, GrailsApplication application) {
super(pluginClass, application)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -344,11 +344,11 @@ class SimpleDataBinder implements DataBinder {
} else if (isBasicType(genericType)) {
addElementToCollectionAt obj, propName, collectionInstance, index, convert(genericType, val)
} else if (val instanceof Map){
indexedInstance = genericType.newInstance()
indexedInstance = genericType.getDeclaredConstructor().newInstance()
bind indexedInstance, new SimpleMapDataBindingSource(val), listener
addElementToCollectionAt obj, propName, collectionInstance, index, indexedInstance
} else if (val instanceof DataBindingSource) {
indexedInstance = genericType.newInstance()
indexedInstance = genericType.getDeclaredConstructor().newInstance()
bind indexedInstance, val, listener
addElementToCollectionAt obj, propName, collectionInstance, index, indexedInstance
} else if(genericType.isEnum() && val instanceof CharSequence) {
Expand Down Expand Up @@ -752,7 +752,7 @@ class SimpleDataBinder implements DataBinder {
obj[propName] = initializer.initialize()
}
else{
obj[propName] = propertyType.newInstance()
obj[propName] = propertyType.getDeclaredConstructor().newInstance()
}
}

Expand Down Expand Up @@ -815,7 +815,7 @@ class SimpleDataBinder implements DataBinder {
} else if (typeToConvertTo.isPrimitive() || typeToConvertTo.isArray()) {
return value
} else if (value instanceof Map) {
def obj = typeToConvertTo.newInstance()
def obj = typeToConvertTo.getDeclaredConstructor().newInstance()
bind obj, new SimpleMapDataBindingSource(value)
return obj
} else if (Enum.isAssignableFrom(typeToConvertTo) && value instanceof String) {
Expand Down
Loading

0 comments on commit bc02130

Please sign in to comment.