Polish
This commit is contained in:
@@ -33,7 +33,6 @@ import org.springframework.util.MultiValueMap;
|
|||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
import org.springframework.web.servlet.FlashMap;
|
import org.springframework.web.servlet.FlashMap;
|
||||||
import org.springframework.web.servlet.FlashMapManager;
|
import org.springframework.web.servlet.FlashMapManager;
|
||||||
import org.springframework.web.util.UriComponents;
|
|
||||||
import org.springframework.web.util.UrlPathHelper;
|
import org.springframework.web.util.UrlPathHelper;
|
||||||
|
|
||||||
|
|
||||||
@@ -167,15 +166,13 @@ public abstract class AbstractFlashMapManager implements FlashMapManager {
|
|||||||
*/
|
*/
|
||||||
protected boolean isFlashMapForRequest(FlashMap flashMap, HttpServletRequest request) {
|
protected boolean isFlashMapForRequest(FlashMap flashMap, HttpServletRequest request) {
|
||||||
String expectedPath = flashMap.getTargetRequestPath();
|
String expectedPath = flashMap.getTargetRequestPath();
|
||||||
String requestUri = getUrlPathHelper().getOriginatingRequestUri(request);
|
|
||||||
if (expectedPath != null) {
|
if (expectedPath != null) {
|
||||||
|
String requestUri = getUrlPathHelper().getOriginatingRequestUri(request);
|
||||||
if (!requestUri.equals(expectedPath) && !requestUri.equals(expectedPath + "/")) {
|
if (!requestUri.equals(expectedPath) && !requestUri.equals(expectedPath + "/")) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
String queryString = getUrlPathHelper().getOriginatingQueryString(request);
|
MultiValueMap<String, String> actualParams = getOriginatingRequestParams(request);
|
||||||
UriComponents uriComponents = ServletUriComponentsBuilder.fromUriString(requestUri).query(queryString).build();
|
|
||||||
MultiValueMap<String, String> actualParams = uriComponents.getQueryParams();
|
|
||||||
MultiValueMap<String, String> expectedParams = flashMap.getTargetRequestParams();
|
MultiValueMap<String, String> expectedParams = flashMap.getTargetRequestParams();
|
||||||
for (String expectedName : expectedParams.keySet()) {
|
for (String expectedName : expectedParams.keySet()) {
|
||||||
List<String> actualValues = actualParams.get(expectedName);
|
List<String> actualValues = actualParams.get(expectedName);
|
||||||
@@ -191,6 +188,11 @@ public abstract class AbstractFlashMapManager implements FlashMapManager {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private MultiValueMap<String, String> getOriginatingRequestParams(HttpServletRequest request) {
|
||||||
|
String query = getUrlPathHelper().getOriginatingQueryString(request);
|
||||||
|
return ServletUriComponentsBuilder.fromPath("/").query(query).build().getQueryParams();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void saveOutputFlashMap(FlashMap flashMap, HttpServletRequest request, HttpServletResponse response) {
|
public final void saveOutputFlashMap(FlashMap flashMap, HttpServletRequest request, HttpServletResponse response) {
|
||||||
if (CollectionUtils.isEmpty(flashMap)) {
|
if (CollectionUtils.isEmpty(flashMap)) {
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import static org.junit.Assert.*;
|
|||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
@@ -318,16 +319,14 @@ public class FlashMapManagerTests {
|
|||||||
assertEquals("value", flashMap.get("key"));
|
assertEquals("value", flashMap.get("key"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// SPR-15505
|
@Test // SPR-15505
|
||||||
|
|
||||||
@Test
|
|
||||||
public void retrieveAndUpdateMatchByOriginatingPathAndQueryString() {
|
public void retrieveAndUpdateMatchByOriginatingPathAndQueryString() {
|
||||||
FlashMap flashMap = new FlashMap();
|
FlashMap flashMap = new FlashMap();
|
||||||
flashMap.put("key", "value");
|
flashMap.put("key", "value");
|
||||||
flashMap.setTargetRequestPath("/accounts");
|
flashMap.setTargetRequestPath("/accounts");
|
||||||
flashMap.addTargetRequestParam("a", "b");
|
flashMap.addTargetRequestParam("a", "b");
|
||||||
|
|
||||||
this.flashMapManager.setFlashMaps(Arrays.asList(flashMap));
|
this.flashMapManager.setFlashMaps(Collections.singletonList(flashMap));
|
||||||
|
|
||||||
this.request.setAttribute(WebUtils.FORWARD_REQUEST_URI_ATTRIBUTE, "/accounts");
|
this.request.setAttribute(WebUtils.FORWARD_REQUEST_URI_ATTRIBUTE, "/accounts");
|
||||||
this.request.setAttribute(WebUtils.FORWARD_QUERY_STRING_ATTRIBUTE, "a=b");
|
this.request.setAttribute(WebUtils.FORWARD_QUERY_STRING_ATTRIBUTE, "a=b");
|
||||||
@@ -339,6 +338,7 @@ public class FlashMapManagerTests {
|
|||||||
assertEquals("Input FlashMap should have been removed", 0, this.flashMapManager.getFlashMaps().size());
|
assertEquals("Input FlashMap should have been removed", 0, this.flashMapManager.getFlashMaps().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static class TestFlashMapManager extends AbstractFlashMapManager {
|
private static class TestFlashMapManager extends AbstractFlashMapManager {
|
||||||
|
|
||||||
private List<FlashMap> flashMaps;
|
private List<FlashMap> flashMaps;
|
||||||
|
|||||||
Reference in New Issue
Block a user