summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-10-18 23:06:23 +0200
committerGitHub <noreply@github.com>2022-10-18 23:06:23 +0200
commit733cb216bc1519e34749a5e358f7e12c962c96d6 (patch)
tree23be90437474d3890786d1a81a1f69a6fb678bf6
parent282ed72b5ad4bb44aa11b35ddd31b16c679db720 (diff)
parent7d54cd9ee6ad52836dfac4b584053a9fe7160b5b (diff)
Merge pull request #24499 from vespa-engine/balder/use-faster-jsonrender
- Unify on the faster JsonRender. The default Value.toString has a ve…
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java11
-rw-r--r--vespajlib/src/main/java/com/yahoo/data/access/slime/SlimeAdapter.java21
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/JsonFormat.java7
3 files changed, 18 insertions, 21 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
index 4f55b9946a8..31f99ab1927 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
@@ -418,8 +418,7 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
protected void renderGroupMetadata(GroupId id) throws IOException {
if (!(id instanceof ValueGroupId || id instanceof BucketGroupId)) return;
- if (id instanceof ValueGroupId) {
- ValueGroupId<?> valueId = (ValueGroupId<?>) id;
+ if (id instanceof ValueGroupId valueId) {
generator.writeStringField(GROUPING_VALUE, getIdValue(valueId));
} else {
BucketGroupId<?> bucketId = (BucketGroupId<?>) id;
@@ -663,7 +662,7 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
if (key.type() == Type.STRING) {
map.put(key.asString(), value);
} else {
- map.put(key.toString(), value);
+ map.put(JsonRender.render(key, new StringBuilder(), true).toString(), value);
}
}
return map;
@@ -685,7 +684,7 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
if (item.type() == Type.STRING) {
wset.put(item.asString(), weight.asLong());
} else if (settings.jsonWsetsAll) {
- wset.put(item.toString(), weight.asLong());
+ wset.put(JsonRender.render(item, new StringBuilder(), true).toString(), weight.asLong());
} else {
return null;
}
@@ -753,9 +752,7 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
}
private void renderInspectorDirect(Inspector data) throws IOException {
- StringBuilder intermediate = new StringBuilder();
- JsonRender.render(data, intermediate, true);
- generator().writeRawValue(intermediate.toString());
+ generator().writeRawValue(JsonRender.render(data, new StringBuilder(), true).toString());
}
protected void renderFieldContents(Object field) throws IOException {
diff --git a/vespajlib/src/main/java/com/yahoo/data/access/slime/SlimeAdapter.java b/vespajlib/src/main/java/com/yahoo/data/access/slime/SlimeAdapter.java
index 010a015f288..0d4484a7136 100644
--- a/vespajlib/src/main/java/com/yahoo/data/access/slime/SlimeAdapter.java
+++ b/vespajlib/src/main/java/com/yahoo/data/access/slime/SlimeAdapter.java
@@ -33,17 +33,16 @@ public final class SlimeAdapter implements com.yahoo.data.access.Inspector {
public boolean valid() { return inspector.valid(); }
public com.yahoo.data.access.Type type() {
- switch(inspector.type()) {
- case NIX: return com.yahoo.data.access.Type.EMPTY;
- case BOOL: return com.yahoo.data.access.Type.BOOL;
- case LONG: return com.yahoo.data.access.Type.LONG;
- case DOUBLE: return com.yahoo.data.access.Type.DOUBLE;
- case STRING: return com.yahoo.data.access.Type.STRING;
- case DATA: return com.yahoo.data.access.Type.DATA;
- case ARRAY: return com.yahoo.data.access.Type.ARRAY;
- case OBJECT: return com.yahoo.data.access.Type.OBJECT;
- }
- return com.yahoo.data.access.Type.EMPTY;
+ return switch (inspector.type()) {
+ case NIX -> com.yahoo.data.access.Type.EMPTY;
+ case BOOL -> com.yahoo.data.access.Type.BOOL;
+ case LONG -> com.yahoo.data.access.Type.LONG;
+ case DOUBLE -> com.yahoo.data.access.Type.DOUBLE;
+ case STRING -> com.yahoo.data.access.Type.STRING;
+ case DATA -> com.yahoo.data.access.Type.DATA;
+ case ARRAY -> com.yahoo.data.access.Type.ARRAY;
+ case OBJECT -> com.yahoo.data.access.Type.OBJECT;
+ };
}
private boolean verify(Type okTypeA) {
diff --git a/vespajlib/src/main/java/com/yahoo/slime/JsonFormat.java b/vespajlib/src/main/java/com/yahoo/slime/JsonFormat.java
index f30c3e66aab..5432e139918 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/JsonFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/JsonFormat.java
@@ -1,15 +1,16 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.slime;
-import ai.vespa.validation.Validation;
import com.yahoo.io.AbstractByteWriter;
import com.yahoo.io.ByteWriter;
import com.yahoo.text.AbstractUtf8Array;
import com.yahoo.text.Utf8;
import com.yahoo.text.Utf8String;
-import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.UncheckedIOException;
import static ai.vespa.validation.Validation.requireInRange;
import static java.nio.charset.StandardCharsets.UTF_8;