From 13d74f29cfacca765205c6eb0bee55d040d9e6b5 Mon Sep 17 00:00:00 2001 From: Andreas Eriksen Date: Thu, 16 Jun 2022 16:46:12 +0200 Subject: text blocks make reading and editing a lot easier --- .../certificate/EndpointCertificatesTest.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificatesTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificatesTest.java index df31883b1d5..59aafe73fc1 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificatesTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/certificate/EndpointCertificatesTest.java @@ -211,14 +211,17 @@ public class EndpointCertificatesTest { @Test public void includes_zones_in_deployment_spec_when_deploying_to_staging() { DeploymentSpec deploymentSpec = new DeploymentSpecXmlReader(true).read( - "\n" + - " \n" + - " \n" + - " aws-us-east-1a\n" + - " ap-northeast-1\n" + - " \n" + - " \n" + - "\n"); + """ + + + + aws-us-east-1a + ap-northeast-1 + + + + """ + ); ZoneId testZone = tester.zoneRegistry().zones().all().in(Environment.staging).zones().stream().findFirst().orElseThrow().getId(); Optional endpointCertificateMetadata = endpointCertificates.getMetadata(testInstance, testZone, deploymentSpec); -- cgit v1.2.3 From 63aaa95c026bd4b0ad2f61891446d0cf9b75b1af Mon Sep 17 00:00:00 2001 From: Andreas Eriksen Date: Thu, 16 Jun 2022 16:53:03 +0200 Subject: records remove a lot of boilerplate This takes away a lot of very boring and failure prone code. (imagine forgetting to add a new field to equals or hashcode) while still allowing you to extend the class as usual later. --- .../certificates/EndpointCertificateDetails.java | 237 ++------------------- 1 file changed, 22 insertions(+), 215 deletions(-) diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateDetails.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateDetails.java index bf1c9333e84..3f5514dce8c 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateDetails.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/certificates/EndpointCertificateDetails.java @@ -2,223 +2,30 @@ package com.yahoo.vespa.hosted.controller.api.integration.certificates; import java.util.List; -import java.util.Objects; -import java.util.StringJoiner; /** - * This class is used when requesting additional metadata about an application's endpoint certificate from the provider. + * This record is used when requesting additional metadata about an application's endpoint certificate from the provider. * * @author andreer */ -public class EndpointCertificateDetails { - - private final String request_id; - private final String requestor; - private final String status; - private final String ticket_id; - private final String athenz_domain; - private final List dnsnames; - private final String duration_sec; - private final String expiry; - private final String private_key_kgname; - private final String private_key_keyname; - private final String private_key_version; - private final String cert_key_kgname; - private final String cert_key_keyname; - private final String cert_key_version; - private final String create_time; - private final boolean expiry_protection; - private final String public_key_algo; - private final String issuer; - private final String serial; - - public EndpointCertificateDetails(String request_id, - String requestor, - String status, - String ticket_id, - String athenz_domain, - List dnsnames, - String duration_sec, - String expiry, - String private_key_kgname, - String private_key_keyname, - String private_key_version, - String cert_key_kgname, - String cert_key_keyname, - String cert_key_version, - String create_time, - boolean expiry_protection, - String public_key_algo, - String issuer, - String serial) { - this.request_id = request_id; - this.requestor = requestor; - this.status = status; - this.ticket_id = ticket_id; - this.athenz_domain = athenz_domain; - this.dnsnames = dnsnames; - this.duration_sec = duration_sec; - this.expiry = expiry; - this.private_key_kgname = private_key_kgname; - this.private_key_keyname = private_key_keyname; - this.private_key_version = private_key_version; - this.cert_key_kgname = cert_key_kgname; - this.cert_key_keyname = cert_key_keyname; - this.cert_key_version = cert_key_version; - this.create_time = create_time; - this.expiry_protection = expiry_protection; - this.public_key_algo = public_key_algo; - this.issuer = issuer; - this.serial = serial; - } - - public String request_id() { - return request_id; - } - - public String requestor() { - return requestor; - } - - public String status() { - return status; - } - - public String ticket_id() { - return ticket_id; - } - - public String athenz_domain() { - return athenz_domain; - } - - public List dnsnames() { - return dnsnames; - } - - public String duration_sec() { - return duration_sec; - } - - public String expiry() { - return expiry; - } - - public String private_key_kgname() { - return private_key_kgname; - } - - public String private_key_keyname() { - return private_key_keyname; - } - - public String private_key_version() { - return private_key_version; - } - - public String cert_key_kgname() { - return cert_key_kgname; - } - - public String cert_key_keyname() { - return cert_key_keyname; - } - - public String cert_key_version() { - return cert_key_version; - } - - public String create_time() { - return create_time; - } - - public boolean expiry_protection() { - return expiry_protection; - } - - public String public_key_algo() { - return public_key_algo; - } - - public String issuer() { - return issuer; - } - - public String serial() { - return serial; - } - - @Override - public String toString() { - return new StringJoiner(", ", EndpointCertificateDetails.class.getSimpleName() + "[", "]") - .add("request_id='" + request_id + "'") - .add("requestor='" + requestor + "'") - .add("status='" + status + "'") - .add("ticket_id='" + ticket_id + "'") - .add("athenz_domain='" + athenz_domain + "'") - .add("dnsnames=" + dnsnames) - .add("duration_sec='" + duration_sec + "'") - .add("expiry='" + expiry + "'") - .add("private_key_kgname='" + private_key_kgname + "'") - .add("private_key_keyname='" + private_key_keyname + "'") - .add("private_key_version='" + private_key_version + "'") - .add("cert_key_kgname='" + cert_key_kgname + "'") - .add("cert_key_keyname='" + cert_key_keyname + "'") - .add("cert_key_version='" + cert_key_version + "'") - .add("create_time='" + create_time + "'") - .add("expiry_protection=" + expiry_protection) - .add("public_key_algo='" + public_key_algo + "'") - .add("issuer='" + issuer + "'") - .add("serial='" + serial + "'") - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - EndpointCertificateDetails that = (EndpointCertificateDetails) o; - return expiry_protection == that.expiry_protection - && request_id.equals(that.request_id) - && requestor.equals(that.requestor) - && status.equals(that.status) - && ticket_id.equals(that.ticket_id) - && athenz_domain.equals(that.athenz_domain) - && dnsnames.equals(that.dnsnames) - && duration_sec.equals(that.duration_sec) - && expiry.equals(that.expiry) - && private_key_kgname.equals(that.private_key_kgname) - && private_key_keyname.equals(that.private_key_keyname) - && private_key_version.equals(that.private_key_version) - && cert_key_kgname.equals(that.cert_key_kgname) - && cert_key_keyname.equals(that.cert_key_keyname) - && cert_key_version.equals(that.cert_key_version) - && create_time.equals(that.create_time) - && public_key_algo.equals(that.public_key_algo) - && issuer.equals(that.issuer) - && serial.equals(that.serial); - } - - @Override - public int hashCode() { - return Objects.hash(request_id, - requestor, - status, - ticket_id, - athenz_domain, - dnsnames, - duration_sec, - expiry, - private_key_kgname, - private_key_keyname, - private_key_version, - cert_key_kgname, - cert_key_keyname, - cert_key_version, - create_time, - expiry_protection, - public_key_algo, - issuer, - serial); - } -} +public record EndpointCertificateDetails( + String request_id, + String requestor, + String status, + String ticket_id, + String athenz_domain, + List dnsnames, + String duration_sec, + String expiry, + String private_key_kgname, + String private_key_keyname, + String private_key_version, + String cert_key_kgname, + String cert_key_keyname, + String cert_key_version, + String create_time, + boolean expiry_protection, + String public_key_algo, + String issuer, + String serial +) { } \ No newline at end of file -- cgit v1.2.3 From 68f91dd5da8e5cdadedb15aaa6a46f41bbd5ffba Mon Sep 17 00:00:00 2001 From: Andreas Eriksen Date: Thu, 16 Jun 2022 17:28:23 +0200 Subject: pattern matching for instanceof reduces casting --- configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java | 3 +-- .../com/yahoo/searchlib/rankingexpression/transform/Simplifier.java | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java b/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java index d3a0a79c737..b08e41846e4 100644 --- a/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java +++ b/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java @@ -795,8 +795,7 @@ public class CppClassBuilder implements ClassBuilder { } else { w.write("ConfigParser::parseStruct<" + childType + ">(\"" + child.getName() + "\", __lines"); } - if (child instanceof LeafCNode && ((LeafCNode) child).getDefaultValue() != null) { - LeafCNode leaf = (LeafCNode) child; + if (child instanceof LeafCNode leaf && leaf.getDefaultValue() != null) { if (leaf.getDefaultValue().getValue() != null) { String defaultVal = getDefaultValue(leaf); if (leaf instanceof LeafCNode.EnumLeaf) { diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/Simplifier.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/Simplifier.java index b48303ae98b..c64f0eaa211 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/Simplifier.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/transform/Simplifier.java @@ -32,8 +32,8 @@ public class Simplifier extends ExpressionTransformer { node = transformChildren((CompositeNode) node, context); // depth first if (node instanceof IfNode) node = transformIf((IfNode) node); - if (node instanceof EmbracedNode && hasSingleUndividableChild((EmbracedNode)node)) - node = ((EmbracedNode)node).children().get(0); + if (node instanceof EmbracedNode e && hasSingleUndividableChild(e)) + node = e.children().get(0); if (node instanceof ArithmeticNode) node = transformArithmetic((ArithmeticNode) node); if (node instanceof NegativeNode) -- cgit v1.2.3 From eee9c1d977828805e0b3584828ad8c6356aa54c5 Mon Sep 17 00:00:00 2001 From: Andreas Eriksen Date: Thu, 16 Jun 2022 17:34:29 +0200 Subject: one of the most common stream operations gets simpler --- config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java b/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java index 6e63a1d9e68..1042400442b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java @@ -139,7 +139,7 @@ public class HostSystem extends AbstractConfigProducer { private Optional getExistingHost(HostSpec key) { List hosts = hostname2host.values().stream() .filter(resource -> resource.getHostname().equals(key.hostname())) - .collect(Collectors.toList()); + .toList(); if (hosts.isEmpty()) { return Optional.empty(); } else { -- cgit v1.2.3 From 8d1a3050854dd98ab6815b90e0c3083b628ec9bf Mon Sep 17 00:00:00 2001 From: Andreas Eriksen Date: Thu, 16 Jun 2022 17:52:57 +0200 Subject: switch expressions save lines, and keywords --- .../config/protocol/SlimeTraceDeserializer.java | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceDeserializer.java b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceDeserializer.java index c5ce01f4e2a..6047c493505 100644 --- a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceDeserializer.java +++ b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeTraceDeserializer.java @@ -39,19 +39,13 @@ public class SlimeTraceDeserializer { } private static Object decodePayload(Inspector entry) { - switch (entry.type()) { - case STRING: - return entry.asString(); - case LONG: - return entry.asLong(); - case BOOL: - return entry.asBool(); - case DOUBLE: - return entry.asDouble(); - case DATA: - return entry.asData(); - default: - return null; - } + return switch (entry.type()) { + case STRING -> entry.asString(); + case LONG -> entry.asLong(); + case BOOL -> entry.asBool(); + case DOUBLE -> entry.asDouble(); + case DATA -> entry.asData(); + default -> null; + }; } } -- cgit v1.2.3 From 9c292f614b7533e7c74b86f5aa7630e5523ec9e8 Mon Sep 17 00:00:00 2001 From: Andreas Eriksen Date: Thu, 16 Jun 2022 19:13:15 +0200 Subject: String::formatted saves 5 bytes --- .../main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java b/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java index 52f27046640..1f92bed5e75 100644 --- a/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java +++ b/document/src/main/java/com/yahoo/document/json/DocumentUpdateJsonSerializer.java @@ -239,7 +239,7 @@ public class DocumentUpdateJsonSerializer { operationKey = "decrement"; break; default: - throw new RuntimeException(String.format("Unrecognized arithmetic operator '%s'", operator.name)); + throw new RuntimeException("Unrecognized arithmetic operator '%s'".formatted(operator.name)); } wrapIOException(() -> generator.writeFieldName(operationKey)); -- cgit v1.2.3 From 1cc350883d80872a67cb6d9e5ff549d5c00e969e Mon Sep 17 00:00:00 2001 From: Andreas Eriksen Date: Mon, 20 Jun 2022 11:02:20 +0200 Subject: saves an import too --- .../yahoo/searchlib/aggregation/hll/HyperLogLogPrecisionBenchmark.java | 1 + 1 file changed, 1 insertion(+) diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogPrecisionBenchmark.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogPrecisionBenchmark.java index cd283d31931..b55396151f4 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogPrecisionBenchmark.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/hll/HyperLogLogPrecisionBenchmark.java @@ -8,6 +8,7 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; import java.util.Random; +import java.util.stream.Collectors; /** * This benchmarks performs a series of unique counting tests to analyse the HyperLogLog accuracy. -- cgit v1.2.3