diff options
author | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2023-02-17 11:37:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-17 11:37:15 +0100 |
commit | 91ff6d377ccc5bc0cfe04eaaa35be1d4a720a7bf (patch) | |
tree | 7ab8cee383dcabbf875645051234c29a983aa460 | |
parent | 18c75f2361a7d38bef6fc290a4f70f39b6cc71ce (diff) | |
parent | c4f7cb98b887b1d5e1dc3796339402ba974ddc93 (diff) |
Merge pull request #26081 from vespa-engine/bjorncs/capabilities
Warn instead of fail for unknown capability (set)
-rw-r--r-- | security-utils/src/main/java/com/yahoo/security/tls/Capability.java | 8 | ||||
-rw-r--r-- | security-utils/src/main/java/com/yahoo/security/tls/CapabilitySet.java | 11 |
2 files changed, 10 insertions, 9 deletions
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/Capability.java b/security-utils/src/main/java/com/yahoo/security/tls/Capability.java index e60598a9dc2..6a6471aa8ac 100644 --- a/security-utils/src/main/java/com/yahoo/security/tls/Capability.java +++ b/security-utils/src/main/java/com/yahoo/security/tls/Capability.java @@ -2,6 +2,7 @@ package com.yahoo.security.tls; import java.util.Arrays; +import java.util.Optional; /** * @author bjorncs @@ -48,11 +49,6 @@ public enum Capability implements ToCapabilitySet { @Override public CapabilitySet toCapabilitySet() { return CapabilitySet.of(this); } - public static Capability fromName(String name) { - return Arrays.stream(values()) - .filter(c -> c.name.equals(name)) - .findAny().orElseThrow(() -> - new IllegalArgumentException("Cannot find predefined capability set with name '" + name + "'")); - } + public static Optional<Capability> fromName(String n) { return Arrays.stream(values()).filter(c -> c.name.equals(n)).findAny(); } } diff --git a/security-utils/src/main/java/com/yahoo/security/tls/CapabilitySet.java b/security-utils/src/main/java/com/yahoo/security/tls/CapabilitySet.java index b4674e2ac38..3d8d5ced6d6 100644 --- a/security-utils/src/main/java/com/yahoo/security/tls/CapabilitySet.java +++ b/security-utils/src/main/java/com/yahoo/security/tls/CapabilitySet.java @@ -12,6 +12,7 @@ import java.util.Objects; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; +import java.util.logging.Logger; import java.util.stream.Collectors; /** @@ -19,6 +20,8 @@ import java.util.stream.Collectors; */ public class CapabilitySet implements ToCapabilitySet { + private static final Logger log = Logger.getLogger(CapabilitySet.class.getName()); + private static final Map<String, CapabilitySet> PREDEFINED = new HashMap<>(); @@ -71,9 +74,11 @@ public class CapabilitySet implements ToCapabilitySet { public static CapabilitySet fromNames(Collection<String> names) { EnumSet<Capability> caps = EnumSet.noneOf(Capability.class); for (String name : names) { - var predefined = PREDEFINED.get(name); - if (predefined != null) caps.addAll(predefined.caps); - else caps.add(Capability.fromName(name)); + var predefinedSet = PREDEFINED.get(name); + var capability = Capability.fromName(name).orElse(null); + if (capability != null) caps.add(capability); + else if (predefinedSet != null) caps.addAll(predefinedSet.caps); + else log.warning("Cannot find capability or capability set with name '%s'".formatted(name)); } return new CapabilitySet(caps); } |