diff options
author | Harald Musum <musum@yahooinc.com> | 2021-10-14 16:40:06 +0200 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2021-10-14 16:40:06 +0200 |
commit | 239b2535a777dc034db4bf91daa3c34a2e39afcb (patch) | |
tree | 567f992a04706e0c5351522006f96f82fd6bb529 /config/src/main/java/com | |
parent | 3e52c48f560623c73bbdc3a02099657eea0cf958 (diff) |
Cleanup of addOkResponse()
Throw exception if payload is null
Extract some methods and simplify
Diffstat (limited to 'config/src/main/java/com')
-rw-r--r-- | config/src/main/java/com/yahoo/vespa/config/protocol/JRTServerConfigRequestV3.java | 50 |
1 files changed, 29 insertions, 21 deletions
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 e6c9bc2175b..e5a665f0973 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 @@ -70,26 +70,23 @@ public class JRTServerConfigRequestV3 implements JRTServerConfigRequest { } @Override - public void addOkResponse(Payload payload, long generation, boolean applyOnRestart, PayloadChecksums payloadChecksums) { + public void addOkResponse(Payload payload, long generation, boolean applyOnRestart, PayloadChecksums checksums) { this.applyOnRestart = applyOnRestart; Payload responsePayload = payload.withCompression(getCompressionType()); - ByteArrayOutputStream byteArrayOutputStream = new NoCopyByteArrayOutputStream(4096); + if (responsePayload == null) + throw new RuntimeException("Payload is null for ' " + this + ", not able to create response"); + + ByteArrayOutputStream outputStream = new NoCopyByteArrayOutputStream(4096); try { - JsonGenerator jsonGenerator = createJsonGenerator(byteArrayOutputStream); + JsonGenerator jsonGenerator = createJsonGenerator(outputStream); jsonGenerator.writeStartObject(); + addCommonReturnValues(jsonGenerator); - if (payloadChecksums.getForType(MD5) != null) - setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_MD5, payloadChecksums.getForType(MD5).asString()); - if (payloadChecksums.getForType(XXHASH64) != null) - setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_XXHASH64, payloadChecksums.getForType(XXHASH64).asString()); + addPayloadCheckSums(jsonGenerator, checksums); setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_GENERATION, generation); setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_APPLY_ON_RESTART, applyOnRestart); jsonGenerator.writeObjectFieldStart(SlimeResponseData.RESPONSE_COMPRESSION_INFO); - if (responsePayload == null) { - throw new RuntimeException("Payload is null for ' " + this + ", not able to create response"); - } - CompressionInfo compressionInfo = responsePayload.getCompressionInfo(); - compressionInfo.serialize(jsonGenerator); + responsePayload.getCompressionInfo().serialize(jsonGenerator); jsonGenerator.writeEndObject(); jsonGenerator.writeEndObject(); @@ -97,15 +94,7 @@ public class JRTServerConfigRequestV3 implements JRTServerConfigRequest { } catch (IOException e) { throw new IllegalArgumentException("Could not add OK response for " + this); } - request.returnValues().add(createResponseValue(byteArrayOutputStream)); - ByteBuffer buf = responsePayload.getData().wrap(); - if (buf.hasArray() && buf.remaining() == buf.array().length) { - request.returnValues().add(new DataValue(buf.array())); - } else { - byte[] dst = new byte[buf.remaining()]; - buf.get(dst); - request.returnValues().add(new DataValue(dst)); - } + addPayload(responsePayload, outputStream); } @Override @@ -228,6 +217,25 @@ public class JRTServerConfigRequestV3 implements JRTServerConfigRequest { jsonGenerator.writeRawValue(getRequestTrace().toString(true)); } + private void addPayloadCheckSums(JsonGenerator jsonGenerator, PayloadChecksums checksums) throws IOException { + if (checksums.getForType(MD5) != null) + setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_MD5, checksums.getForType(MD5).asString()); + if (checksums.getForType(XXHASH64) != null) + setResponseField(jsonGenerator, SlimeResponseData.RESPONSE_CONFIG_XXHASH64, checksums.getForType(XXHASH64).asString()); + } + + private void addPayload(Payload responsePayload, ByteArrayOutputStream byteArrayOutputStream) { + request.returnValues().add(createResponseValue(byteArrayOutputStream)); + ByteBuffer buf = responsePayload.getData().wrap(); + if (buf.hasArray() && buf.remaining() == buf.array().length) { + request.returnValues().add(new DataValue(buf.array())); + } else { + byte[] dst = new byte[buf.remaining()]; + buf.get(dst); + request.returnValues().add(new DataValue(dst)); + } + } + @Override public long getRequestGeneration() { return requestData.getRequestGeneration(); |