diff options
Diffstat (limited to 'security-utils/src/main/java/com/yahoo')
2 files changed, 11 insertions, 3 deletions
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsEntity.java b/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsEntity.java index 80ef06d9cac..be2027f1c7d 100644 --- a/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsEntity.java +++ b/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsEntity.java @@ -2,11 +2,14 @@ package com.yahoo.security.tls.json; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.ArrayList; import java.util.List; +import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY; + /** * Jackson bindings for transport security options * @@ -16,7 +19,7 @@ import java.util.List; class TransportSecurityOptionsEntity { @JsonProperty("files") Files files; - @JsonProperty("authorized-peers") List<AuthorizedPeer> authorizedPeers = new ArrayList<>(); + @JsonProperty("authorized-peers") @JsonInclude(NON_EMPTY) List<AuthorizedPeer> authorizedPeers; static class Files { @JsonProperty("private-key") String privateKeyFile; diff --git a/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializer.java b/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializer.java index 2e2148628e8..8b7c860fd85 100644 --- a/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializer.java +++ b/security-utils/src/main/java/com/yahoo/security/tls/json/TransportSecurityOptionsJsonSerializer.java @@ -18,6 +18,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.io.UncheckedIOException; import java.nio.file.Paths; +import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -42,7 +43,7 @@ public class TransportSecurityOptionsJsonSerializer { public void serialize(OutputStream out, TransportSecurityOptions options) { try { - mapper.writeValue(out, toTransportSecurityOptionsEntity(options)); + mapper.writerWithDefaultPrettyPrinter().writeValue(out, toTransportSecurityOptionsEntity(options)); } catch (IOException e) { throw new UncheckedIOException(e); } @@ -62,7 +63,10 @@ public class TransportSecurityOptionsJsonSerializer { } } List<AuthorizedPeer> authorizedPeersEntity = entity.authorizedPeers; - if (authorizedPeersEntity.size() > 0) { + if (authorizedPeersEntity != null) { + if (authorizedPeersEntity.size() == 0) { + throw new IllegalArgumentException("'authorized-peers' cannot be empty"); + } builder.withAuthorizedPeers(new AuthorizedPeers(toPeerPolicies(authorizedPeersEntity))); } return builder.build(); @@ -124,6 +128,7 @@ public class TransportSecurityOptionsJsonSerializer { options.getCertificatesFile().ifPresent(value -> entity.files.certificatesFile = value.toString()); options.getPrivateKeyFile().ifPresent(value -> entity.files.privateKeyFile = value.toString()); options.getAuthorizedPeers().ifPresent( authorizedPeers -> { + entity.authorizedPeers = new ArrayList<>(); for (PeerPolicy peerPolicy : authorizedPeers.peerPolicies()) { AuthorizedPeer authorizedPeer = new AuthorizedPeer(); authorizedPeer.name = peerPolicy.policyName(); |