From f89df6825a64b1007c7c4cba9360378e93508a00 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 7 Aug 2023 08:53:54 +0200 Subject: [PATCH] Use enum for no-op `PauseDetectorWrapper` #2474 --- .../DefaultCommandLatencyCollector.java | 42 ++++++++++--------- .../lettuce-core/native-image.properties | 2 +- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/main/java/io/lettuce/core/metrics/DefaultCommandLatencyCollector.java b/src/main/java/io/lettuce/core/metrics/DefaultCommandLatencyCollector.java index 646e3d5004..bcb605aacd 100644 --- a/src/main/java/io/lettuce/core/metrics/DefaultCommandLatencyCollector.java +++ b/src/main/java/io/lettuce/core/metrics/DefaultCommandLatencyCollector.java @@ -357,29 +357,33 @@ public void shutdown() { } /** - * Wrapper for initialization of {@link PauseDetector}. Encapsulates absence of LatencyUtils. + * No-op implementation of {@link PauseDetectorWrapper}. */ - interface PauseDetectorWrapper { + enum NoOpPauseDetectorWrapper implements PauseDetectorWrapper { - /** - * No-operation {@link PauseDetectorWrapper} implementation. - */ - PauseDetectorWrapper NO_OP = new PauseDetectorWrapper() { + INSTANCE; - @Override - public void release() { - } + @Override + public void retain() { - @Override - public void retain() { - } + } - @Override - public Object getPauseDetector() { - return NoPauseDetector.INSTANCE; - } + @Override + public void release() { - }; + } + + @Override + public Object getPauseDetector() { + return NoPauseDetector.INSTANCE; + } + + } + + /** + * Wrapper for initialization of {@link PauseDetector}. Encapsulates absence of LatencyUtils. + */ + interface PauseDetectorWrapper { static PauseDetectorWrapper create() { @@ -387,11 +391,11 @@ static PauseDetectorWrapper create() { return new DefaultPauseDetectorWrapper(); } - return NO_OP; + return NoOpPauseDetectorWrapper.INSTANCE; } static PauseDetectorWrapper noop() { - return NO_OP; + return NoOpPauseDetectorWrapper.INSTANCE; } /** diff --git a/src/main/resources/META-INF/native-image/io.lettuce/lettuce-core/native-image.properties b/src/main/resources/META-INF/native-image/io.lettuce/lettuce-core/native-image.properties index ec17e925dd..1161a1fda4 100644 --- a/src/main/resources/META-INF/native-image/io.lettuce/lettuce-core/native-image.properties +++ b/src/main/resources/META-INF/native-image/io.lettuce/lettuce-core/native-image.properties @@ -1 +1 @@ -Args=--initialize-at-build-time=io.lettuce.core.metrics.DefaultCommandLatencyCollector,io.lettuce.core.internal.LettuceClassUtils +Args=--initialize-at-build-time=io.lettuce.core.metrics.DefaultCommandLatencyCollector,io.lettuce.core.metrics.DefaultCommandLatencyCollector$NoOpPauseDetectorWrapper,io.lettuce.core.internal.LettuceClassUtils