From 95b4797d64fc5717dbc4faef46607005d51c5dd1 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 31 May 2022 23:47:23 +0200 Subject: [PATCH] Modernize AutoCloseableEventExecutor Remove unneeded indirection through a class, so that we can eliminate a suppression. Change-Id: I52710d8a85a2081afe4b325d57acef70d434acce Signed-off-by: Robert Varga --- .../AutoCloseableEventExecutor.java | 46 ++++++------------- 1 file changed, 14 insertions(+), 32 deletions(-) diff --git a/opendaylight/config/netty-event-executor-config/src/main/java/org/opendaylight/controller/config/yang/netty/eventexecutor/AutoCloseableEventExecutor.java b/opendaylight/config/netty-event-executor-config/src/main/java/org/opendaylight/controller/config/yang/netty/eventexecutor/AutoCloseableEventExecutor.java index b12fc67609..a7b931be62 100644 --- a/opendaylight/config/netty-event-executor-config/src/main/java/org/opendaylight/controller/config/yang/netty/eventexecutor/AutoCloseableEventExecutor.java +++ b/opendaylight/config/netty-event-executor-config/src/main/java/org/opendaylight/controller/config/yang/netty/eventexecutor/AutoCloseableEventExecutor.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.config.yang.netty.eventexecutor; import com.google.common.reflect.AbstractInvocationHandler; import com.google.common.reflect.Reflection; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import io.netty.util.concurrent.EventExecutor; import io.netty.util.concurrent.GlobalEventExecutor; import io.netty.util.concurrent.ImmediateEventExecutor; @@ -17,43 +16,26 @@ import java.lang.reflect.Method; import java.util.concurrent.TimeUnit; public interface AutoCloseableEventExecutor extends EventExecutor, AutoCloseable { - static AutoCloseableEventExecutor globalEventExecutor() { - return CloseableEventExecutorMixin.createCloseableProxy(GlobalEventExecutor.INSTANCE); + return createCloseableProxy(GlobalEventExecutor.INSTANCE); } static AutoCloseableEventExecutor immediateEventExecutor() { - return CloseableEventExecutorMixin.createCloseableProxy(ImmediateEventExecutor.INSTANCE); + return createCloseableProxy(ImmediateEventExecutor.INSTANCE); } - class CloseableEventExecutorMixin implements AutoCloseable { - public static final int DEFAULT_SHUTDOWN_SECONDS = 1; - private final EventExecutor eventExecutor; - - public CloseableEventExecutorMixin(final EventExecutor eventExecutor) { - this.eventExecutor = eventExecutor; - } - - @Override - @SuppressFBWarnings(value = "UC_USELESS_VOID_METHOD", justification = "False positive") - public void close() { - eventExecutor.shutdownGracefully(0, DEFAULT_SHUTDOWN_SECONDS, TimeUnit.SECONDS); - } - - static AutoCloseableEventExecutor createCloseableProxy(final EventExecutor eventExecutor) { - final CloseableEventExecutorMixin closeableEventExecutor = new CloseableEventExecutorMixin(eventExecutor); - return Reflection.newProxy(AutoCloseableEventExecutor.class, new AbstractInvocationHandler() { - @Override - protected Object handleInvocation(final Object proxy, final Method method, final Object[] args) - throws Throwable { - if (method.getName().equals("close")) { - closeableEventExecutor.close(); - return null; - } else { - return method.invoke(closeableEventExecutor.eventExecutor, args); - } + private static AutoCloseableEventExecutor createCloseableProxy(final EventExecutor eventExecutor) { + return Reflection.newProxy(AutoCloseableEventExecutor.class, new AbstractInvocationHandler() { + @Override + protected Object handleInvocation(final Object proxy, final Method method, final Object[] args) + throws Throwable { + if (method.getName().equals("close")) { + eventExecutor.shutdownGracefully(0, 1, TimeUnit.SECONDS); + return null; + } else { + return method.invoke(eventExecutor, args); } - }); - } + } + }); } } -- 2.36.6