Skip to content

Commit f1676ec

Browse files
Working on #9365
Refactoring codecs to use Groovy extension methods
1 parent 01df8c6 commit f1676ec

File tree

6 files changed

+16
-23
lines changed

6 files changed

+16
-23
lines changed

grails-codecs/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
dependencies {
2+
compile 'commons-codec:commons-codec:1.6'
23
}

grails-plugin-codecs/src/main/groovy/org/grails/plugins/codecs/Base64Codec.groovy renamed to grails-codecs/src/main/groovy/org/grails/plugins/codecs/Base64CodecExtensionMethods.groovy

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@
1515
*/
1616
package org.grails.plugins.codecs
1717

18-
import org.codehaus.groovy.runtime.DefaultGroovyMethods
1918
import org.apache.commons.codec.binary.Base64
19+
import org.codehaus.groovy.runtime.NullObject
2020

2121
/**
2222
* A codec that encodes and decodes Objects using Base64 encoding.
2323
*
2424
* @author Drew Varner
2525
*/
26-
class Base64Codec {
26+
class Base64CodecExtensionMethods {
2727

28-
static encode = { theTarget ->
29-
if (theTarget == null) {
28+
static encodeAsBase64(theTarget) {
29+
if (theTarget == null || theTarget instanceof NullObject) {
3030
return null
3131
}
3232

@@ -37,8 +37,8 @@ class Base64Codec {
3737
return new String(Base64.encodeBase64(theTarget.toString().getBytes("UTF-8")))
3838
}
3939

40-
static decode = { theTarget ->
41-
if (theTarget == null) {
40+
static decodeBase64(theTarget) {
41+
if (theTarget == null || theTarget instanceof NullObject) {
4242
return null
4343
}
4444

grails-codecs/src/main/resources/META-INF/services/org.codehaus.groovy.runtime.ExtensionModule

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
moduleName=grails-codecs
22
moduleVersion=3.0
3-
extensionClasses=org.grails.plugins.codecs.HexCodecExtensionMethods,\
3+
extensionClasses=org.grails.plugins.codecs.Base64CodecExtensionMethods,\
4+
org.grails.plugins.codecs.HexCodecExtensionMethods,\
45
org.grails.plugins.codecs.MD5BytesCodecExtensionMethods,\
56
org.grails.plugins.codecs.MD5CodecExtensionMethods,\
67
org.grails.plugins.codecs.SHA1BytesCodecExtensionMethods,\
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
package org.grails.web.codecs
22

3-
import org.grails.plugins.codecs.Base64Codec
4-
import org.springframework.core.io.*
5-
63
class Base64CodecTests extends GroovyTestCase {
74

8-
def codec = new Base64Codec()
9-
def resourceLoader = new DefaultResourceLoader()
10-
115
byte[] dataPrimitive = new byte[256]
126
Byte[] dataWrapper = new Byte[256]
137

@@ -23,31 +17,31 @@ class Base64CodecTests extends GroovyTestCase {
2317
def expectedResult = 'AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w=='
2418

2519
// we want to verify that both Byte[] and byte[] inputs work
26-
String primitiveResult = codec.encode(dataPrimitive)
27-
String wrapperResult = codec.encode(dataWrapper)
20+
String primitiveResult = dataPrimitive.encodeAsBase64()
21+
String wrapperResult = dataWrapper.encodeAsBase64()
2822

2923
assertEquals(expectedResult,primitiveResult)
3024
assertEquals(expectedResult,wrapperResult)
3125

3226
//make sure encoding null returns null
33-
assertNull codec.encode(null)
27+
assertNull null.encodeAsBase64()
3428
}
3529

3630
void testDecode() {
3731
String data = 'd2hhdA=='
38-
byte[] result = codec.decode(data)
32+
byte[] result = data.decodeBase64()
3933

4034
assertEquals(119, result[0])
4135
assertEquals(104, result[1])
4236
assertEquals(97, result[2])
4337
assertEquals(116, result[3])
4438

4539
//make sure decoding null returns null
46-
assertNull codec.decode(null)
40+
assertNull null.decodeBase64()
4741
}
4842

4943
void testRountrip() {
50-
assertEquals(dataPrimitive, codec.decode(codec.encode(dataPrimitive)))
51-
assertEquals(dataWrapper, codec.decode(codec.encode(dataWrapper)))
44+
assertEquals(dataPrimitive, dataPrimitive.encodeAsBase64().decodeBase64())
45+
assertEquals(dataWrapper, dataWrapper.encodeBase64().decodeBase64())
5246
}
5347
}

grails-plugin-codecs/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
dependencies {
22
compile "commons-lang:commons-lang:$commonsLangVersion"
3-
compile 'commons-codec:commons-codec:1.6'
43
compile project(":grails-web"), project(":grails-plugin-converters"), project(":grails-encoder")
54
}

grails-plugin-codecs/src/main/groovy/org/grails/plugins/CodecsGrailsPlugin.groovy

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import grails.plugins.Plugin
1919
import grails.util.GrailsUtil
2020
import org.grails.plugins.codecs.DefaultCodecLookup
2121
import org.grails.commons.CodecArtefactHandler
22-
import org.grails.plugins.codecs.Base64Codec
2322
import org.grails.encoder.impl.HTML4Codec
2423
import org.grails.plugins.codecs.HTMLCodec
2524
import org.grails.encoder.impl.HTMLJSCodec
@@ -47,7 +46,6 @@ class CodecsGrailsPlugin extends Plugin {
4746
JavaScriptCodec,
4847
HTMLJSCodec,
4948
URLCodec,
50-
Base64Codec,
5149
RawCodec
5250
]
5351

0 commit comments

Comments
 (0)