summaryrefslogtreecommitdiffstats
path: root/container-core
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@vespa.ai>2023-11-17 16:22:30 +0100
committerBjørn Christian Seime <bjorncs@vespa.ai>2023-11-17 16:22:34 +0100
commit3031e5a425e54cb7a4754a8a47c7a4a9508b1f5c (patch)
tree8d2363bea8fdcda9fecf98269978fe5f003e53b4 /container-core
parent9203ba4ddcbabe3e9f7381f226ce47d84bea9ce8 (diff)
Extend HttpRequestBuilder with additional setters
Diffstat (limited to 'container-core')
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestBuilder.java21
1 files changed, 20 insertions, 1 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestBuilder.java b/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestBuilder.java
index a2d792e6ae0..147f388e08c 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestBuilder.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestBuilder.java
@@ -4,6 +4,8 @@ package com.yahoo.container.jdisc;
import com.yahoo.jdisc.http.HttpRequest.Method;
import java.io.InputStream;
+import java.net.SocketAddress;
+import java.security.Principal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -19,9 +21,13 @@ public class HttpRequestBuilder {
private final String path;
private final Map<String, List<String>> queryParameters = new TreeMap<>();
private final Map<String, String> headers = new TreeMap<>();
+ private final Map<String, Object> attributes = new TreeMap<>();
private String scheme;
private String hostname;
private InputStream content;
+ private Principal principal;
+ private SocketAddress socketAddress;
+ private int port = -1;
private HttpRequestBuilder(Method method, String path) {
this.method = method;
@@ -43,10 +49,20 @@ public class HttpRequestBuilder {
public HttpRequestBuilder withHostname(String hostname) { this.hostname = hostname; return this; }
+ public HttpRequestBuilder withPrincipal(Principal p) { principal = p; return this; }
+
+ public HttpRequestBuilder withRemoteAddress(SocketAddress sa) { socketAddress = sa; return this; }
+
+ public HttpRequestBuilder withAttribute(String name, Object value) { attributes.put(name, value); return this; }
+
+ public HttpRequestBuilder withPort(int port) { this.port = port; return this; }
+
public HttpRequest build() {
String scheme = this.scheme != null ? this.scheme : "http";
String hostname = this.hostname != null ? this.hostname : "localhost";
- StringBuilder uriBuilder = new StringBuilder(scheme).append("://").append(hostname).append(path);
+ StringBuilder uriBuilder = new StringBuilder(scheme).append("://").append(hostname);
+ if (port > 0) uriBuilder.append(':').append(port);
+ uriBuilder.append(path);
if (queryParameters.size() > 0) {
uriBuilder.append('?');
queryParameters.forEach((name, values) -> {
@@ -66,6 +82,9 @@ public class HttpRequestBuilder {
request = HttpRequest.createTestRequest(uriBuilder.toString(), method);
}
headers.forEach((name, value) -> request.getJDiscRequest().headers().put(name, value));
+ if (principal != null) request.getJDiscRequest().setUserPrincipal(principal);
+ if (socketAddress != null) request.getJDiscRequest().setRemoteAddress(socketAddress);
+ request.getJDiscRequest().context().putAll(attributes);
return request;
}
}