diff options
author | Bjørn Christian Seime <bjorncs@vespa.ai> | 2024-03-12 08:00:49 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@vespa.ai> | 2024-03-12 08:00:49 +0100 |
commit | 76d95842f2adcfd2c91682fc099f61fa2f364055 (patch) | |
tree | 854b06115a1de5ec9a230d96b981ea9594aea0b8 /container-core | |
parent | 3de0460b18304c733effe35b763f73b48db5ba7f (diff) |
Misc improvements to `RestApi`
Diffstat (limited to 'container-core')
-rw-r--r-- | container-core/src/main/java/com/yahoo/restapi/RestApi.java | 17 | ||||
-rw-r--r-- | container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java | 1 |
2 files changed, 10 insertions, 8 deletions
diff --git a/container-core/src/main/java/com/yahoo/restapi/RestApi.java b/container-core/src/main/java/com/yahoo/restapi/RestApi.java index ee5628988c9..69cbf48cb1b 100644 --- a/container-core/src/main/java/com/yahoo/restapi/RestApi.java +++ b/container-core/src/main/java/com/yahoo/restapi/RestApi.java @@ -15,12 +15,11 @@ import com.yahoo.security.tls.ConnectionAuthContext; import javax.net.ssl.SSLSession; import java.io.InputStream; +import java.math.BigDecimal; import java.net.InetSocketAddress; import java.security.Principal; import java.util.List; import java.util.Optional; -import java.util.OptionalDouble; -import java.util.OptionalLong; /** * Rest API routing and response serialization @@ -149,6 +148,8 @@ public interface RestApi { /** Scheme, domain and port, for the original request. <em>Use this only for generating resources links, not for custom routing!</em> */ // TODO: this needs to include path and query as well, to be useful for generating resource links that need not be rewritten. HttpURL baseRequestURL(); + /** Full URL of the request */ + HttpURL url(); AclMapping.Action aclAction(); Optional<Principal> userPrincipal(); Principal userPrincipalOrThrow(); @@ -161,14 +162,14 @@ public interface RestApi { String getStringOrThrow(String name); default Optional<Boolean> getBoolean(String name) { return getString(name).map(Boolean::valueOf);} default boolean getBooleanOrThrow(String name) { return Boolean.parseBoolean(getStringOrThrow(name)); } - default OptionalLong getLong(String name) { - return getString(name).map(Long::parseLong).map(OptionalLong::of).orElseGet(OptionalLong::empty); - } + default Optional<Long> getLong(String name) { return getString(name).map(Long::parseLong); } default long getLongOrThrow(String name) { return Long.parseLong(getStringOrThrow(name)); } - default OptionalDouble getDouble(String name) { - return getString(name).map(Double::parseDouble).map(OptionalDouble::of).orElseGet(OptionalDouble::empty); - } + default Optional<Double> getDouble(String name) { return getString(name).map(Double::parseDouble); } + default int getIntegerOrThrow(String name) { return Integer.parseInt(getStringOrThrow(name)); } + default Optional<Integer> getInteger(String name) { return getString(name).map(Integer::parseInt); } default double getDoubleOrThrow(String name) { return Double.parseDouble(getStringOrThrow(name)); } + default BigDecimal getBigDecimalOrThrow(String name) { return new BigDecimal(getStringOrThrow(name)); } + default Optional<BigDecimal> getBigDecimal(String name) { return getString(name).map(BigDecimal::new); } } interface PathParameters extends Parameters { diff --git a/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java b/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java index a381fd3c9a6..56e7f4e3098 100644 --- a/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java +++ b/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java @@ -479,6 +479,7 @@ class RestApiImpl implements RestApi { } return HttpURL.from(URI.create(sb.toString())); } + @Override public HttpURL url() { return HttpURL.from(request.getUri()); } @Override public AclMapping.Action aclAction() { return aclAction; } @Override public Optional<Principal> userPrincipal() { return Optional.ofNullable(request.getJDiscRequest().getUserPrincipal()); |