Repository: cxf Updated Branches: refs/heads/master b6a5a8799 -> 7f7c42b77
[CXF-6076] Allowing + chars in media type parameters without quotes Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/7f7c42b7 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/7f7c42b7 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/7f7c42b7 Branch: refs/heads/master Commit: 7f7c42b77085d45429c8bd0b70f5a003de27c5b4 Parents: b6a5a87 Author: Sergey Beryozkin <[email protected]> Authored: Tue Nov 4 10:50:17 2014 +0000 Committer: Sergey Beryozkin <[email protected]> Committed: Tue Nov 4 10:50:17 2014 +0000 ---------------------------------------------------------------------- .../cxf/jaxrs/impl/MediaTypeHeaderProvider.java | 2 +- .../jaxrs/impl/MediaTypeHeaderProviderTest.java | 34 ++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/7f7c42b7/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java index 1b91687..89ea998 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java @@ -43,7 +43,7 @@ public class MediaTypeHeaderProvider implements HeaderDelegate<MediaType> { private static final String STRICT_MEDIA_TYPE_CHECK = "org.apache.cxf.jaxrs.mediaTypeCheck.strict"; private static final Pattern COMPLEX_PARAMETERS = - Pattern.compile("(([\\w-]+=\"[^\"]*\")|([\\w-]+=[\\w-/]+))"); + Pattern.compile("(([\\w-]+=\"[^\"]*\")|([\\w-]+=[\\w-/\\+]+))"); public MediaType fromString(String mType) { http://git-wip-us.apache.org/repos/asf/cxf/blob/7f7c42b7/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProviderTest.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProviderTest.java b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProviderTest.java index 26099e5..d569a6a 100644 --- a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProviderTest.java +++ b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProviderTest.java @@ -36,6 +36,40 @@ public class MediaTypeHeaderProviderTest extends Assert { } @Test + public void testTypeWithExtendedParameters() { + MediaType mt = MediaType.valueOf("multipart/related;type=application/dicom+xml"); + + assertEquals("multipart", mt.getType()); + assertEquals("related", mt.getSubtype()); + Map<String, String> params2 = mt.getParameters(); + assertEquals(1, params2.size()); + assertEquals("application/dicom+xml", params2.get("type")); + } + + @Test + public void testTypeWithExtendedParametersQuote() { + MediaType mt = MediaType.valueOf("multipart/related;type=\"application/dicom+xml\""); + + assertEquals("multipart", mt.getType()); + assertEquals("related", mt.getSubtype()); + Map<String, String> params2 = mt.getParameters(); + assertEquals(1, params2.size()); + assertEquals("\"application/dicom+xml\"", params2.get("type")); + } + + @Test + public void testTypeWithExtendedAndBoundaryParameter() { + MediaType mt = MediaType.valueOf( + "multipart/related; type=application/dicom+xml; boundary=\"uuid:b9aecb2a-ab37-48d6-a1cd-b2f4f7fa63cb\""); + assertEquals("multipart", mt.getType()); + assertEquals("related", mt.getSubtype()); + Map<String, String> params2 = mt.getParameters(); + assertEquals(2, params2.size()); + assertEquals("\"uuid:b9aecb2a-ab37-48d6-a1cd-b2f4f7fa63cb\"", params2.get("boundary")); + assertEquals("application/dicom+xml", params2.get("type")); + } + + @Test public void testSimpleType() { MediaType m = MediaType.valueOf("text/html"); assertEquals("Media type was not parsed correctly",
