diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-02-06 22:13:19 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2020-02-06 22:13:19 +0100 |
commit | 3683b82a6e1d96243560415720ac6ffe5bc8380c (patch) | |
tree | 8abf1c18a8cef762c4e687d4dc52d5ccb3e7a13a /config | |
parent | ff260db549d4c7cf4df1d782d6b82ce76bbabd61 (diff) |
Remove unnecessary classes
We now have just one implementation of config requests, so remove
unnecessary abstract classes
Diffstat (limited to 'config')
4 files changed, 362 insertions, 435 deletions
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequestV3.java b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequestV3.java index 1c842a4d1b0..d1ef9b02d75 100644 --- a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequestV3.java +++ b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTClientConfigRequestV3.java @@ -5,13 +5,20 @@ import com.yahoo.config.ConfigInstance; import com.yahoo.config.subscription.impl.ConfigSubscription; import com.yahoo.config.subscription.impl.JRTConfigSubscription; import com.yahoo.jrt.Request; +import com.yahoo.jrt.StringValue; +import com.yahoo.slime.JsonFormat; +import com.yahoo.slime.Slime; +import com.yahoo.text.Utf8; import com.yahoo.text.Utf8Array; import com.yahoo.vespa.config.ConfigKey; import com.yahoo.vespa.config.JRTMethods; import com.yahoo.vespa.config.RawConfig; import com.yahoo.vespa.config.util.ConfigUtils; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.util.Optional; +import java.util.logging.Logger; /** * Represents version 3 config request for config clients. Provides methods for inspecting request and response @@ -21,7 +28,12 @@ import java.util.Optional; * * @author Ulf Lilleengen */ -public class JRTClientConfigRequestV3 extends SlimeClientConfigRequest { +public class JRTClientConfigRequestV3 implements JRTClientConfigRequest { + + protected static final Logger log = Logger.getLogger(JRTClientConfigRequestV3.class.getName()); + protected final SlimeRequestData requestData; + protected final Request request; + private final SlimeResponseData responseData; protected JRTClientConfigRequestV3(ConfigKey<?> key, String hostname, @@ -32,15 +44,38 @@ public class JRTClientConfigRequestV3 extends SlimeClientConfigRequest { Trace trace, CompressionType compressionType, Optional<VespaVersion> vespaVersion) { - super(key, hostname, defSchema, configMd5, generation, timeout, trace, compressionType, vespaVersion); + Slime data = SlimeRequestData.encodeRequest(key, + hostname, + defSchema, + configMd5, + generation, + timeout, + trace, + getProtocolVersion(), + compressionType, + vespaVersion); + Request jrtReq = new Request(getJRTMethodName()); + jrtReq.parameters().add(new StringValue(encodeAsUtf8String(data, true))); + + this.requestData = new SlimeRequestData(jrtReq, data); + this.responseData = new SlimeResponseData(jrtReq); + this.request = jrtReq; + } + + protected static String encodeAsUtf8String(Slime data, boolean compact) { + ByteArrayOutputStream baos = new NoCopyByteArrayOutputStream(); + try { + new JsonFormat(compact).encode(baos, data); + } catch (IOException e) { + throw new RuntimeException("Unable to encode config request", e); + } + return Utf8.toString(baos.toByteArray()); } - @Override protected String getJRTMethodName() { return JRTMethods.configV3getConfigMethodName; } - @Override protected boolean checkReturnTypes(Request request) { return JRTMethods.checkV3ReturnTypes(request); } @@ -133,4 +168,147 @@ public class JRTClientConfigRequestV3 extends SlimeClientConfigRequest { return requestData.getVespaVersion(); } + public ConfigKey<?> getConfigKey() { + return requestData.getConfigKey(); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("request='").append(getConfigKey()) + .append(",").append(getClientHostName()) + .append(",").append(getRequestConfigMd5()) + .append(",").append(getRequestGeneration()) + .append(",").append(getTimeout()) + .append(",").append(getVespaVersion().map(VespaVersion::toString).orElse("")) + .append("'\n"); + sb.append("response='").append(getNewConfigMd5()) + .append(",").append(getNewGeneration()) + .append(",").append(responseIsInternalRedeploy()) + .append("'\n"); + return sb.toString(); + } + + @Override + public String getClientHostName() { + return requestData.getClientHostName(); + } + + @Override + public Request getRequest() { + return request; + } + + @Override + public int errorCode() { + return request.errorCode(); + } + + @Override + public String errorMessage() { + return request.errorMessage(); + } + + @Override + public String getShortDescription() { + return toString(); + } + + @Override + public boolean hasUpdatedGeneration() { + long prevGen = getRequestGeneration(); + long newGen = getNewGeneration(); + return ConfigUtils.isGenerationNewer(newGen, prevGen); + } + + @Override + public long getTimeout() { + return requestData.getTimeout(); + } + + protected String newConfMd5() { + String newMd5 = getNewConfigMd5(); + if ("".equals(newMd5)) return getRequestConfigMd5(); + return newMd5; + } + + protected long newGen() { + long newGen = getNewGeneration(); + if (newGen == 0) return getRequestGeneration(); + return newGen; + } + + @Override + public DefContent getDefContent() { + return requestData.getSchema(); + } + + @Override + public boolean isError() { + return request.isError(); + } + + @Override + public boolean containsPayload() { + return false; + } + + @Override + public boolean hasUpdatedConfig() { + String respMd5 = getNewConfigMd5(); + return !respMd5.equals("") && !getRequestConfigMd5().equals(respMd5); + } + + @Override + public Trace getResponseTrace() { + return responseData.getResponseTrace(); + } + + @Override + public String getRequestConfigMd5() { + return requestData.getRequestConfigMd5(); + } + + @Override + public boolean validateResponse() { + if (request.isError()) { + return false; + } else if (request.returnValues().size() == 0) { + return false; + } else if (!checkReturnTypes(request)) { + log.warning("Invalid return types for config response: " + errorMessage()); + return false; + } + return true; + } + + @Override + public boolean validateParameters() { + int errorCode = RequestValidation.validateRequest(this); + return (errorCode == 0); + } + + @Override + public String getNewConfigMd5() { + return responseData.getResponseConfigMd5(); + } + + @Override + public long getNewGeneration() { + return responseData.getResponseConfigGeneration(); + } + + @Override + public boolean responseIsInternalRedeploy() { + return responseData.getResponseInternalRedeployment(); + } + + @Override + public long getRequestGeneration() { + return requestData.getRequestGeneration(); + } + + protected SlimeResponseData getResponseData() { + return responseData; + } } diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java index f70ebf39a28..83befda7a59 100644 --- a/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java +++ b/config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java @@ -1,17 +1,25 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.config.protocol; +import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonGenerator; import com.yahoo.jrt.DataValue; import com.yahoo.jrt.Request; +import com.yahoo.jrt.StringValue; +import com.yahoo.jrt.Value; import com.yahoo.log.LogLevel; +import com.yahoo.text.Utf8Array; +import com.yahoo.vespa.config.ConfigKey; +import com.yahoo.vespa.config.ErrorCode; import com.yahoo.vespa.config.util.ConfigUtils; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.util.Optional; +import java.util.logging.Logger; /** - * The V3 config protocol implemented on the server side. The V3 protocol uses 2 fields JRT + * The V3 config protocol implemented on the server side. The V3 protocol uses 2 fields: * * * A metadata field containing json data describing config generation, md5 and compression info * * A data field containing compressed or uncompressed json config payload. This field can be empty if the payload @@ -22,14 +30,41 @@ import java.io.IOException; * * @author Ulf Lilleengen */ -// TODO: Merge with parent -public class JRTServerConfigRequestV3 extends SlimeServerConfigRequest { +public class JRTServerConfigRequestV3 implements JRTServerConfigRequest { + protected static final Logger log = Logger.getLogger(JRTServerConfigRequestV3.class.getName()); + private static final JsonFactory jsonFactory = new JsonFactory(); + protected final Request request; + private final SlimeRequestData requestData; /** Response field */ private boolean internalRedeploy = false; + // Response values + private boolean isDelayed = false; + private Trace requestTrace = null; protected JRTServerConfigRequestV3(Request request) { - super(request); + this.requestData = new SlimeRequestData(request); + this.request = request; + } + + protected static JsonGenerator createJsonGenerator(ByteArrayOutputStream byteArrayOutputStream) throws IOException { + return jsonFactory.createGenerator(byteArrayOutputStream); + } + + protected static Value createResponseValue(ByteArrayOutputStream byteArrayOutputStream) { + return new StringValue(new Utf8Array(byteArrayOutputStream.toByteArray())); + } + + protected static void setResponseField(JsonGenerator jsonGenerator, String fieldName, String value) throws IOException { + jsonGenerator.writeStringField(fieldName, value); + } + + protected static void setResponseField(JsonGenerator jsonGenerator, String fieldName, long value) throws IOException { + jsonGenerator.writeNumberField(fieldName, value); + } + + protected static void setResponseField(JsonGenerator jsonGenerator, String fieldName, boolean value) throws IOException { + jsonGenerator.writeBooleanField(fieldName, value); } @Override @@ -85,4 +120,145 @@ public class JRTServerConfigRequestV3 extends SlimeServerConfigRequest { return new JRTServerConfigRequestV3(req); } + @Override + public ConfigKey<?> getConfigKey() { + return requestData.getConfigKey(); + } + + @Override + public DefContent getDefContent() { + return getSchema(); + } + + @Override + public boolean noCache() { + return false; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("request='").append(getConfigKey()) + .append(",").append(getClientHostName()) + .append(",").append(getRequestConfigMd5()) + .append(",").append(getRequestGeneration()) + .append(",").append(getTimeout()).append("'\n"); + return sb.toString(); + } + + @Override + public Payload payloadFromResponse(ConfigResponse response) { + return Payload.from(response.getPayload(), response.getCompressionInfo()); + } + + private DefContent getSchema() { + return requestData.getSchema(); + } + + @Override + public String getClientHostName() { + return requestData.getClientHostName(); + } + + public Trace getRequestTrace() { + if (requestTrace == null) { + requestTrace = requestData.getRequestTrace(); + } + return requestTrace; + } + + @Override + public Request getRequest() { + return request; + } + + @Override + public boolean validateParameters() { + int errorCode = RequestValidation.validateRequest(this); + if (errorCode != 0) { + addErrorResponse(errorCode); + } + return (errorCode == 0); + } + + @Override + public String getRequestConfigMd5() { + return requestData.getRequestConfigMd5(); + } + + private void addErrorResponse(int errorCode) { + addErrorResponse(errorCode, ErrorCode.getName(errorCode)); + } + + @Override + public void setDelayedResponse(boolean delayedResponse) { + this.isDelayed = delayedResponse; + } + + @Override + public void addErrorResponse(int errorCode, String name) { + ByteArrayOutputStream byteArrayOutputStream = new NoCopyByteArrayOutputStream(); + try { + JsonGenerator jsonWriter = jsonFactory.createGenerator(byteArrayOutputStream); + jsonWriter.writeStartObject(); + addCommonReturnValues(jsonWriter); + jsonWriter.writeEndObject(); + jsonWriter.close(); + } catch (IOException e) { + throw new IllegalArgumentException("Could not add error response for " + this); + } + request.setError(errorCode, name); + request.returnValues().add(createResponseValue(byteArrayOutputStream)); + } + + protected void addCommonReturnValues(JsonGenerator jsonGenerator) throws IOException { + ConfigKey<?> key = requestData.getConfigKey(); + setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_VERSION, getProtocolVersion()); + setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_DEF_NAME, key.getName()); + setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_DEF_NAMESPACE, key.getNamespace()); + setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_DEF_MD5, key.getMd5()); + setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIGID, key.getConfigId()); + setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CLIENT_HOSTNAME, requestData.getClientHostName()); + jsonGenerator.writeFieldName(SlimeResponseData.RESPONSE_TRACE); + jsonGenerator.writeRawValue(getRequestTrace().toString(true)); + } + + @Override + public long getRequestGeneration() { + return requestData.getRequestGeneration(); + } + + @Override + public boolean isDelayedResponse() { + return isDelayed; + } + + @Override + public int errorCode() { + return request.errorCode(); + } + + @Override + public String errorMessage() { + return request.errorMessage(); + } + + @Override + public String getShortDescription() { + return toString(); + } + + protected CompressionType getCompressionType() { + return requestData.getCompressionType(); + } + + @Override + public long getTimeout() { + return requestData.getTimeout(); + } + + @Override + public Optional<VespaVersion> getVespaVersion() { + return requestData.getVespaVersion(); + } } diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeClientConfigRequest.java b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeClientConfigRequest.java deleted file mode 100644 index 49fdde7c9a2..00000000000 --- a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeClientConfigRequest.java +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.config.protocol; - -import com.yahoo.jrt.Request; -import com.yahoo.jrt.StringValue; -import com.yahoo.slime.JsonFormat; -import com.yahoo.slime.Slime; -import com.yahoo.text.Utf8; -import com.yahoo.vespa.config.ConfigKey; -import com.yahoo.vespa.config.util.ConfigUtils; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.Optional; -import java.util.logging.Logger; - -/** - * Base class for new generation of config requests based on {@link Slime}. Allows for some customization of - * payload encoding and decoding, as well as adding extra request/response fields. - * - * @author Ulf Lilleengen - */ -public abstract class SlimeClientConfigRequest implements JRTClientConfigRequest { - - protected static final Logger log = Logger.getLogger(SlimeClientConfigRequest.class.getName()); - - protected final SlimeRequestData requestData; - private final SlimeResponseData responseData; - - protected final Request request; - - protected SlimeClientConfigRequest(ConfigKey<?> key, - String hostname, - DefContent defSchema, - String configMd5, - long generation, - long timeout, - Trace trace, - CompressionType compressionType, - Optional<VespaVersion> vespaVersion) { - Slime data = SlimeRequestData.encodeRequest(key, - hostname, - defSchema, - configMd5, - generation, - timeout, - trace, - getProtocolVersion(), - compressionType, - vespaVersion); - Request jrtReq = new Request(getJRTMethodName()); - jrtReq.parameters().add(new StringValue(encodeAsUtf8String(data, true))); - - this.requestData = new SlimeRequestData(jrtReq, data); - this.responseData = new SlimeResponseData(jrtReq); - this.request = jrtReq; - } - - protected abstract String getJRTMethodName(); - - protected static String encodeAsUtf8String(Slime data, boolean compact) { - ByteArrayOutputStream baos = new NoCopyByteArrayOutputStream(); - try { - new JsonFormat(compact).encode(baos, data); - } catch (IOException e) { - throw new RuntimeException("Unable to encode config request", e); - } - return Utf8.toString(baos.toByteArray()); - } - - public ConfigKey<?> getConfigKey() { - return requestData.getConfigKey(); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("request='").append(getConfigKey()) - .append(",").append(getClientHostName()) - .append(",").append(getRequestConfigMd5()) - .append(",").append(getRequestGeneration()) - .append(",").append(getTimeout()) - .append(",").append(getVespaVersion().map(VespaVersion::toString).orElse("")) - .append("'\n"); - sb.append("response='").append(getNewConfigMd5()) - .append(",").append(getNewGeneration()) - .append(",").append(responseIsInternalRedeploy()) - .append("'\n"); - return sb.toString(); - } - - @Override - public String getClientHostName() { - return requestData.getClientHostName(); - } - - @Override - public Request getRequest() { - return request; - } - - @Override - public int errorCode() { - return request.errorCode(); - } - - @Override - public String errorMessage() { - return request.errorMessage(); - } - - @Override - public String getShortDescription() { - return toString(); - } - - @Override - public boolean hasUpdatedGeneration() { - long prevGen = getRequestGeneration(); - long newGen = getNewGeneration(); - return ConfigUtils.isGenerationNewer(newGen, prevGen); - } - - @Override - public long getTimeout() { - return requestData.getTimeout(); - } - - protected String newConfMd5() { - String newMd5 = getNewConfigMd5(); - if ("".equals(newMd5)) return getRequestConfigMd5(); - return newMd5; - } - - protected long newGen() { - long newGen = getNewGeneration(); - if (newGen == 0) return getRequestGeneration(); - return newGen; - } - - @Override - public DefContent getDefContent() { - return requestData.getSchema(); - } - - @Override - public boolean isError() { - return request.isError(); - } - - @Override - public boolean containsPayload() { - return false; - } - - @Override - public boolean hasUpdatedConfig() { - String respMd5 = getNewConfigMd5(); - return !respMd5.equals("") && !getRequestConfigMd5().equals(respMd5); - } - - @Override - public Trace getResponseTrace() { - return responseData.getResponseTrace(); - } - - @Override - public String getRequestConfigMd5() { - return requestData.getRequestConfigMd5(); - } - - @Override - public boolean validateResponse() { - if (request.isError()) { - return false; - } else if (request.returnValues().size() == 0) { - return false; - } else if (!checkReturnTypes(request)) { - log.warning("Invalid return types for config response: " + errorMessage()); - return false; - } - return true; - } - - @Override - public boolean validateParameters() { - int errorCode = RequestValidation.validateRequest(this); - return (errorCode == 0); - } - - protected abstract boolean checkReturnTypes(Request request); - - @Override - public String getNewConfigMd5() { - return responseData.getResponseConfigMd5(); - } - - @Override - public long getNewGeneration() { - return responseData.getResponseConfigGeneration(); - } - - @Override - public boolean responseIsInternalRedeploy() { - return responseData.getResponseInternalRedeployment(); - } - - @Override - public long getRequestGeneration() { - return requestData.getRequestGeneration(); - } - - protected SlimeResponseData getResponseData() { - return responseData; - } - - public Optional<VespaVersion> getVespaVersion() { - return requestData.getVespaVersion(); - } - -} diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeServerConfigRequest.java b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeServerConfigRequest.java deleted file mode 100644 index 19dc4a4d51a..00000000000 --- a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeServerConfigRequest.java +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.config.protocol; - -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonGenerator; -import com.yahoo.jrt.Request; -import com.yahoo.jrt.StringValue; -import com.yahoo.jrt.Value; -import com.yahoo.slime.Slime; -import com.yahoo.text.Utf8Array; -import com.yahoo.vespa.config.ConfigKey; -import com.yahoo.vespa.config.ErrorCode; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.Optional; -import java.util.logging.Logger; - -/** - * Base class for new generation of config requests based on {@link Slime}. Allows for some customization of - * payload encoding and decoding, as well as adding extra request/response fields. Used by both V2 and V3 - * config protocol. - * - * @author Ulf Lilleengen - */ -abstract class SlimeServerConfigRequest implements JRTServerConfigRequest { - - protected static final Logger log = Logger.getLogger(SlimeServerConfigRequest.class.getName()); - - private static final JsonFactory jsonFactory = new JsonFactory(); - - private final SlimeRequestData requestData; - - // Response values - private boolean isDelayed = false; - private Trace requestTrace = null; - protected final Request request; - - protected SlimeServerConfigRequest(Request request) { - this.requestData = new SlimeRequestData(request); - this.request = request; - } - - protected static JsonGenerator createJsonGenerator(ByteArrayOutputStream byteArrayOutputStream) throws IOException { - return jsonFactory.createGenerator(byteArrayOutputStream); - } - - @Override - public ConfigKey<?> getConfigKey() { - return requestData.getConfigKey(); - } - - @Override - public DefContent getDefContent() { - return getSchema(); - } - - @Override - public boolean noCache() { - return false; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("request='").append(getConfigKey()) - .append(",").append(getClientHostName()) - .append(",").append(getRequestConfigMd5()) - .append(",").append(getRequestGeneration()) - .append(",").append(getTimeout()).append("'\n"); - return sb.toString(); - } - - @Override - public Payload payloadFromResponse(ConfigResponse response) { - return Payload.from(response.getPayload(), response.getCompressionInfo()); - } - - private DefContent getSchema() { - return requestData.getSchema(); - } - - @Override - public String getClientHostName() { - return requestData.getClientHostName(); - } - - public Trace getRequestTrace() { - if (requestTrace == null) { - requestTrace = requestData.getRequestTrace(); - } - return requestTrace; - } - - @Override - public Request getRequest() { - return request; - } - - @Override - public boolean validateParameters() { - int errorCode = RequestValidation.validateRequest(this); - if (errorCode != 0) { - addErrorResponse(errorCode); - } - return (errorCode == 0); - } - - @Override - public String getRequestConfigMd5() { - return requestData.getRequestConfigMd5(); - } - - private void addErrorResponse(int errorCode) { - addErrorResponse(errorCode, ErrorCode.getName(errorCode)); - } - - @Override - public void setDelayedResponse(boolean delayedResponse) { - this.isDelayed = delayedResponse; - } - - @Override - public void addErrorResponse(int errorCode, String name) { - ByteArrayOutputStream byteArrayOutputStream = new NoCopyByteArrayOutputStream(); - try { - JsonGenerator jsonWriter = jsonFactory.createGenerator(byteArrayOutputStream); - jsonWriter.writeStartObject(); - addCommonReturnValues(jsonWriter); - jsonWriter.writeEndObject(); - jsonWriter.close(); - } catch (IOException e) { - throw new IllegalArgumentException("Could not add error response for " + this); - } - request.setError(errorCode, name); - request.returnValues().add(createResponseValue(byteArrayOutputStream)); - } - - protected static Value createResponseValue(ByteArrayOutputStream byteArrayOutputStream) { - return new StringValue(new Utf8Array(byteArrayOutputStream.toByteArray())); - } - - protected void addCommonReturnValues(JsonGenerator jsonGenerator) throws IOException { - ConfigKey<?> key = requestData.getConfigKey(); - setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_VERSION, getProtocolVersion()); - setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_DEF_NAME, key.getName()); - setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_DEF_NAMESPACE, key.getNamespace()); - setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_DEF_MD5, key.getMd5()); - setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIGID, key.getConfigId()); - setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CLIENT_HOSTNAME, requestData.getClientHostName()); - jsonGenerator.writeFieldName(SlimeResponseData.RESPONSE_TRACE); - jsonGenerator.writeRawValue(getRequestTrace().toString(true)); - } - - protected static void setResponseField(JsonGenerator jsonGenerator, String fieldName, String value) throws IOException { - jsonGenerator.writeStringField(fieldName, value); - } - - protected static void setResponseField(JsonGenerator jsonGenerator, String fieldName, long value) throws IOException { - jsonGenerator.writeNumberField(fieldName, value); - } - - protected static void setResponseField(JsonGenerator jsonGenerator, String fieldName, boolean value) throws IOException { - jsonGenerator.writeBooleanField(fieldName, value); - } - - @Override - public long getRequestGeneration() { - return requestData.getRequestGeneration(); - } - - @Override - public boolean isDelayedResponse() { - return isDelayed; - } - - @Override - public int errorCode() { - return request.errorCode(); - } - - @Override - public String errorMessage() { - return request.errorMessage(); - } - - @Override - public String getShortDescription() { - return toString(); - } - - protected CompressionType getCompressionType() { - return requestData.getCompressionType(); - } - - @Override - public long getTimeout() { - return requestData.getTimeout(); - } - - @Override - public Optional<VespaVersion> getVespaVersion() { - return requestData.getVespaVersion(); - } - -} |