< prev index next >

src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/HttpRequestBuilderImpl.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 24,148 **** */ package jdk.incubator.http; import java.net.URI; - import jdk.incubator.http.HttpRequest.BodyProcessor; import java.time.Duration; import java.util.Optional; ! import static java.util.Objects.requireNonNull; import jdk.incubator.http.internal.common.HttpHeadersImpl; import static jdk.incubator.http.internal.common.Utils.isValidName; import static jdk.incubator.http.internal.common.Utils.isValidValue; class HttpRequestBuilderImpl extends HttpRequest.Builder { private HttpHeadersImpl userHeaders; private URI uri; private String method; - //private HttpClient.Redirect followRedirects; private boolean expectContinue; ! private HttpRequest.BodyProcessor body; private volatile Optional<HttpClient.Version> version; - //private final HttpClientImpl client; - //private ProxySelector proxy; private Duration duration; public HttpRequestBuilderImpl(URI uri) { ! //this.client = client; checkURI(uri); this.uri = uri; this.userHeaders = new HttpHeadersImpl(); this.method = "GET"; // default, as per spec this.version = Optional.empty(); } public HttpRequestBuilderImpl() { this.userHeaders = new HttpHeadersImpl(); this.version = Optional.empty(); } @Override public HttpRequestBuilderImpl uri(URI uri) { ! requireNonNull(uri); checkURI(uri); this.uri = uri; return this; } ! private static void checkURI(URI uri) { ! String scheme = uri.getScheme().toLowerCase(); ! if (!scheme.equals("https") && !scheme.equals("http")) { ! throw new IllegalArgumentException("invalid URI scheme"); ! } ! } ! /* ! @Override ! public HttpRequestBuilderImpl followRedirects(HttpClient.Redirect follow) { ! requireNonNull(follow); ! this.followRedirects = follow; ! return this; ! } ! */ ! @Override ! public HttpRequestBuilderImpl header(String name, String value) { ! checkNameAndValue(name, value); ! userHeaders.addHeader(name, value); ! return this; } ! @Override ! public HttpRequestBuilderImpl headers(String... params) { ! requireNonNull(params); ! if (params.length % 2 != 0) { ! throw new IllegalArgumentException("wrong number of parameters"); } ! for (int i = 0; i < params.length; i += 2) { ! String name = params[i]; ! String value = params[i + 1]; ! header(name, value); } - return this; } - /* - @Override - public HttpRequestBuilderImpl proxy(ProxySelector proxy) { - requireNonNull(proxy); - this.proxy = proxy; - return this; - } - */ @Override public HttpRequestBuilderImpl copy() { HttpRequestBuilderImpl b = new HttpRequestBuilderImpl(this.uri); b.userHeaders = this.userHeaders.deepCopy(); b.method = this.method; - //b.followRedirects = this.followRedirects; b.expectContinue = this.expectContinue; ! b.body = body; b.uri = uri; ! //b.proxy = proxy; return b; } @Override public HttpRequestBuilderImpl setHeader(String name, String value) { checkNameAndValue(name, value); userHeaders.setHeader(name, value); return this; } ! private void checkNameAndValue(String name, String value) { ! requireNonNull(name, "name"); ! requireNonNull(value, "value"); ! if (!isValidName(name)) { ! throw new IllegalArgumentException("invalid header name"); } ! if (!isValidValue(value)) { ! throw new IllegalArgumentException("invalid header value"); } } @Override public HttpRequestBuilderImpl expectContinue(boolean enable) { expectContinue = enable; --- 24,142 ---- */ package jdk.incubator.http; import java.net.URI; import java.time.Duration; import java.util.Optional; ! import jdk.incubator.http.HttpRequest.BodyPublisher; import jdk.incubator.http.internal.common.HttpHeadersImpl; + import static java.lang.String.format; + import static java.util.Objects.requireNonNull; import static jdk.incubator.http.internal.common.Utils.isValidName; import static jdk.incubator.http.internal.common.Utils.isValidValue; class HttpRequestBuilderImpl extends HttpRequest.Builder { private HttpHeadersImpl userHeaders; private URI uri; private String method; private boolean expectContinue; ! private BodyPublisher bodyPublisher; private volatile Optional<HttpClient.Version> version; private Duration duration; public HttpRequestBuilderImpl(URI uri) { ! requireNonNull(uri, "uri must be non-null"); checkURI(uri); this.uri = uri; this.userHeaders = new HttpHeadersImpl(); this.method = "GET"; // default, as per spec this.version = Optional.empty(); } public HttpRequestBuilderImpl() { this.userHeaders = new HttpHeadersImpl(); + this.method = "GET"; // default, as per spec this.version = Optional.empty(); } @Override public HttpRequestBuilderImpl uri(URI uri) { ! requireNonNull(uri, "uri must be non-null"); checkURI(uri); this.uri = uri; return this; } ! private static IllegalArgumentException newIAE(String message, Object... args) { ! return new IllegalArgumentException(format(message, args)); } ! private static void checkURI(URI uri) { ! String scheme = uri.getScheme(); ! if (scheme == null) ! throw newIAE("URI with undefined scheme"); ! scheme = scheme.toLowerCase(); ! if (!(scheme.equals("https") || scheme.equals("http"))) { ! throw newIAE("invalid URI scheme %s", scheme); } ! if (uri.getHost() == null) { ! throw newIAE("unsupported URI %s", uri); } } @Override public HttpRequestBuilderImpl copy() { HttpRequestBuilderImpl b = new HttpRequestBuilderImpl(this.uri); b.userHeaders = this.userHeaders.deepCopy(); b.method = this.method; b.expectContinue = this.expectContinue; ! b.bodyPublisher = bodyPublisher; b.uri = uri; ! b.duration = duration; ! b.version = version; return b; } + private void checkNameAndValue(String name, String value) { + requireNonNull(name, "name"); + requireNonNull(value, "value"); + if (!isValidName(name)) { + throw newIAE("invalid header name:", name); + } + if (!isValidValue(value)) { + throw newIAE("invalid header value:%s", value); + } + } + @Override public HttpRequestBuilderImpl setHeader(String name, String value) { checkNameAndValue(name, value); userHeaders.setHeader(name, value); return this; } ! @Override ! public HttpRequestBuilderImpl header(String name, String value) { ! checkNameAndValue(name, value); ! userHeaders.addHeader(name, value); ! return this; } ! ! @Override ! public HttpRequestBuilderImpl headers(String... params) { ! requireNonNull(params); ! if (params.length == 0 || params.length % 2 != 0) { ! throw newIAE("wrong number, %d, of parameters", params.length); } + for (int i = 0; i < params.length; i += 2) { + String name = params[i]; + String value = params[i + 1]; + header(name, value); + } + return this; } @Override public HttpRequestBuilderImpl expectContinue(boolean enable) { expectContinue = enable;
*** 156,208 **** return this; } HttpHeadersImpl headers() { return userHeaders; } - //HttpClientImpl client() {return client;} - URI uri() { return uri; } String method() { return method; } - //HttpClient.Redirect followRedirects() { return followRedirects; } - - //ProxySelector proxy() { return proxy; } - boolean expectContinue() { return expectContinue; } ! public HttpRequest.BodyProcessor body() { return body; } Optional<HttpClient.Version> version() { return version; } @Override ! public HttpRequest.Builder GET() { return method("GET", null); } @Override ! public HttpRequest.Builder POST(BodyProcessor body) { ! return method("POST", body); } @Override ! public HttpRequest.Builder DELETE(BodyProcessor body) { ! return method("DELETE", body); } @Override ! public HttpRequest.Builder PUT(BodyProcessor body) { ! return method("PUT", body); } @Override ! public HttpRequest.Builder method(String method, BodyProcessor body) { ! this.method = requireNonNull(method); ! this.body = body; return this; } @Override public HttpRequest build() { return new HttpRequestImpl(this); } @Override public HttpRequest.Builder timeout(Duration duration) { --- 150,213 ---- return this; } HttpHeadersImpl headers() { return userHeaders; } URI uri() { return uri; } String method() { return method; } boolean expectContinue() { return expectContinue; } ! BodyPublisher bodyPublisher() { return bodyPublisher; } Optional<HttpClient.Version> version() { return version; } @Override ! public HttpRequest.Builder GET() { ! return method0("GET", null); ! } @Override ! public HttpRequest.Builder POST(BodyPublisher body) { ! return method0("POST", requireNonNull(body)); } @Override ! public HttpRequest.Builder DELETE(BodyPublisher body) { ! return method0("DELETE", requireNonNull(body)); } @Override ! public HttpRequest.Builder PUT(BodyPublisher body) { ! return method0("PUT", requireNonNull(body)); } @Override ! public HttpRequest.Builder method(String method, BodyPublisher body) { ! requireNonNull(method); ! if (method.equals("")) ! throw newIAE("illegal method <empty string>"); ! if (method.equals("CONNECT")) ! throw newIAE("method CONNECT is not supported"); ! return method0(method, requireNonNull(body)); ! } ! ! private HttpRequest.Builder method0(String method, BodyPublisher body) { ! assert method != null; ! assert !method.equals("GET") ? body != null : true; ! assert !method.equals(""); ! this.method = method; ! this.bodyPublisher = body; return this; } @Override public HttpRequest build() { + if (uri == null) + throw new IllegalStateException("uri is null"); + assert method != null; return new HttpRequestImpl(this); } @Override public HttpRequest.Builder timeout(Duration duration) {
*** 211,218 **** throw new IllegalArgumentException("Invalid duration: " + duration); this.duration = duration; return this; } ! Duration duration() { return duration; } } --- 216,223 ---- throw new IllegalArgumentException("Invalid duration: " + duration); this.duration = duration; return this; } ! Duration timeout() { return duration; } }
< prev index next >