summaryrefslogtreecommitdiffstats
path: root/tenant-cd
diff options
context:
space:
mode:
authorJon Marius Venstad <jvenstad@yahoo-inc.com>2019-04-16 12:40:29 +0200
committerJon Marius Venstad <jvenstad@yahoo-inc.com>2019-06-06 13:03:28 +0200
commitf2500b8a48b32eb0b99ffaa4c640dd077cae1dfd (patch)
tree1bef5eb50aa67e7757e337cc8a805c8fb2ad293b /tenant-cd
parentce1185fc0558f2fe586e7f39e72c72dfaa68f56c (diff)
Fill Query
Diffstat (limited to 'tenant-cd')
-rw-r--r--tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/Query.java44
-rw-r--r--tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/metrics/Metric.java2
-rw-r--r--tenant-cd/src/main/java/com/yahoo/vespa/tenant/cd/metrics/Space.java1
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;