diff options
author | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2019-04-16 12:40:29 +0200 |
---|---|---|
committer | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2019-06-06 13:03:28 +0200 |
commit | f2500b8a48b32eb0b99ffaa4c640dd077cae1dfd (patch) | |
tree | 1bef5eb50aa67e7757e337cc8a805c8fb2ad293b /tenant-cd | |
parent | ce1185fc0558f2fe586e7f39e72c72dfaa68f56c (diff) |
Fill Query
Diffstat (limited to 'tenant-cd')
3 files changed, 45 insertions, 2 deletions
diff --git a/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/Query.java b/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/Query.java index e7b6baa1406..80dbfe4385a 100644 --- a/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/Query.java +++ b/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/Query.java @@ -1,5 +1,12 @@ package com.yahoo.vespa.tenant.cd; +import java.util.Map; +import java.util.stream.Stream; + +import static java.util.Map.copyOf; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.toUnmodifiableMap; + /** * An immutable query to send to a Vespa {@link Endpoint}, to receive a {@link Search}. * @@ -7,4 +14,41 @@ package com.yahoo.vespa.tenant.cd; */ public class Query { + private final String rawQuery; + private final Map<String, String> parameters; + + private Query(String rawQuery, Map<String, String> parameters) { + this.rawQuery = rawQuery; + this.parameters = parameters; + } + + /** Creates a query with the given raw query part. */ + public static Query ofRaw(String rawQuery) { + if (rawQuery.isBlank()) + throw new IllegalArgumentException("Query can not be blank."); + + return new Query(rawQuery, + Stream.of(rawQuery.split("&")) + .map(pair -> pair.split("=")) + .collect(toUnmodifiableMap(pair -> pair[0], pair -> pair[1]))); + } + + /** Creates a query with the given name-value pairs. */ + public static Query ofParameters(Map<String, String> parameters) { + if (parameters.isEmpty()) + throw new IllegalArgumentException("Parameters can not be empty."); + + return new Query(parameters.entrySet().stream() + .map(entry -> entry.getKey() + "=" + entry.getValue()) + .collect(joining("&")), + copyOf(parameters)); + } + + /** Returns a copy of this with the given name-value pair added, potentially overriding any current value. */ + public Query withParameter(String name, String value) { + return ofParameters(Stream.concat(parameters.entrySet().stream().filter(entry -> ! entry.getKey().equals(name)), + Stream.of(Map.entry(name, value))) + .collect(toUnmodifiableMap(Map.Entry::getKey, Map.Entry::getValue))); + } + } diff --git a/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/metrics/Metric.java b/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/metrics/Metric.java index b7517668e8f..37adf8239fc 100644 --- a/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/metrics/Metric.java +++ b/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/metrics/Metric.java @@ -10,7 +10,7 @@ import static java.util.Map.copyOf; import static java.util.stream.Collectors.toUnmodifiableMap; /** - * A set of statistics for a metric, for points over a String-indexed space. + * A set of statistics for a metric, for points over a space with named dimensions of arbitrary type. * * @author jonmv */ diff --git a/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/metrics/Space.java b/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/metrics/Space.java index 31f1557a2ee..38066373b28 100644 --- a/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/metrics/Space.java +++ b/tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/metrics/Space.java @@ -1,6 +1,5 @@ package com.yahoo.vespa.tenant.cd.metrics; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; |