Path: blob/master/src/java.net.http/share/classes/jdk/internal/net/http/ImmutableHttpRequest.java
41171 views
/*1* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation. Oracle designates this7* particular file as subject to the "Classpath" exception as provided8* by Oracle in the LICENSE file that accompanied this code.9*10* This code is distributed in the hope that it will be useful, but WITHOUT11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License13* version 2 for more details (a copy is included in the LICENSE file that14* accompanied this code).15*16* You should have received a copy of the GNU General Public License version17* 2 along with this work; if not, write to the Free Software Foundation,18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.19*20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA21* or visit www.oracle.com if you need additional information or have any22* questions.23*/2425package jdk.internal.net.http;2627import java.net.URI;28import java.net.http.HttpHeaders;29import java.net.http.HttpRequest;30import java.time.Duration;31import java.util.Objects;32import java.util.Optional;33import java.net.http.HttpClient.Version;34import static jdk.internal.net.http.common.Utils.ALLOWED_HEADERS;3536final class ImmutableHttpRequest extends HttpRequest {3738private final String method;39private final URI uri;40private final HttpHeaders headers;41private final Optional<BodyPublisher> requestPublisher;42private final boolean expectContinue;43private final Optional<Duration> timeout;44private final Optional<Version> version;4546/** Creates an ImmutableHttpRequest from the given builder. */47ImmutableHttpRequest(HttpRequestBuilderImpl builder) {48this.method = Objects.requireNonNull(builder.method());49this.uri = Objects.requireNonNull(builder.uri());50this.headers = HttpHeaders.of(builder.headersBuilder().map(), ALLOWED_HEADERS);51this.requestPublisher = Optional.ofNullable(builder.bodyPublisher());52this.expectContinue = builder.expectContinue();53this.timeout = Optional.ofNullable(builder.timeout());54this.version = Objects.requireNonNull(builder.version());55}5657@Override58public String method() { return method; }5960@Override61public URI uri() { return uri; }6263@Override64public HttpHeaders headers() {65return headers;66}6768@Override69public Optional<BodyPublisher> bodyPublisher() { return requestPublisher; }7071@Override72public boolean expectContinue() { return expectContinue; }7374@Override75public Optional<Duration> timeout() { return timeout; }7677@Override78public Optional<Version> version() { return version; }7980@Override81public String toString() {82return uri.toString() + " " + method;83}84}858687