You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2019/11/27 02:45:08 UTC
[cxf] branch master updated: CXF-8163:
javax.ws.rs.core.Response#getCookies() fails when cookie has no value
(#605)
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/master by this push:
new 6d54140 CXF-8163: javax.ws.rs.core.Response#getCookies() fails when cookie has no value (#605)
6d54140 is described below
commit 6d5414076962fdd153ceb5d3e04292c3453fc096
Author: Andriy Redko <dr...@gmail.com>
AuthorDate: Tue Nov 26 21:44:55 2019 -0500
CXF-8163: javax.ws.rs.core.Response#getCookies() fails when cookie has no value (#605)
---
.../apache/cxf/jaxrs/impl/NewCookieHeaderProvider.java | 12 +++++++++---
.../cxf/jaxrs/impl/NewCookieHeaderProviderTest.java | 6 ++++++
.../java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java | 15 +++++++++++++++
3 files changed, 30 insertions(+), 3 deletions(-)
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 df19f3e..fc323db 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
@@ -67,8 +67,14 @@ public class NewCookieHeaderProvider implements HeaderDelegate<NewCookie> {
int sepIndex = theToken.indexOf('=');
String paramName = sepIndex != -1 ? theToken.substring(0, sepIndex) : theToken;
- String paramValue = sepIndex == -1 || sepIndex == theToken.length() - 1
- ? null : theToken.substring(sepIndex + 1);
+ String paramValue = null;
+
+ if (sepIndex == theToken.length() - 1) {
+ paramValue = "";
+ } else if (sepIndex != -1) {
+ paramValue = theToken.substring(sepIndex + 1);
+ }
+
if (paramValue != null) {
paramValue = stripQuotes(paramValue);
}
@@ -164,7 +170,7 @@ public class NewCookieHeaderProvider implements HeaderDelegate<NewCookie> {
}
/**
- * Return true iff the string contains special characters that need to be
+ * Return true if the string contains special characters that need to be
* quoted.
*
* @param value
diff --git a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProviderTest.java b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProviderTest.java
index 37fd341..918896c 100644
--- a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProviderTest.java
+++ b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/NewCookieHeaderProviderTest.java
@@ -52,6 +52,12 @@ public class NewCookieHeaderProviderTest {
&& "foo".equals(c.getName()));
}
+ @Test
+ public void testNoValue() {
+ NewCookie c = NewCookie.valueOf("foo=");
+ assertTrue("".equals(c.getValue())
+ && "foo".equals(c.getName()));
+ }
@Test
public void testFromComplexString() {
diff --git a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java
index 1ee0881..4472794 100644
--- a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java
+++ b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ResponseImplTest.java
@@ -279,6 +279,21 @@ public class ResponseImplTest {
}
@Test
+ public void testGetCookiesWithEmptyValues() {
+ ResponseImpl ri = new ResponseImpl(200);
+ MetadataMap<String, Object> meta = new MetadataMap<>();
+ meta.add("Set-Cookie", NewCookie.valueOf("a="));
+ meta.add("Set-Cookie", NewCookie.valueOf("c=\"\""));
+ ri.addMetadata(meta);
+ Map<String, NewCookie> cookies = ri.getCookies();
+ assertEquals(2, cookies.size());
+ assertEquals("a=\"\";Version=1", cookies.get("a").toString());
+ assertEquals("c=\"\";Version=1", cookies.get("c").toString());
+ assertEquals("", cookies.get("a").getValue());
+ assertEquals("", cookies.get("c").getValue());
+ }
+
+ @Test
public void testGetCookies() {
ResponseImpl ri = new ResponseImpl(200);
MetadataMap<String, Object> meta = new MetadataMap<>();