X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfig%2Fnetty-event-executor-config%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Fnetty%2Feventexecutor%2FAutoCloseableEventExecutor.java;h=a7b931be62589f003c08112493a01075477a5a08;hb=refs%2Fchanges%2F95%2F101395%2F3;hp=d4e58db36a1b98d1c0cc7ab9f91f85591911be46;hpb=f9125372a33e633d76b6afeb94c98dc72de77106;p=controller.git 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 d4e58db36a..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 @@ -16,54 +16,26 @@ import java.lang.reflect.Method; import java.util.concurrent.TimeUnit; public interface AutoCloseableEventExecutor extends EventExecutor, AutoCloseable { + static AutoCloseableEventExecutor globalEventExecutor() { + return createCloseableProxy(GlobalEventExecutor.INSTANCE); + } + static AutoCloseableEventExecutor immediateEventExecutor() { + 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 - public void close() throws Exception { - eventExecutor.shutdownGracefully(0, DEFAULT_SHUTDOWN_SECONDS, TimeUnit.SECONDS); - } - - - private static AutoCloseableEventExecutor createCloseableProxy( - final CloseableEventExecutorMixin closeableEventExecutorMixin) { - 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")) { - closeableEventExecutorMixin.close(); - return null; - } else { - return method.invoke(closeableEventExecutorMixin.eventExecutor, args); - } - } - }); - } - - public static AutoCloseableEventExecutor globalEventExecutor() { - return createCloseableProxy(new CloseableEventExecutorMixin(GlobalEventExecutor.INSTANCE)); - } - - public static AutoCloseableEventExecutor immediateEventExecutor() { - return createCloseableProxy(new CloseableEventExecutorMixin(ImmediateEventExecutor.INSTANCE)); - } - - public static AutoCloseableEventExecutor forwardingEventExecutor(final EventExecutor eventExecutor, - final AutoCloseable closeable) { - return createCloseableProxy(new CloseableEventExecutorMixin(eventExecutor) { - @Override - public void close() throws Exception { - // Intentional no-op. - closeable.close(); + 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); } - }); - } + } + }); } -} \ No newline at end of file +}