From 7cdc53487d729c5ddbd23cde0b2d448db9faafae Mon Sep 17 00:00:00 2001 From: Maxim Valyanskiy Date: Thu, 14 Jun 2012 08:25:10 +0400 Subject: [PATCH] Allow parsing of media types with single-quotes Previously MediaType could only parse double-quoted parameters without raising an IllegalArgumentException. Now parameters can also be single-quoted. Issue: SPR-8917 --- .../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/spring-web/src/main/java/org/springframework/http/MediaType.java b/spring-web/src/main/java/org/springframework/http/MediaType.java index 1411040489..4cc037b8c6 100644 --- a/spring-web/src/main/java/org/springframework/http/MediaType.java +++ b/spring-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/spring-web/src/test/java/org/springframework/http/MediaTypeTests.java b/spring-web/src/test/java/org/springframework/http/MediaTypeTests.java index 2e290d0a81..d54768ef6f 100644 --- a/spring-web/src/test/java/org/springframework/http/MediaTypeTests.java +++ b/spring-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=\"");