Skip to content

Commit

Permalink
Update project to, and make compatible with, Groovy 3.0.19 (#13237)
Browse files Browse the repository at this point in the history
* Update project to, and make compatible with, Groovy 3.0.19

* Downgrade project to Groovy 3.0.11 again
  • Loading branch information
matrei committed Nov 29, 2023
1 parent b5ca0b6 commit f4b8ec6
Show file tree
Hide file tree
Showing 12 changed files with 30 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
*/
package org.grails.compiler

import java.lang.reflect.Modifier

import static org.codehaus.groovy.ast.ClassHelper.CLASS_Type
import static org.codehaus.groovy.ast.ClassHelper.Integer_TYPE
import static org.codehaus.groovy.ast.ClassHelper.LIST_TYPE
Expand All @@ -32,9 +34,9 @@ import org.codehaus.groovy.transform.stc.GroovyTypeCheckingExtensionSupport.Type
class DynamicFinderTypeCheckingExtension extends TypeCheckingDSL {

@Override
public Object run() {
Object run() {
methodNotFound { ClassNode receiver, String name, ArgumentListExpression argList, ClassNode[] argTypes, MethodCall call ->
def dynamicCall
def dynamicCall = null
if(receiver == CLASS_Type) {
def genericsTypes = receiver.genericsTypes
if(genericsTypes) {
Expand Down Expand Up @@ -68,6 +70,7 @@ class DynamicFinderTypeCheckingExtension extends TypeCheckingDSL {

protected makeDynamicGormCall(MethodCall call, ClassNode returnTypeNode, ClassNode domainClassTypeNode) {
def dynamicCall = makeDynamic(call, returnTypeNode)
dynamicCall.modifiers = Modifier.STATIC
dynamicCall.declaringClass = domainClassTypeNode
dynamicCall
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class NavigableMapPropertySource extends MapPropertySource {
super(name, source)
this.propertyNames = source.keySet().findAll() { key ->
!(source.get(key) instanceof NavigableMap)
}
} as String[]
navigablePropertyNames = StringUtils.toStringArray(source.keySet());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class SimpleMapDataBindingSource implements DataBindingSource {
}

Set<String> getPropertyNames() {
map.keySet()
map.keySet() as Set<String>
}

Object getPropertyValue(String propertyName) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ trait RestResponder {

final valueType = value.getClass()
if (registry.isContainerType(valueType)) {
renderer = registry.findContainerRenderer(mimeType,valueType, value)
renderer = registry.findContainerRenderer(mimeType, valueType, value)
if (renderer == null) {
renderer = registry.findRenderer(mimeType, value)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,5 @@ interface Renderer<T> extends MimeTypeProvider {
*
* @return Optional return value, those to that directly write typically return null
*/
void render(T object, RenderContext context)
void render(Object object, RenderContext context)
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,15 @@ class VndErrorJsonRenderer extends AbstractVndErrorRenderer {
MimeType[] mimeTypes = [MIME_TYPE, MimeType.HAL_JSON, MimeType.JSON, MimeType.TEXT_JSON] as MimeType[]

@Override
void render(Errors object, RenderContext context) {
void render(Object object, RenderContext context) {
if (messageSource == null) throw new IllegalStateException("messageSource property null")
if (object instanceof BeanPropertyBindingResult) {

def errors = object as BeanPropertyBindingResult
context.setContentType(GrailsWebUtil.getContentType(MIME_TYPE.name, encoding))
context.setStatus(HttpStatus.UNPROCESSABLE_ENTITY)
Locale locale = context.locale
final target = object.target
final target = errors.target

def responseWriter = context.writer
Writer targetWriter = prettyPrint ? new StringWriter() : responseWriter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,20 +44,21 @@ class VndErrorXmlRenderer extends AbstractVndErrorRenderer {
MimeType[] mimeTypes = [MIME_TYPE, MimeType.HAL_XML, MimeType.XML, MimeType.TEXT_XML] as MimeType[]

@Override
void render(Errors object, RenderContext context) {
void render(Object object, RenderContext context) {
if (object instanceof BeanPropertyBindingResult) {
def errors = object as BeanPropertyBindingResult
context.setContentType(GrailsWebUtil.getContentType(MIME_TYPE.name, encoding))
context.setStatus(HttpStatus.UNPROCESSABLE_ENTITY)
Locale locale = context.locale
final target = object.target
final target = errors.target
final language = locale.language

final streamingWriter = new StreamingMarkupWriter(context.writer, encoding)
XMLStreamWriter w = prettyPrint ? new PrettyPrintXMLStreamWriter(streamingWriter) : new XMLStreamWriter(streamingWriter)
w.startDocument(encoding, "1.0")
w.startNode(ERRORS_TAG)
.attribute('xml:lang', language)
for (ObjectError oe in object.allErrors) {
for (ObjectError oe in errors.allErrors) {
def logref = resolveLogRef(target, oe)
w.startNode(ERROR_TAG)
.attribute(LOGREF_ATTRIBUTE, logref)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ abstract class AbstractLinkingRenderer<T> extends AbstractIncludeExcludeRenderer
}

@Override
final void render(T object, RenderContext context) {
final void render(Object object, RenderContext context) {
final mimeType = context.acceptMimeType ?: getMimeTypes()[0]
context.setContentType( GrailsWebUtil.getContentType(mimeType.name, encoding) )

Expand All @@ -107,14 +107,14 @@ abstract class AbstractLinkingRenderer<T> extends AbstractIncludeExcludeRenderer
if (htmlRenderer == null) {
htmlRenderer = new DefaultHtmlRenderer(targetType)
}
htmlRenderer.render((Object)object, context)
htmlRenderer.render(object, context)
} else {
renderInternal(object, context)
}

}

abstract void renderInternal(T object, RenderContext context)
abstract void renderInternal(Object object, RenderContext context)

protected boolean isDomainResource(Class clazz) {
if(mappingContext != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ class DefaultRendererRegistry extends ClassAndMimeTypeRegistry<Renderer, Rendere
def <C, T> Renderer<C> findContainerRenderer(MimeType mimeType, Class<C> containerType, T object) {
if (object == null) return null
if (proxyHandler != null) {
object = (T)proxyHandler.unwrapIfProxy(object)
object = proxyHandler.unwrapIfProxy(object) as T
}

def originalTargetClass = object instanceof Class ? (Class) object : object.getClass()
Expand All @@ -154,8 +154,7 @@ class DefaultRendererRegistry extends ClassAndMimeTypeRegistry<Renderer, Rendere
renderer = containerRenderers.get(key)
if (renderer != null) break
else {
//TODO: Remove explicit type-cast (Class<?>) once GROOVY-9460 is fixed
final containerInterfaces = GrailsClassUtils.getAllInterfacesForClass((Class<?>) containerType)
final containerInterfaces = GrailsClassUtils.getAllInterfacesForClass(containerType)
for(Class i in containerInterfaces) {
key = new ContainerRendererCacheKey(i, targetClass, mimeType)
renderer = containerRenderers.get(key)
Expand All @@ -168,16 +167,14 @@ class DefaultRendererRegistry extends ClassAndMimeTypeRegistry<Renderer, Rendere
}

if (renderer == null) {
//TODO: Remove explicit type-cast (Class<?>) once GROOVY-9460 is fixed
final interfaces = GrailsClassUtils.getAllInterfacesForClass(originalTargetClass)
outer:
for(Class i in interfaces) {
key = new ContainerRendererCacheKey(containerType, i, mimeType)
renderer = containerRenderers.get(key)
if (renderer) break
else {
//TODO: Remove explicit type-cast (Class<?>) once GROOVY-9460 is fixed
final containerInterfaces = GrailsClassUtils.getAllInterfacesForClass((Class<?>) containerType)
final containerInterfaces = GrailsClassUtils.getAllInterfacesForClass(containerType)
for(Class ci in containerInterfaces) {
key = new ContainerRendererCacheKey(ci, i, mimeType)
renderer = containerRenderers.get(key)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class DefaultHtmlRenderer<T> implements Renderer<T> {
}

@Override
void render(T object, RenderContext context) {
void render(Object object, RenderContext context) {
final mimeType = context.acceptMimeType ?: MimeType.HTML
if (!mimeType.equals(MimeType.ALL)) {
context.setContentType(mimeType.name)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ class DefaultXmlRenderer<T> implements Renderer<T> {
}

@Override
void render(T object, RenderContext context) {
void render(Object object, RenderContext context) {
final mimeType = context.acceptMimeType ?: MimeType.XML
context.setContentType( GrailsWebUtil.getContentType(mimeType.name, encoding) )

Expand Down Expand Up @@ -97,7 +97,7 @@ class DefaultXmlRenderer<T> implements Renderer<T> {
* @param object
* @param context
*/
protected void renderXml(T object, RenderContext context) {
protected void renderXml(Object object, RenderContext context) {
XML converter

if(namedConfiguration) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -514,4 +514,9 @@ abstract class AbstractProfile implements Profile {
List<String> getSkeletonExcludes() {
this.skeletonExcludes
}

@Override
String getName() {
name
}
}

0 comments on commit f4b8ec6

Please sign in to comment.