diff options
Diffstat (limited to 'security-utils/src/main/java/com/yahoo/security/tls/AuthorizedPeers.java')
-rw-r--r-- | security-utils/src/main/java/com/yahoo/security/tls/AuthorizedPeers.java | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/AuthorizedPeers.java b/security-utils/src/main/java/com/yahoo/security/tls/AuthorizedPeers.java new file mode 100644 index 00000000000..9631ab32334 --- /dev/null +++ b/security-utils/src/main/java/com/yahoo/security/tls/AuthorizedPeers.java @@ -0,0 +1,32 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.security.tls; + +import java.util.Set; + +/** + * @author bjorncs + */ +public record AuthorizedPeers(Set<PeerPolicy> peerPolicies) { + + private static final AuthorizedPeers EMPTY = new AuthorizedPeers(Set.of()); + + public AuthorizedPeers { + peerPolicies = verifyPeerPolicies(peerPolicies); + } + + public static AuthorizedPeers empty() { return EMPTY; } + + private static Set<PeerPolicy> verifyPeerPolicies(Set<PeerPolicy> peerPolicies) { + long distinctNames = peerPolicies.stream() + .map(PeerPolicy::policyName) + .distinct() + .count(); + if (distinctNames != peerPolicies.size()) { + throw new IllegalArgumentException("'authorized-peers' contains entries with duplicate names"); + } + return Set.copyOf(peerPolicies); + } + + public boolean isEmpty() { return peerPolicies.isEmpty(); } + +} |