Merge DOMExtensibleService into DOMService
[mdsal.git] / dom / mdsal-dom-broker / src / main / java / org / opendaylight / mdsal / dom / broker / DOMRpcRouter.java
index 4997cde5d7d79689f43df297c085cf970b2e6d73..578f84cfded611ee2af64e2dec6939c735e568e5 100644 (file)
@@ -12,9 +12,7 @@ import static com.google.common.base.Verify.verifyNotNull;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.ClassToInstanceMap;
 import com.google.common.collect.Collections2;
-import com.google.common.collect.ImmutableClassToInstanceMap;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableTable;
@@ -399,31 +397,10 @@ public final class DOMRpcRouter extends AbstractRegistration implements Effectiv
     }
 
     @NonNullByDefault
-    private final class ActionAvailabilityFacade implements DOMActionAvailabilityExtension {
+    private final class ActionServiceFacade implements DOMActionService, DOMActionAvailabilityExtension {
         @Override
-        public <T extends AvailabilityListener> ListenerRegistration<T> registerAvailabilityListener(final T listener) {
-            synchronized (DOMRpcRouter.this) {
-                final ActionRegistration<T> ret = new ActionRegistration<>(DOMRpcRouter.this, listener,
-                    actionRoutingTable.getOperations(listener));
-                actionListeners = ImmutableList.<ActionRegistration<?>>builder()
-                    .addAll(actionListeners)
-                    .add(ret)
-                    .build();
-
-                listenerNotifier.execute(ret::initialTable);
-                return ret;
-            }
-        }
-    }
-
-    @NonNullByDefault
-    private final class ActionServiceFacade implements DOMActionService {
-        private final ClassToInstanceMap<DOMActionServiceExtension> extensions = ImmutableClassToInstanceMap.of(
-            DOMActionAvailabilityExtension.class, new ActionAvailabilityFacade());
-
-        @Override
-        public ClassToInstanceMap<DOMActionServiceExtension> getExtensions() {
-            return extensions;
+        public Collection<DOMActionServiceExtension> supportedExtensions() {
+            return List.of(this);
         }
 
         @Override
@@ -437,6 +414,21 @@ public final class DOMRpcRouter extends AbstractRegistration implements Effectiv
                 : Futures.immediateFailedFuture(
                     new DOMActionNotAvailableException("No implementation of Action %s available", type));
         }
+
+        @Override
+        public <T extends AvailabilityListener> ListenerRegistration<T> registerAvailabilityListener(final T listener) {
+            synchronized (DOMRpcRouter.this) {
+                final ActionRegistration<T> ret = new ActionRegistration<>(DOMRpcRouter.this, listener,
+                    actionRoutingTable.getOperations(listener));
+                actionListeners = ImmutableList.<ActionRegistration<?>>builder()
+                    .addAll(actionListeners)
+                    .add(ret)
+                    .build();
+
+                listenerNotifier.execute(ret::initialTable);
+                return ret;
+            }
+        }
     }
 
     @NonNullByDefault