You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2012/05/10 17:41:28 UTC
svn commit: r1336749 - in /cxf/branches/2.5.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/
rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/
rt/frontend/jaxrs/...
Author: sergeyb
Date: Thu May 10 15:41:27 2012
New Revision: 1336749
URL: http://svn.apache.org/viewvc?rev=1336749&view=rev
Log:
Merged revisions 1336660,1336747 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1336660 | sergeyb | 2012-05-10 14:07:48 +0100 (Thu, 10 May 2012) | 1 line
[CXF-4306] Trying to handle the mix-up of FormParam and Multipart annotaions
........
r1336747 | sergeyb | 2012-05-10 16:35:06 +0100 (Thu, 10 May 2012) | 1 line
[CXF-4307] Setting a default in Cookie separator to ';'
........
Modified:
cxf/branches/2.5.x-fixes/ (props changed)
cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java
cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java
cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java
cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java
cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/attachmentFormJsonFiles
Propchange: cxf/branches/2.5.x-fixes/
------------------------------------------------------------------------------
Merged /cxf/trunk:r1336660,1336747
Propchange: cxf/branches/2.5.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java?rev=1336749&r1=1336748&r2=1336749&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java (original)
+++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java Thu May 10 15:41:27 2012
@@ -49,6 +49,7 @@ public class HttpHeadersImpl implements
"org.apache.cxf.http.cookie.separator";
private static final String COOKIE_SEPARATOR_CRLF = "crlf";
private static final String DEFAULT_SEPARATOR = ",";
+ private static final String DEFAULT_COOKIE_SEPARATOR = ";";
private static final String COMPLEX_HEADER_EXPRESSION =
"(([\\w]+=\"[^\"]*\")|([\\w]+=[\\w]+)|([\\w]+))(;(([\\w]+=\"[^\"]*\")|([\\w]+=[\\w]+)|([\\w]+)))?";
@@ -114,7 +115,7 @@ public class HttpHeadersImpl implements
return COOKIE_SEPARATOR_CRLF.equals(cookiePropValue.toString())
? "\r\n" : cookiePropValue.toString();
} else {
- return DEFAULT_SEPARATOR;
+ return DEFAULT_COOKIE_SEPARATOR;
}
}
Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java?rev=1336749&r1=1336748&r2=1336749&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java (original)
+++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java Thu May 10 15:41:27 2012
@@ -50,7 +50,7 @@ public final class FormUtils {
private static final Logger LOG = LogUtils.getL7dLogger(FormUtils.class);
private static final String MULTIPART_FORM_DATA_TYPE = "form-data";
private static final String MAX_FORM_PARAM_COUNT = "maxFormParameterCount";
-
+ private static final String CONTENT_DISPOSITION_FILES_PARAM = "files";
private FormUtils() {
}
@@ -165,10 +165,18 @@ public final class FormUtils {
if (StringUtils.isEmpty(name)) {
throw new WebApplicationException(400);
}
+ if (CONTENT_DISPOSITION_FILES_PARAM.equals(name)) {
+ // this is a reserved name in Content-Disposition for parts containing files
+ continue;
+ }
try {
String value = IOUtils.toString(a.getDataHandler().getInputStream());
params.add(HttpUtils.urlDecode(name),
decode ? HttpUtils.urlDecode(value) : value);
+ } catch (IllegalArgumentException ex) {
+ LOG.warning("Illegal URL-encoded characters, make sure that no "
+ + "@FormParam and @Multipart annotations are mixed up");
+ throw new WebApplicationException(415);
} catch (IOException ex) {
throw new WebApplicationException(415);
}
Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java?rev=1336749&r1=1336748&r2=1336749&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java (original)
+++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java Thu May 10 15:41:27 2012
@@ -240,7 +240,7 @@ public class HttpHeadersImplTest extends
Message m = new MessageImpl();
m.setExchange(new ExchangeImpl());
MetadataMap<String, String> headers = createHeaders();
- headers.putSingle(HttpHeaders.COOKIE, "a=b,c=d");
+ headers.putSingle(HttpHeaders.COOKIE, "a=b;c=d");
m.put(Message.PROTOCOL_HEADERS, headers);
HttpHeaders h = new HttpHeadersImpl(m);
Map<String, Cookie> cookies = h.getCookies();
@@ -250,15 +250,15 @@ public class HttpHeadersImplTest extends
}
@Test
- public void testGetCookiesWithSemiColon() throws Exception {
+ public void testGetCookiesWithComma() throws Exception {
Message m = new MessageImpl();
Exchange ex = new ExchangeImpl();
ex.setInMessage(m);
- ex.put("org.apache.cxf.http.cookie.separator", ";");
+ ex.put("org.apache.cxf.http.cookie.separator", ",");
m.setExchange(ex);
MetadataMap<String, String> headers = createHeaders();
- headers.putSingle(HttpHeaders.COOKIE, "a=b" + ";" + "c=d");
+ headers.putSingle(HttpHeaders.COOKIE, "a=b,c=d");
m.put(Message.PROTOCOL_HEADERS, headers);
HttpHeaders h = new HttpHeadersImpl(m);
Map<String, Cookie> cookies = h.getCookies();
Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java?rev=1336749&r1=1336748&r2=1336749&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java (original)
+++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java Thu May 10 15:41:27 2012
@@ -753,7 +753,7 @@ public class JAXRSUtilsTest extends Asse
Method m = Customer.class.getMethod("testMultipleCookieParam", argType);
MessageImpl messageImpl = new MessageImpl();
MultivaluedMap<String, String> headers = new MetadataMap<String, String>();
- headers.add("Cookie", "c1=c1Value, c2=c2Value");
+ headers.add("Cookie", "c1=c1Value; c2=c2Value");
headers.add("Cookie", "c3=c3Value");
messageImpl.put(Message.PROTOCOL_HEADERS, headers);
List<Object> params = JAXRSUtils.processParameters(new OperationResourceInfo(m, null),
Modified: cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=1336749&r1=1336748&r2=1336749&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java (original)
+++ cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java Thu May 10 15:41:27 2012
@@ -1761,7 +1761,7 @@ public class JAXRSClientServerBookTest e
int expectedStatus) throws Exception {
GetMethod get = new GetMethod(address);
get.setRequestHeader("Accept", acceptType);
- get.addRequestHeader("Cookie", "a=b,c=d");
+ get.addRequestHeader("Cookie", "a=b;c=d");
get.addRequestHeader("Cookie", "e=f");
get.setRequestHeader("Accept-Language", "da;q=0.8,en");
get.setRequestHeader("Book", "1,2,3");
Modified: cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java?rev=1336749&r1=1336748&r2=1336749&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java (original)
+++ cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java Thu May 10 15:41:27 2012
@@ -135,6 +135,12 @@ public class JAXRSMultipartTest extends
}
@Test
+ public void testBookJSONFormTwoFilesMixUp() throws Exception {
+ String address = "http://localhost:" + PORT + "/bookstore/books/filesform/mixup";
+ doAddFormBook(address, "attachmentFormJsonFiles", 200);
+ }
+
+ @Test
public void testBookJSONFormOneFile() throws Exception {
String address = "http://localhost:" + PORT + "/bookstore/books/fileform";
doAddFormBook(address, "attachmentFormJsonFile", 200);
Modified: cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java?rev=1336749&r1=1336748&r2=1336749&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java (original)
+++ cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java Thu May 10 15:41:27 2012
@@ -412,7 +412,7 @@ public class MultipartStore {
Book b1 = books.get(0);
Book b2 = books.get(1);
if (!"CXF in Action - 1".equals(b1.getName())
- || !"CXF in Action - 2".equals(b2.getName())
+ || !"CXF in Action - 2%".equals(b2.getName())
|| !"Larry".equals(name)) {
throw new WebApplicationException();
}
@@ -422,6 +422,16 @@ public class MultipartStore {
}
@POST
+ @Path("/books/filesform/mixup")
+ @Produces("text/xml")
+ @Consumes("multipart/form-data")
+ public Response addBookFilesFormMixUp(@FormParam("owner") String name,
+ @Multipart("files") List<Book> books)
+ throws Exception {
+ return addBookFilesForm(name, books);
+ }
+
+ @POST
@Path("/books/fileform")
@Produces("text/xml")
@Consumes("multipart/form-data")
Modified: cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/attachmentFormJsonFiles
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/attachmentFormJsonFiles?rev=1336749&r1=1336748&r2=1336749&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/attachmentFormJsonFiles (original)
+++ cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/attachmentFormJsonFiles Thu May 10 15:41:27 2012
@@ -19,6 +19,6 @@ Content-Disposition: form-data; name="bo
Content-Type: application/json; charset=US-ASCII
Content-Transfer-Encoding: 8bit
-{"Book":{"name":"CXF in Action - 2","id":124}}
+{"Book":{"name":"CXF in Action - 2%","id":124}}
--_Part_4_701508.1145579811786--
--bqJky99mlBWa-ZuqjC53mG6EzbmlxB--
\ No newline at end of file