From 8b09b52720486e051fe3551785b437cae698ce0e Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 31 Aug 2012 17:03:28 +0200 Subject: [PATCH] media types in HTTP Accept headers can be parsed with single quotes (-> Android 2.x) Issue: SPR-9734 --- .../src/main/java/org/springframework/http/MediaType.java | 7 ++++++- .../java/org/springframework/http/MediaTypeTests.java | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/org.springframework.web/src/main/java/org/springframework/http/MediaType.java b/org.springframework.web/src/main/java/org/springframework/http/MediaType.java index 14110404890..4cc037b8c64 100644 --- a/org.springframework.web/src/main/java/org/springframework/http/MediaType.java +++ b/org.springframework.web/src/main/java/org/springframework/http/MediaType.java @@ -376,7 +376,12 @@ public class MediaType implements Comparable { } private boolean isQuotedString(String s) { - return s.length() > 1 && s.startsWith("\"") && s.endsWith("\"") ; + if (s.length() < 2) { + return false; + } + else { + return ((s.startsWith("\"") && s.endsWith("\"")) || (s.startsWith("'") && s.endsWith("'"))); + } } private String unquote(String s) { diff --git a/org.springframework.web/src/test/java/org/springframework/http/MediaTypeTests.java b/org.springframework.web/src/test/java/org/springframework/http/MediaTypeTests.java index 2e290d0a814..d54768ef6f8 100644 --- a/org.springframework.web/src/test/java/org/springframework/http/MediaTypeTests.java +++ b/org.springframework.web/src/test/java/org/springframework/http/MediaTypeTests.java @@ -181,6 +181,14 @@ public class MediaTypeTests { assertEquals("\"v>alue\"", mediaType.getParameter("attr")); } + // SPR-8917 + + @Test + public void parseMediaTypeSingleQuotedParameterValue() { + MediaType mediaType = MediaType.parseMediaType("audio/*;attr='v>alue'"); + assertEquals("'v>alue'", mediaType.getParameter("attr")); + } + @Test(expected = IllegalArgumentException.class) public void parseMediaTypeIllegalQuotedParameterValue() { MediaType.parseMediaType("audio/*;attr=\"");