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 2010/10/06 00:48:06 UTC
svn commit: r1004846 - in /cxf/trunk:
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/
systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/
Author: sergeyb
Date: Tue Oct 5 22:48:06 2010
New Revision: 1004846
URL: http://svn.apache.org/viewvc?rev=1004846&view=rev
Log:
[CXF-3035] : Explictly dealing with Set-Cookie headers containing Expires fields, and applying a patch from Joachim Kainz
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java?rev=1004846&r1=1004845&r2=1004846&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java Tue Oct 5 22:48:06 2010
@@ -335,14 +335,20 @@ public class AbstractClient implements C
if (null == entry.getKey()) {
continue;
}
- if (HttpUtils.isDateRelatedHeader(entry.getKey())) {
- currentResponseBuilder.header(entry.getKey(), entry.getValue());
- } else if (entry.getValue().size() > 0) {
- String[] values = entry.getValue().get(0).split(",");
- for (String s : values) {
- String theValue = s.trim();
- if (theValue.length() > 0) {
- currentResponseBuilder.header(entry.getKey(), theValue);
+ if (entry.getValue().size() > 0) {
+ if (HttpUtils.isDateRelatedHeader(entry.getKey())) {
+ currentResponseBuilder.header(entry.getKey(), entry.getValue().get(0));
+ continue;
+ }
+ boolean splitPossible = !(HttpHeaders.SET_COOKIE.equalsIgnoreCase(entry.getKey())
+ && entry.getValue().get(0).contains(HttpHeaders.EXPIRES));
+ for (String val : entry.getValue()) {
+ String[] values = splitPossible ? val.split(",") : new String[]{val};
+ for (String s : values) {
+ String theValue = s.trim();
+ if (theValue.length() > 0) {
+ currentResponseBuilder.header(entry.getKey(), theValue);
+ }
}
}
}
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java?rev=1004846&r1=1004845&r2=1004846&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java Tue Oct 5 22:48:06 2010
@@ -120,10 +120,21 @@ public class BookStore {
@GET
@Path("tempredirect")
- public Response tempRedirect() {
+ public Response tempRedirectAndSetCookies() {
URI uri = UriBuilder.fromPath("whatever/redirection")
.queryParam("css1", "http://bar").build();
- return Response.temporaryRedirect(uri).build();
+ return Response.temporaryRedirect(uri)
+ .header("Set-Cookie", "a=b").header("Set-Cookie", "c=d")
+ .build();
+ }
+
+ @GET
+ @Path("setcookies")
+ public Response setComplexCookies() {
+ return Response.ok().header("Set-Cookie",
+ "bar.com.anoncart=107894933471602436; Domain=.bar.com;"
+ + " Expires=Thu, 01-Oct-2020 23:44:22 GMT; Path=/")
+ .build();
}
@GET
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=1004846&r1=1004845&r2=1004846&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 Tue Oct 5 22:48:06 2010
@@ -77,6 +77,19 @@ public class JAXRSClientServerBookTest e
MultivaluedMap<String, Object> map = r.getMetadata();
assertEquals("http://localhost:" + PORT + "/whatever/redirection?css1=http%3A//bar",
map.getFirst("Location").toString());
+ List<Object> cookies = r.getMetadata().get("Set-Cookie");
+ assertNotNull(cookies);
+ assertEquals(2, cookies.size());
+ }
+
+ @Test
+ public void testSetCookieWebClient() throws Exception {
+ WebClient client = WebClient.create("http://localhost:" + PORT + "/bookstore/setcookies");
+ Response r = client.type("*/*").get();
+ assertEquals(200, r.getStatus());
+ List<Object> cookies = r.getMetadata().get("Set-Cookie");
+ assertNotNull(cookies);
+ assertEquals(1, cookies.size());
}
@@ -235,6 +248,9 @@ public class JAXRSClientServerBookTest e
assertTrue(values.contains("POST") && values.contains("GET")
&& values.contains("DELETE") && values.contains("PUT"));
assertEquals(0, ((InputStream)response.getEntity()).available());
+ List<Object> date = response.getMetadata().get("Date");
+ assertNotNull(date);
+ assertEquals(1, date.size());
}
@Test
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java?rev=1004846&r1=1004845&r2=1004846&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java Tue Oct 5 22:48:06 2010
@@ -45,6 +45,7 @@ import org.apache.commons.httpclient.met
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.cxf.helpers.IOUtils;
import org.apache.cxf.io.CachedOutputStream;
+import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.cxf.jaxrs.ext.multipart.Attachment;
@@ -253,6 +254,23 @@ public class JAXRSMultipartTest extends
}
@Test
+ public void testAddCollectionOfBooksWithProxy() {
+ String address = "http://localhost:" + PORT;
+ MultipartStore client = JAXRSClientFactory.create(address, MultipartStore.class);
+
+ WebClient.client(client).header("Content-Type", "multipart/mixed;type=application/xml");
+
+ List<Book> books = new ArrayList<Book>();
+ books.add(new Book("CXF 1", 1L));
+ books.add(new Book("CXF 2", 2L));
+ List<Book> books2 = client.addBooks(books);
+ assertNotSame(books, books2);
+ assertEquals(2, books2.size());
+ assertEquals(books.get(0).getId(), books2.get(0).getId());
+ assertEquals(books.get(1).getId(), books2.get(1).getId());
+ }
+
+ @Test
public void testXopWebClient() throws Exception {
String address = "http://localhost:" + PORT + "/bookstore/xop";
JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();