From d0c2aafaf19f9509e6a090c2cf0ffb3bf9bc5b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20K=C3=B6rber?= Date: Sat, 29 Apr 2023 15:15:22 +0200 Subject: [PATCH] Optimize collection handling --- .../org/shredzone/acme4j/Certificate.java | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/acme4j-client/src/main/java/org/shredzone/acme4j/Certificate.java b/acme4j-client/src/main/java/org/shredzone/acme4j/Certificate.java index c0629b5e..403acb18 100644 --- a/acme4j-client/src/main/java/org/shredzone/acme4j/Certificate.java +++ b/acme4j-client/src/main/java/org/shredzone/acme4j/Certificate.java @@ -14,7 +14,8 @@ package org.shredzone.acme4j; import static java.util.Collections.unmodifiableList; -import static java.util.stream.Collectors.toList; +import static java.util.Objects.requireNonNull; +import static java.util.stream.Collectors.toUnmodifiableList; import java.io.IOException; import java.io.Writer; @@ -22,8 +23,7 @@ import java.net.URL; import java.security.KeyPair; import java.security.cert.CertificateEncodingException; import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Collections; +import java.util.Collection; import java.util.List; import edu.umd.cs.findbugs.annotations.Nullable; @@ -46,8 +46,8 @@ public class Certificate extends AcmeResource { private static final long serialVersionUID = 7381527770159084201L; private static final Logger LOG = LoggerFactory.getLogger(Certificate.class); - private @Nullable ArrayList certChain; - private @Nullable ArrayList alternates; + private @Nullable List certChain; + private @Nullable Collection alternates; protected Certificate(Login login, URL certUrl) { super(login, certUrl); @@ -68,8 +68,8 @@ public class Certificate extends AcmeResource { LOG.debug("download"); try (var conn = getSession().connect()) { conn.sendCertificateRequest(getLocation(), getLogin()); - alternates = new ArrayList<>(conn.getLinks("alternate")); - certChain = new ArrayList<>(conn.readCertificates()); + alternates = conn.getLinks("alternate"); + certChain = conn.readCertificates(); } } } @@ -81,7 +81,7 @@ public class Certificate extends AcmeResource { */ public X509Certificate getCertificate() { lazyDownload(); - return certChain.get(0); + return requireNonNull(certChain).get(0); } /** @@ -93,7 +93,7 @@ public class Certificate extends AcmeResource { */ public List getCertificateChain() { lazyDownload(); - return unmodifiableList(certChain); + return unmodifiableList(requireNonNull(certChain)); } /** @@ -103,11 +103,7 @@ public class Certificate extends AcmeResource { */ public List getAlternates() { lazyDownload(); - if (alternates != null) { - return unmodifiableList(alternates); - } else { - return Collections.emptyList(); - } + return requireNonNull(alternates).stream().collect(toUnmodifiableList()); } /** @@ -120,7 +116,7 @@ public class Certificate extends AcmeResource { var login = getLogin(); return getAlternates().stream() .map(login::bindCertificate) - .collect(toList()); + .collect(toUnmodifiableList()); } /**