Bump odlparent to 6.0.0
[controller.git] / opendaylight / config / netty-event-executor-config / src / main / java / org / opendaylight / controller / config / yang / netty / eventexecutor / AutoCloseableEventExecutor.java
index 69ea51f3a50eb5f5c762054e0988bf2cb6ee8fbf..b12fc67609af8d10095475d2d6ac449f735294b5 100644 (file)
@@ -9,44 +9,51 @@ 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;
 import java.lang.reflect.Method;
 import java.util.concurrent.TimeUnit;
 
 public interface AutoCloseableEventExecutor extends EventExecutor, AutoCloseable {
 
+    static AutoCloseableEventExecutor globalEventExecutor() {
+        return CloseableEventExecutorMixin.createCloseableProxy(GlobalEventExecutor.INSTANCE);
+    }
+
+    static AutoCloseableEventExecutor immediateEventExecutor() {
+        return CloseableEventExecutorMixin.createCloseableProxy(ImmediateEventExecutor.INSTANCE);
+    }
 
-    public static class CloseableEventExecutorMixin implements AutoCloseable {
+    class CloseableEventExecutorMixin implements AutoCloseable {
         public static final int DEFAULT_SHUTDOWN_SECONDS = 1;
         private final EventExecutor eventExecutor;
 
-        public CloseableEventExecutorMixin(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);
         }
 
-
-        public static AutoCloseable createCloseableProxy(final EventExecutor eventExecutor) {
-            final CloseableEventExecutorMixin closeableGlobalEventExecutorMixin =
-                    new CloseableEventExecutorMixin(eventExecutor);
+        static AutoCloseableEventExecutor createCloseableProxy(final EventExecutor eventExecutor) {
+            final CloseableEventExecutorMixin closeableEventExecutor = new CloseableEventExecutorMixin(eventExecutor);
             return Reflection.newProxy(AutoCloseableEventExecutor.class, new AbstractInvocationHandler() {
                 @Override
-                protected Object handleInvocation(Object proxy, Method method, Object[] args) throws Throwable {
+                protected Object handleInvocation(final Object proxy, final Method method, final Object[] args)
+                        throws Throwable {
                     if (method.getName().equals("close")) {
-                        closeableGlobalEventExecutorMixin.close();
+                        closeableEventExecutor.close();
                         return null;
                     } else {
-                        return method.invoke(eventExecutor, args);
+                        return method.invoke(closeableEventExecutor.eventExecutor, args);
                     }
                 }
             });
         }
-
-
     }
-}
\ No newline at end of file
+}