test/jdk/java/net/httpclient/http2/server/Http2TestExchangeImpl.java
changeset 50681 4254bed3c09d
parent 49765 ee6f7a61f3a5
child 52196 420445d16008
child 56795 03ece2518428
--- a/test/jdk/java/net/httpclient/http2/server/Http2TestExchangeImpl.java	Wed Jun 20 17:15:16 2018 +0200
+++ b/test/jdk/java/net/httpclient/http2/server/Http2TestExchangeImpl.java	Wed Jun 20 09:05:57 2018 -0700
@@ -26,17 +26,19 @@
 import java.io.IOException;
 import java.net.URI;
 import java.net.InetSocketAddress;
+import java.net.http.HttpHeaders;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.CompletableFuture;
-import java.util.function.Consumer;
 import javax.net.ssl.SSLSession;
-import jdk.internal.net.http.common.HttpHeadersImpl;
+import jdk.internal.net.http.common.HttpHeadersBuilder;
 import jdk.internal.net.http.frame.HeaderFrame;
 import jdk.internal.net.http.frame.HeadersFrame;
 
 public class Http2TestExchangeImpl implements Http2TestExchange {
 
-    final HttpHeadersImpl reqheaders;
-    final HttpHeadersImpl rspheaders;
+    final HttpHeaders reqheaders;
+    final HttpHeadersBuilder rspheadersBuilder;
     final URI uri;
     final String method;
     final InputStream is;
@@ -52,8 +54,8 @@
 
     Http2TestExchangeImpl(int streamid,
                           String method,
-                          HttpHeadersImpl reqheaders,
-                          HttpHeadersImpl rspheaders,
+                          HttpHeaders reqheaders,
+                          HttpHeadersBuilder rspheadersBuilder,
                           URI uri,
                           InputStream is,
                           SSLSession sslSession,
@@ -61,7 +63,7 @@
                           Http2TestServerConnection conn,
                           boolean pushAllowed) {
         this.reqheaders = reqheaders;
-        this.rspheaders = rspheaders;
+        this.rspheadersBuilder = rspheadersBuilder;
         this.uri = uri;
         this.method = method;
         this.is = is;
@@ -74,7 +76,7 @@
     }
 
     @Override
-    public HttpHeadersImpl getRequestHeaders() {
+    public HttpHeaders getRequestHeaders() {
         return reqheaders;
     }
 
@@ -84,8 +86,8 @@
     }
 
     @Override
-    public HttpHeadersImpl getResponseHeaders() {
-        return rspheaders;
+    public HttpHeadersBuilder getResponseHeaders() {
+        return rspheadersBuilder;
     }
 
     @Override
@@ -129,13 +131,14 @@
         this.responseLength = responseLength;
         if (responseLength > 0 || responseLength < 0) {
                 long clen = responseLength > 0 ? responseLength : 0;
-            rspheaders.setHeader("Content-length", Long.toString(clen));
+            rspheadersBuilder.setHeader("Content-length", Long.toString(clen));
         }
 
-        rspheaders.setHeader(":status", Integer.toString(rCode));
+        rspheadersBuilder.setHeader(":status", Integer.toString(rCode));
+        HttpHeaders headers = rspheadersBuilder.build();
 
         Http2TestServerConnection.ResponseHeaders response
-                = new Http2TestServerConnection.ResponseHeaders(rspheaders);
+                = new Http2TestServerConnection.ResponseHeaders(headers);
         response.streamid(streamid);
         response.setFlag(HeaderFrame.END_HEADERS);
 
@@ -175,13 +178,19 @@
     }
 
     @Override
-    public void serverPush(URI uri, HttpHeadersImpl headers, InputStream content) {
-        OutgoingPushPromise pp = new OutgoingPushPromise(
-                streamid, uri, headers, content);
-        headers.setHeader(":method", "GET");
-        headers.setHeader(":scheme", uri.getScheme());
-        headers.setHeader(":authority", uri.getAuthority());
-        headers.setHeader(":path", uri.getPath());
+    public void serverPush(URI uri, HttpHeaders headers, InputStream content) {
+        HttpHeadersBuilder headersBuilder = new HttpHeadersBuilder();
+        headersBuilder.setHeader(":method", "GET");
+        headersBuilder.setHeader(":scheme", uri.getScheme());
+        headersBuilder.setHeader(":authority", uri.getAuthority());
+        headersBuilder.setHeader(":path", uri.getPath());
+        for (Map.Entry<String,List<String>> entry : headers.map().entrySet()) {
+            for (String value : entry.getValue())
+                headersBuilder.addHeader(entry.getKey(), value);
+        }
+        HttpHeaders combinedHeaders = headersBuilder.build();
+        OutgoingPushPromise pp = new OutgoingPushPromise(streamid, uri, combinedHeaders, content);
+
         try {
             conn.outputQ.put(pp);
             // writeLoop will spin up thread to read the InputStream