HttpHeaders fails getAllow if set to EmptyCollection
Prior to this commit, calls to getAllow would fail is setAllow was set
to an EmptyCollection right before.
java.lang.IllegalArgumentException: No enum constant
org.springframework.http.HttpMethod
This commit fixes this by testing the header value for an empty value
before trying to use it to get a value from the Enum.
Issue: SPR-11917
(cherry picked from commit 9919a98)
This commit is contained in:
@@ -224,7 +224,7 @@ public class HttpHeaders implements MultiValueMap<String, String>, Serializable
|
|||||||
*/
|
*/
|
||||||
public Set<HttpMethod> getAllow() {
|
public Set<HttpMethod> getAllow() {
|
||||||
String value = getFirst(ALLOW);
|
String value = getFirst(ALLOW);
|
||||||
if (value != null) {
|
if (!StringUtils.isEmpty(value)) {
|
||||||
List<HttpMethod> allowedMethod = new ArrayList<HttpMethod>(5);
|
List<HttpMethod> allowedMethod = new ArrayList<HttpMethod>(5);
|
||||||
String[] tokens = value.split(",\\s*");
|
String[] tokens = value.split(",\\s*");
|
||||||
for (String token : tokens) {
|
for (String token : tokens) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2011 the original author or authors.
|
* Copyright 2002-2014 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -22,18 +22,23 @@ import java.nio.charset.Charset;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
|
||||||
|
import org.hamcrest.Matchers;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
/** @author Arjen Poutsma */
|
/**
|
||||||
|
* @author Arjen Poutsma
|
||||||
|
*/
|
||||||
public class HttpHeadersTests {
|
public class HttpHeadersTests {
|
||||||
|
|
||||||
private HttpHeaders headers;
|
private HttpHeaders headers;
|
||||||
@@ -256,5 +261,13 @@ public class HttpHeadersTests {
|
|||||||
headers.getFirst("Content-Disposition"));
|
headers.getFirst("Content-Disposition"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SPR-11917
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAllowEmptySet() {
|
||||||
|
headers.setAllow(Collections.<HttpMethod> emptySet());
|
||||||
|
|
||||||
|
assertThat(headers.getAllow(), Matchers.emptyCollectionOf(HttpMethod.class));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user