Permalink
Browse files

Polish

  • Loading branch information...
1 parent 2f8bc6e commit 0036d9a5c98fab192be719b3f6f1cde8178e6cde @rstoyanchev rstoyanchev committed Mar 6, 2014
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2012 the original author or authors.
+ * Copyright 2002-2014 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -157,21 +157,21 @@ private FlashMap getMatchingFlashMap(List<FlashMap> allMaps, HttpServletRequest
/**
* Whether the given FlashMap matches the current request.
- * The default implementation uses the target request path and query
- * parameters saved in the FlashMap.
+ * Uses the expected request path and query parameters saved in the FlashMap.
*/
protected boolean isFlashMapForRequest(FlashMap flashMap, HttpServletRequest request) {
- if (flashMap.getTargetRequestPath() != null) {
+ String expectedPath = flashMap.getTargetRequestPath();
+ if (expectedPath != null) {
String requestUri = this.urlPathHelper.getOriginatingRequestUri(request);
- if (!requestUri.equals(flashMap.getTargetRequestPath())
- && !requestUri.equals(flashMap.getTargetRequestPath() + "/")) {
+ if (!requestUri.equals(expectedPath)
+ && !requestUri.equals(expectedPath + "/")) {
return false;
}
}
MultiValueMap<String, String> targetParams = flashMap.getTargetRequestParams();
- for (String paramName : targetParams.keySet()) {
- for (String targetValue : targetParams.get(paramName)) {
- if (!ObjectUtils.containsElement(request.getParameterValues(paramName), targetValue)) {
+ for (String expectedName : targetParams.keySet()) {
+ for (String expectedValue : targetParams.get(expectedName)) {
+ if (!ObjectUtils.containsElement(request.getParameterValues(expectedName), expectedValue)) {
return false;
}
}
@@ -219,7 +219,9 @@ private String decodeAndNormalizePath(String path, HttpServletRequest request) {
private void decodeParameters(MultiValueMap<String, String> params, HttpServletRequest request) {
for (String name : new ArrayList<String>(params.keySet())) {
for (String value : new ArrayList<String>(params.remove(name))) {
- params.add(this.urlPathHelper.decodeRequestString(request, name), this.urlPathHelper.decodeRequestString(request, value));
+ name = this.urlPathHelper.decodeRequestString(request, name);
+ value = this.urlPathHelper.decodeRequestString(request, value);
+ params.add(name, value);
}
}
}
@@ -30,6 +30,7 @@
import org.springframework.mock.web.test.MockHttpServletRequest;
import org.springframework.mock.web.test.MockHttpServletResponse;
+import org.springframework.util.MultiValueMap;
import org.springframework.web.servlet.FlashMap;
import org.springframework.web.util.WebUtils;
@@ -261,6 +262,8 @@ public void saveOutputFlashMapNormalizeTargetPath() throws InterruptedException
assertEquals("/once/only", flashMap.getTargetRequestPath());
}
+ // SPR-9657, SPR-11504
+
@Test
public void saveOutputFlashMapDecodeParameters() throws Exception {
this.request.setCharacterEncoding("UTF-8");
@@ -274,10 +277,9 @@ public void saveOutputFlashMapDecodeParameters() throws Exception {
flashMap.addTargetRequestParam("%3A%2F%3F%23%5B%5D%40", "value");
this.flashMapManager.saveOutputFlashMap(flashMap, this.request, this.response);
- assertEquals(Arrays.asList("\u0410\u0410", "\u0411\u0411", "\u0412\u0412"),
- flashMap.getTargetRequestParams().get("key"));
- assertEquals(Arrays.asList("value"),
- flashMap.getTargetRequestParams().get(":/?#[]@"));
+ MultiValueMap<String,String> targetRequestParams = flashMap.getTargetRequestParams();
+ assertEquals(Arrays.asList("\u0410\u0410", "\u0411\u0411", "\u0412\u0412"), targetRequestParams.get("key"));
+ assertEquals(Arrays.asList("value"), targetRequestParams.get(":/?#[]@"));
}

0 comments on commit 0036d9a

Please sign in to comment.