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 2016/01/14 18:23:20 UTC

cxf git commit: [CXF-6729] Updating CookieHeaderProvider too

Repository: cxf
Updated Branches:
  refs/heads/master e65036355 -> f0d6854a8


[CXF-6729] Updating CookieHeaderProvider too


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/f0d6854a
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/f0d6854a
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/f0d6854a

Branch: refs/heads/master
Commit: f0d6854a8c9e9cf20ec50daa86ae2c5396f365b7
Parents: e650363
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Thu Jan 14 17:23:03 2016 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Thu Jan 14 17:23:03 2016 +0000

----------------------------------------------------------------------
 .../cxf/jaxrs/impl/CookieHeaderProvider.java    | 22 ++++++++------------
 .../cxf/jaxrs/impl/NewCookieHeaderProvider.java | 17 +++++++++++----
 .../jaxrs/impl/CookieHeaderProviderTest.java    |  8 +++++++
 3 files changed, 30 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/f0d6854a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CookieHeaderProvider.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CookieHeaderProvider.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CookieHeaderProvider.java
index fd35af5..f0a3b3e 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CookieHeaderProvider.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/CookieHeaderProvider.java
@@ -29,8 +29,6 @@ public class CookieHeaderProvider implements HeaderDelegate<Cookie> {
     private static final String PATH = "$Path";
     private static final String DOMAIN = "$Domain";
     
-    private static final String DOUBLE_QUOTE = "\""; 
-    
     public Cookie fromString(String c) {
         
         if (c == null) {
@@ -48,16 +46,18 @@ public class CookieHeaderProvider implements HeaderDelegate<Cookie> {
         for (String token : tokens) {
             String theToken = token.trim();
             if (theToken.startsWith(VERSION)) {
-                version = Integer.parseInt(stripQuotes(theToken.substring(VERSION.length() + 1)));
+                version = Integer.parseInt(
+                    NewCookieHeaderProvider.stripQuotes(theToken.substring(VERSION.length() + 1)));
             } else if (theToken.startsWith(PATH)) {
-                path = stripQuotes(theToken.substring(PATH.length() + 1));
+                path = NewCookieHeaderProvider.stripQuotes(theToken.substring(PATH.length() + 1));
             } else if (theToken.startsWith(DOMAIN)) {
-                domain = stripQuotes(theToken.substring(DOMAIN.length() + 1));
+                domain = NewCookieHeaderProvider.stripQuotes(theToken.substring(DOMAIN.length() + 1));
             } else {
                 int i = theToken.indexOf('=');
                 if (i != -1) {
                     name = theToken.substring(0, i);
-                    value = i == theToken.length()  + 1 ? "" : stripQuotes(theToken.substring(i + 1));
+                    value = i == theToken.length()  + 1 ? "" 
+                        : NewCookieHeaderProvider.stripQuotes(theToken.substring(i + 1));
                 }
             }
         }
@@ -69,22 +69,18 @@ public class CookieHeaderProvider implements HeaderDelegate<Cookie> {
         return new Cookie(name, value, path, domain, version);
     }
 
-    private String stripQuotes(String value) {
-        return value.replaceAll(DOUBLE_QUOTE, "");
-    }
-    
     public String toString(Cookie c) {
         StringBuilder sb = new StringBuilder();
         
         if (c.getVersion() != 0) {
             sb.append(VERSION).append('=').append(c.getVersion()).append(';');
         }
-        sb.append(c.getName()).append('=').append(c.getValue());
+        sb.append(c.getName()).append('=').append(NewCookieHeaderProvider.maybeQuote(c.getValue()));
         if (c.getPath() != null) {
-            sb.append(';').append(PATH).append('=').append(c.getPath());
+            sb.append(';').append(PATH).append('=').append(NewCookieHeaderProvider.maybeQuote(c.getPath()));
         }
         if (c.getDomain() != null) {
-            sb.append(';').append(DOMAIN).append('=').append(c.getDomain());
+            sb.append(';').append(DOMAIN).append('=').append(NewCookieHeaderProvider.maybeQuote(c.getDomain()));
         }
         return sb.toString();
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/f0d6854a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java
index 5a5a472..4bcfd5e 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java
@@ -40,6 +40,7 @@ public class NewCookieHeaderProvider implements HeaderDelegate<NewCookie> {
     
     /** from RFC 2068, token special case characters */
     private static final String TSPECIALS = "\"()<>@,;:\\/[]?={} \t";
+    private static final String DOUBLE_QUOTE = "\""; 
         
     public NewCookie fromString(String c) {
         
@@ -66,8 +67,8 @@ public class NewCookieHeaderProvider implements HeaderDelegate<NewCookie> {
             String paramName = sepIndex != -1 ? theToken.substring(0, sepIndex) : theToken;
             String paramValue = sepIndex == -1 || sepIndex == theToken.length() - 1 
                 ? null : theToken.substring(sepIndex + 1);
-            if (paramValue != null && paramValue.startsWith("\"")) {
-                paramValue = paramValue.substring(1, paramValue.length() - 1);
+            if (paramValue != null) {
+                paramValue = stripQuotes(paramValue);
             }
             
             if (paramName.equalsIgnoreCase(MAX_AGE)) {
@@ -141,7 +142,7 @@ public class NewCookieHeaderProvider implements HeaderDelegate<NewCookie> {
      * @param value
      * @return String
      */
-    private static String maybeQuote(String value) {
+    static String maybeQuote(String value) {
         
         StringBuilder buff = new StringBuilder();
         // handle a null value as well as an empty one, attr=
@@ -164,7 +165,7 @@ public class NewCookieHeaderProvider implements HeaderDelegate<NewCookie> {
      * @param value
      * @return boolean
      */
-    private static boolean needsQuote(String value) {
+    static boolean needsQuote(String value) {
         if (null == value) {
             return true;
         }
@@ -185,4 +186,12 @@ public class NewCookieHeaderProvider implements HeaderDelegate<NewCookie> {
         }
         return false;
     }
+    
+    static String stripQuotes(String paramValue) {
+        if (paramValue.startsWith(DOUBLE_QUOTE)
+            && paramValue.endsWith(DOUBLE_QUOTE) && paramValue.length() > 1) {
+            paramValue = paramValue.substring(1, paramValue.length() - 1);
+        }
+        return paramValue;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/f0d6854a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CookieHeaderProviderTest.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CookieHeaderProviderTest.java b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CookieHeaderProviderTest.java
index 61d606d..22b885f 100644
--- a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CookieHeaderProviderTest.java
+++ b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/CookieHeaderProviderTest.java
@@ -61,6 +61,14 @@ public class CookieHeaderProviderTest extends Assert {
     }
     
     @Test
+    public void testToStringWithQuotes() {
+        Cookie c = new Cookie("foo", "bar z", "path", "domain", 2);
+        assertEquals("$Version=2;foo=\"bar z\";$Path=path;$Domain=domain", 
+                     c.toString());
+               
+    }
+    
+    @Test
     public void testCookieWithQuotes() {
         Cookie c = Cookie.valueOf("$Version=\"1\"; foo=\"bar\"; $Path=\"/path\"");
         assertTrue("bar".equals(c.getValue())