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:53:35 UTC

svn commit: r1004847 - in /cxf/branches/2.2.x-fixes: ./ 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:53:34 2010
New Revision: 1004847

URL: http://svn.apache.org/viewvc?rev=1004847&view=rev
Log:
Merged revisions 1004846 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1004846 | sergeyb | 2010-10-05 23:48:06 +0100 (Tue, 05 Oct 2010) | 1 line
  
  [CXF-3035] : Explictly dealing with Set-Cookie headers containing Expires fields, and applying a patch from Joachim Kainz
........

Modified:
    cxf/branches/2.2.x-fixes/   (props changed)
    cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
    cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
    cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
    cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java

Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
    svn:mergeinfo = /cxf/trunk:1004846

Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java?rev=1004847&r1=1004846&r2=1004847&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java Tue Oct  5 22:53:34 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/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java?rev=1004847&r1=1004846&r2=1004847&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java (original)
+++ cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java Tue Oct  5 22:53:34 2010
@@ -116,10 +116,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/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=1004847&r1=1004846&r2=1004847&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java (original)
+++ cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java Tue Oct  5 22:53:34 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/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java?rev=1004847&r1=1004846&r2=1004847&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java (original)
+++ cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java Tue Oct  5 22:53:34 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();