diff --git a/util/src/main/java/io/kubernetes/client/informer/EventType.java b/util/src/main/java/io/kubernetes/client/informer/EventType.java index efe91e0f57..d3b15100a3 100644 --- a/util/src/main/java/io/kubernetes/client/informer/EventType.java +++ b/util/src/main/java/io/kubernetes/client/informer/EventType.java @@ -12,6 +12,12 @@ */ package io.kubernetes.client.informer; +import java.util.Arrays; +import java.util.Map; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + public enum EventType { ADDED, @@ -23,12 +29,17 @@ public enum EventType { ERROR; + private static final Map TYPES = + Arrays.stream(EventType.values()).collect(Collectors.toMap(Enum::name, Function.identity())); + /** - * getByType returns the corresponding EventType by type. + * returns the corresponding EventType by type. * * @param type specific code * @return corresponding EventType + * @deprecated will be removed in a future release. use : findByType */ + @Deprecated public static EventType getByType(String type) { if (type != null && type.length() > 0) { for (EventType eventType : EventType.values()) { @@ -39,4 +50,14 @@ public static EventType getByType(String type) { } return null; } + + /** + * returns the corresponding EventType by type, wrapped in an {@link Optional} + * + * @param type specific code + * @return an Optional describing the EventType + */ + public static Optional findByType(String type) { + return Optional.ofNullable(TYPES.get(String.valueOf(type).toUpperCase())); + } } diff --git a/util/src/main/java/io/kubernetes/client/informer/cache/ReflectorRunnable.java b/util/src/main/java/io/kubernetes/client/informer/cache/ReflectorRunnable.java index d28afdbea6..743c5df0ea 100644 --- a/util/src/main/java/io/kubernetes/client/informer/cache/ReflectorRunnable.java +++ b/util/src/main/java/io/kubernetes/client/informer/cache/ReflectorRunnable.java @@ -25,6 +25,7 @@ import java.net.ConnectException; import java.time.Duration; import java.util.List; +import java.util.Optional; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.BiConsumer; import org.slf4j.Logger; @@ -186,12 +187,12 @@ private void watchHandler(Watchable watch) { while (watch.hasNext()) { io.kubernetes.client.util.Watch.Response item = watch.next(); - EventType eventType = EventType.getByType(item.type); - if (eventType == null) { + Optional eventType = EventType.findByType(item.type); + if (!eventType.isPresent()) { log.error("unrecognized event {}", item); continue; } - if (eventType == EventType.ERROR) { + if (eventType.get() == EventType.ERROR) { String errorMessage = String.format("got ERROR event and its status: %s", item.status.toString()); log.error(errorMessage); @@ -203,7 +204,7 @@ private void watchHandler(Watchable watch) { V1ObjectMeta meta = obj.getMetadata(); String newResourceVersion = meta.getResourceVersion(); - switch (eventType) { + switch (eventType.get()) { case ADDED: store.add(obj); break;