Use a dedicated no-op listener class 48/76548/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 1 Oct 2018 16:50:17 +0000 (18:50 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 1 Oct 2018 22:16:13 +0000 (00:16 +0200)
This saves a few bytes per session by not retaining anything
but the listener implementation.

Change-Id: I629c0bbd686ec734f36d8e8d307df3f1f733fa1c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit cf5c624854874f3603b20d296233485b37b99abd)

netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpc.java

index 01cdac9d6bb8d98d7e470b6dcaa58a1c63b5df4d..2eb98bb3051908a8eaf993f6feeb4afcf435995f 100644 (file)
@@ -74,20 +74,28 @@ public final class NetconfDeviceRpc implements DOMRpcService {
     @Override
     public <T extends DOMRpcAvailabilityListener> ListenerRegistration<T> registerRpcListener(
             @Nonnull final T listener) {
-
         listener.onRpcAvailable(Collections2.transform(schemaContext.getOperations(),
             input -> DOMRpcIdentifier.create(input.getPath())));
 
-        return new ListenerRegistration<T>() {
-            @Override
-            public void close() {
-                // NOOP, no rpcs appear and disappear in this implementation
-            }
+        return new NoOpListenerRegistration<>(listener);
+    }
+
+    private static final class NoOpListenerRegistration<T extends DOMRpcAvailabilityListener>
+            implements ListenerRegistration<T> {
+        private final T listener;
+
+        NoOpListenerRegistration(final T listener) {
+            this.listener = requireNonNull(listener);
+        }
+
+        @Override
+        public T getInstance() {
+            return listener;
+        }
 
-            @Override
-            public T getInstance() {
-                return listener;
-            }
-        };
+        @Override
+        public void close() {
+            // NOOP, no rpcs appear and disappear in this implementation
+        }
     }
 }