@@ -20,6 +20,7 @@ import groovy.transform.CompileStatic
2020
2121import org.codehaus.groovy.grails.commons.GrailsCodecClass
2222import org.codehaus.groovy.runtime.GStringImpl
23+ import org.codehaus.groovy.runtime.NullObject
2324
2425/**
2526 * Helper methods for Codec metaclass operations.
@@ -53,7 +54,7 @@ class CodecMetaClassSupport {
5354 ->
5455 def encoder = codecClass. getEncoder()
5556 if (encoder) {
56- return encoder. encode(delegate)
57+ return encoder. encode(delegate != NullObject.NullObject ? delegate : null )
5758 }
5859
5960 // note the call to delegate.getClass() instead of the more groovy delegate.class.
@@ -66,7 +67,7 @@ class CodecMetaClassSupport {
6667 ->
6768 def decoder = codecClass. getDecoder()
6869 if (decoder) {
69- return decoder. decode(delegate)
70+ return decoder. decode(delegate != NullObject.NullObject ? delegate : null )
7071 }
7172
7273 // note the call to delegate.getClass() instead of the more groovy delegate.class.
@@ -79,13 +80,13 @@ class CodecMetaClassSupport {
7980 // Resolve codec methods once only at startup
8081 def encoder = codecClass. getEncoder()
8182 if (encoder) {
82- encoderClosure = { -> encoder. encode(delegate) }
83+ encoderClosure = { -> encoder. encode(delegate != NullObject.NullObject ? delegate : null ) }
8384 } else {
8485 encoderClosure = { -> throw new MissingMethodException (encodeMethodName, delegate. getClass(), EMPTY_ARGS ) }
8586 }
8687 def decoder = codecClass. getDecoder()
8788 if (decoder) {
88- decoderClosure = { -> decoder. decode(delegate) }
89+ decoderClosure = { -> decoder. decode(delegate != NullObject.NullObject ? delegate : null ) }
8990 } else {
9091 decoderClosure = { -> throw new MissingMethodException (decodeMethodName, delegate. getClass(), EMPTY_ARGS ) }
9192 }
0 commit comments