From f0433c5fb7dd0b9a300c03da4dad4e9fc6a5929e Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Tue, 2 Jul 2019 10:52:40 +0200 Subject: Use new Jetty api for generating set-cookie headers --- .../src/main/java/com/yahoo/jdisc/http/Cookie.java | 36 ++++++++++------------ .../java/com/yahoo/jdisc/http/CookieTestCase.java | 2 +- .../jdisc/http/server/jetty/HttpServerTest.java | 2 +- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/Cookie.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/Cookie.java index 06c93db7ede..a2c9a2cab82 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/Cookie.java +++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/Cookie.java @@ -2,10 +2,7 @@ package com.yahoo.jdisc.http; import org.eclipse.jetty.server.CookieCutter; -import org.eclipse.jetty.server.Response; -import java.net.HttpCookie; -import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; @@ -15,6 +12,8 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import java.util.stream.StreamSupport; +import static java.util.stream.Collectors.toList; + /** * A RFC 6265 compliant cookie. * @@ -154,7 +153,7 @@ public class Cookie { public static String toCookieHeader(Iterable cookies) { return StreamSupport.stream(cookies.spliterator(), false) .map(cookie -> { - HttpCookie httpCookie = new HttpCookie(cookie.getName(), cookie.getValue()); + java.net.HttpCookie httpCookie = new java.net.HttpCookie(cookie.getName(), cookie.getValue()); httpCookie.setDomain(cookie.getDomain()); httpCookie.setHttpOnly(cookie.isHttpOnly()); httpCookie.setMaxAge(cookie.getMaxAge(TimeUnit.SECONDS)); @@ -181,23 +180,22 @@ public class Cookie { cookie.setHttpOnly(servletCookie.isHttpOnly()); return cookie; }) - .collect(Collectors.toList()); + .collect(toList()); } public static List toSetCookieHeaders(Iterable cookies) { - // Ugly, bot Jetty does not provide a dedicated cookie parser (will be included in Jetty 10) - Response response = new Response(null, null); - for (Cookie cookie : cookies) { - response.addSetRFC6265Cookie( - cookie.getName(), - cookie.getValue(), - cookie.getDomain(), - cookie.getPath(), - cookie.getMaxAge(TimeUnit.SECONDS), - cookie.isSecure(), - cookie.isHttpOnly()); - } - return new ArrayList<>(response.getHeaders("Set-Cookie")); + return StreamSupport.stream(cookies.spliterator(), false) + .map(cookie -> + new org.eclipse.jetty.http.HttpCookie( + cookie.getName(), + cookie.getValue(), + cookie.getDomain(), + cookie.getPath(), + cookie.getMaxAge(TimeUnit.SECONDS), + cookie.isSecure(), + cookie.isHttpOnly() + ).getRFC6265SetCookie()) + .collect(toList()); } @Deprecated // TODO Vespa 8 Remove @@ -206,7 +204,7 @@ public class Cookie { } public static Cookie fromSetCookieHeader(String headerVal) { - return HttpCookie.parse(headerVal).stream() + return java.net.HttpCookie.parse(headerVal).stream() .map(httpCookie -> { Cookie cookie = new Cookie(); cookie.setName(httpCookie.getName()); diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/CookieTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/CookieTestCase.java index a367edb084f..709a9484349 100644 --- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/CookieTestCase.java +++ b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/CookieTestCase.java @@ -113,7 +113,7 @@ public class CookieTestCase { @Test public void requireThatSetCookieCanBeEncoded() { assertEncodeSetCookie( - Collections.singletonList("foo.name=foo.value;Path=path;Domain=domain;Secure;HttpOnly"), + Collections.singletonList("foo.name=foo.value; Path=path; Domain=domain; Secure; HttpOnly"), Collections.singletonList(newSetCookie("foo"))); } diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java index aecd3854408..ec9c90ffa50 100644 --- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java +++ b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java @@ -407,7 +407,7 @@ public class HttpServerTest { driver.client().get("/status.html") .expectStatusCode(is(OK)) .expectHeader("Set-Cookie", - is("foo=bar;Path=/foopath;Domain=.localhost;Secure;HttpOnly")); + is("foo=bar; Path=/foopath; Domain=.localhost; Secure; HttpOnly")); assertThat(driver.close(), is(true)); } -- cgit v1.2.3