Skip to content

Commit 20131df

Browse files
committed
fix submap via subscript operator on parameter map
1 parent 556b66d commit 20131df

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

grails-test-suite-uber/src/test/groovy/org/codehaus/groovy/grails/web/servlet/mvc/GrailsParameterMapTests.groovy

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,16 @@ class GrailsParameterMapTests extends GroovyTestCase {
1212
GrailsParameterMap theMap
1313
MockHttpServletRequest mockRequest = new MockHttpServletRequest()
1414

15+
void testSubmapViaArraySubscript() {
16+
mockRequest.addParameter("name", "Dierk Koenig")
17+
mockRequest.addParameter("dob", "01/01/1970")
18+
mockRequest.addParameter("address.postCode", "345435")
19+
mockRequest.addParameter("address.town", "Swindon")
20+
theMap = new GrailsParameterMap(mockRequest)
21+
22+
assert theMap['name', 'dob'] == [name:"Dierk Koenig", dob:"01/01/1970"]
23+
}
24+
1525
void testDateMessageSourceFormat() {
1626

1727
try {
@@ -249,6 +259,8 @@ class GrailsParameterMapTests extends GroovyTestCase {
249259
String name = (String) o
250260
params.put(name, theMap.get(name))
251261
}
262+
263+
252264
}
253265

254266
void testMultiDimensionParams() {

grails-web/src/main/groovy/org/codehaus/groovy/grails/web/servlet/mvc/GrailsParameterMap.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@
1818
import java.io.UnsupportedEncodingException;
1919
import java.text.DateFormat;
2020
import java.text.SimpleDateFormat;
21-
import java.util.Date;
22-
import java.util.Iterator;
23-
import java.util.LinkedHashMap;
24-
import java.util.Map;
21+
import java.util.*;
2522
import java.util.concurrent.ConcurrentHashMap;
2623

2724
import javax.servlet.http.HttpServletRequest;
@@ -39,6 +36,7 @@
3936
import org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionException;
4037
import org.codehaus.groovy.grails.web.util.TypeConvertingMap;
4138
import org.codehaus.groovy.grails.web.util.WebUtils;
39+
import org.codehaus.groovy.runtime.DefaultGroovyMethods;
4240
import org.grails.databinding.DataBindingSource;
4341
import org.grails.databinding.SimpleMapDataBindingSource;
4442
import org.springframework.context.ApplicationContext;
@@ -247,6 +245,9 @@ public Object get(Object key) {
247245
returnValue = valueArray;
248246
}
249247
}
248+
else if(returnValue == null && (key instanceof Collection)) {
249+
return DefaultGroovyMethods.subMap(wrappedMap, (Collection)key);
250+
}
250251
}
251252
if ("date.struct".equals(returnValue)) {
252253
returnValue = lazyEvaluateDateParam(key);

0 commit comments

Comments
 (0)