Convert mdsal-netconf-monitoring to OSGi DS
[netconf.git] / netconf / mdsal-netconf-monitoring / src / main / java / org / opendaylight / controller / config / yang / netconf / mdsal / monitoring / MdsalMonitoringMapperFactory.java
index a163dd7540abf65659985e541ee594da24b3f83e..82359499568db4ce2a5fce6c8d3cbea16f2ee492 100644 (file)
@@ -7,38 +7,50 @@
  */
 package org.opendaylight.controller.config.yang.netconf.mdsal.monitoring;
 
-import java.util.Collections;
+import static java.util.Objects.requireNonNull;
+
 import java.util.Set;
-import org.opendaylight.controller.config.util.capability.Capability;
-import org.opendaylight.controller.sal.common.util.NoopAutoCloseable;
+import org.opendaylight.netconf.api.capability.Capability;
 import org.opendaylight.netconf.api.monitoring.CapabilityListener;
 import org.opendaylight.netconf.api.monitoring.NetconfMonitoringService;
 import org.opendaylight.netconf.mapping.api.NetconfOperation;
 import org.opendaylight.netconf.mapping.api.NetconfOperationService;
 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactoryListener;
-import org.opendaylight.netconf.monitoring.GetSchema;
-
-public class MdsalMonitoringMapperFactory implements NetconfOperationServiceFactory, AutoCloseable {
+import org.opendaylight.yangtools.concepts.Registration;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
 
-    private final NetconfOperationService operationService;
-    private final MonitoringToMdsalWriter monitoringToMdsalWriter;
+@Component(service = { })
+public final class MdsalMonitoringMapperFactory implements NetconfOperationServiceFactory, AutoCloseable {
     private final NetconfOperationServiceFactoryListener netconfOperationServiceFactoryListener;
+    private final NetconfMonitoringService netconfMonitoringService;
 
-    private static final Set<Capability> CAPABILITIES = Collections.emptySet();
-
+    @Activate
     public MdsalMonitoringMapperFactory(
+            @Reference(target = "(type=mapper-aggregator-registry)")
             final NetconfOperationServiceFactoryListener netconfOperationServiceFactoryListener,
-            final NetconfMonitoringService netconfMonitoringService,
-            final MonitoringToMdsalWriter monitoringToMdsalWriter) {
+            @Reference(target = "(type=netconf-server-monitoring)")
+            final NetconfMonitoringService netconfMonitoringService) {
+        this.netconfOperationServiceFactoryListener = requireNonNull(netconfOperationServiceFactoryListener);
+        this.netconfMonitoringService = requireNonNull(netconfMonitoringService);
+        this.netconfOperationServiceFactoryListener.onAddNetconfOperationServiceFactory(this);
+    }
 
-        this.netconfOperationServiceFactoryListener = netconfOperationServiceFactoryListener;
-        this.monitoringToMdsalWriter = monitoringToMdsalWriter;
+    @Deactivate
+    @Override
+    public void close() {
+        netconfOperationServiceFactoryListener.onRemoveNetconfOperationServiceFactory(this);
+    }
 
-        this.operationService = new NetconfOperationService() {
+    @Override
+    public NetconfOperationService createService(final String netconfSessionIdForReporting) {
+        return new NetconfOperationService() {
             @Override
             public Set<NetconfOperation> getNetconfOperations() {
-                return Collections.singleton(new GetSchema(netconfMonitoringService));
+                return Set.of(new GetSchema(netconfSessionIdForReporting, netconfMonitoringService));
             }
 
             @Override
@@ -46,35 +58,18 @@ public class MdsalMonitoringMapperFactory implements NetconfOperationServiceFact
                 // NOOP
             }
         };
-
-        this.netconfOperationServiceFactoryListener.onAddNetconfOperationServiceFactory(this);
-    }
-
-    @Override
-    public NetconfOperationService createService(final String netconfSessionIdForReporting) {
-        return operationService;
     }
 
     @Override
     public Set<Capability> getCapabilities() {
-        // TODO No capabilities exposed to prevent clashes with schemas from mdsal-netconf-connector (it exposes
-        // all the schemas). If the schemas exposed by mdsal-netconf-connector are filtered, this class would expose
-        // monitoring related models.
-        return CAPABILITIES;
+        // TODO No capabilities exposed to prevent clashes with schemas from mdsal-netconf-connector (it exposes all the
+        // schemas). If the schemas exposed by mdsal-netconf-connector are filtered, this class would expose monitoring
+        // related models.
+        return Set.of();
     }
 
     @Override
-    public AutoCloseable registerCapabilityListener(final CapabilityListener listener) {
-        return NoopAutoCloseable.INSTANCE;
+    public Registration registerCapabilityListener(final CapabilityListener listener) {
+        return () -> { };
     }
-
-    /**
-     * Invoked using blueprint.
-     */
-    @Override
-    public void close() {
-        monitoringToMdsalWriter.close();
-        netconfOperationServiceFactoryListener.onRemoveNetconfOperationServiceFactory(this);
-    }
-
-}
\ No newline at end of file
+}