Author: sergeyb
Date: Wed May 18 18:03:23 2011
New Revision: 1124357
URL: http://svn.apache.org/viewvc?rev=1124357&view=rev
Log:
[CXF-3531] Returning 415 in case of malformed Content-Types
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=1124357&r1=1124356&r2=1124357&view=diff
==============================================================================
---
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
(original)
+++
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
Wed May 18 18:03:23 2011
@@ -303,9 +303,14 @@ public final class JAXRSUtils {
new TreeMap<OperationResourceInfo, MultivaluedMap<String, String>>(
new OperationResourceInfoComparator(message, httpMethod));
- MediaType requestType = requestContentType == null
+ MediaType requestType;
+ try {
+ requestType = requestContentType == null
? ALL_TYPES :
MediaType.valueOf(requestContentType);
-
+ } catch (IllegalArgumentException ex) {
+ throw new WebApplicationException(ex, 415);
+ }
+
int pathMatched = 0;
int methodMatched = 0;
int consumeMatched = 0;
Modified:
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=1124357&r1=1124356&r2=1124357&view=diff
==============================================================================
---
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
(original)
+++
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
Wed May 18 18:03:23 2011
@@ -21,6 +21,7 @@ package org.apache.cxf.systest.jaxrs;
import java.io.File;
import java.io.InputStream;
+import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
@@ -581,7 +582,21 @@ public class JAXRSClientServerBookTest e
+ "parameter, static valueOf(String) or
fromString(String) methods",
"*/*", 500);
}
-
+
+ @Test
+ public void testWrongContentType() throws Exception {
+ // can't use WebClient here because WebClient plays around with the
Content-Type
+ // (and makes sure it's syntactically correct) before sending it to
the server
+ String endpointAddress = "http://localhost:" + PORT +
"/bookstore/unsupportedcontenttype";
+ URL url = new URL(endpointAddress);
+ HttpURLConnection urlConnection =
(HttpURLConnection)url.openConnection();
+ urlConnection.setReadTimeout(30000); // 30 seconds tops
+ urlConnection.setConnectTimeout(30000); // 30 second tops
+ urlConnection.addRequestProperty("Content-Type", "MissingSeparator");
+ urlConnection.setRequestMethod("POST");
+ assertEquals(415, urlConnection.getResponseCode());
+ }
+
@Test
public void testExceptionDuringConstruction() throws Exception {
getAndCompare("http://localhost:" + PORT +
"/bookstore/exceptionconstruction?p=1",