this.dataBroker = dataBroker;
}
+ /**
+ * Invoked using blueprint.
+ */
+ public void start() {
+ // FIXME: close registrations
+ serverMonitoringDependency.registerCapabilitiesListener(this);
+ serverMonitoringDependency.registerSessionsListener(this);
+ }
+
/**
* Invoked using blueprint.
*/
@Override
public void close() {
- runTransaction((tx) -> tx.delete(LogicalDatastoreType.OPERATIONAL,
+ runTransaction(tx -> tx.delete(LogicalDatastoreType.OPERATIONAL,
InstanceIdentifier.create(NetconfState.class)));
}
public void onSessionStarted(final Session session) {
final InstanceIdentifier<Session> sessionPath =
SESSIONS_INSTANCE_IDENTIFIER.child(Session.class, session.key());
- runTransaction((tx) -> tx.put(LogicalDatastoreType.OPERATIONAL, sessionPath, session));
+ runTransaction(tx -> tx.put(LogicalDatastoreType.OPERATIONAL, sessionPath, session));
}
@Override
public void onSessionEnded(final Session session) {
final InstanceIdentifier<Session> sessionPath =
SESSIONS_INSTANCE_IDENTIFIER.child(Session.class, session.key());
- runTransaction((tx) -> tx.delete(LogicalDatastoreType.OPERATIONAL, sessionPath));
+ runTransaction(tx -> tx.delete(LogicalDatastoreType.OPERATIONAL, sessionPath));
}
@Override
public void onSessionsUpdated(final Collection<Session> sessions) {
- runTransaction((tx) -> updateSessions(tx, sessions));
+ runTransaction(tx -> updateSessions(tx, sessions));
}
@Override
public void onCapabilitiesChanged(final Capabilities capabilities) {
- runTransaction((tx) -> tx.put(LogicalDatastoreType.OPERATIONAL, CAPABILITIES_INSTANCE_IDENTIFIER,
+ runTransaction(tx -> tx.put(LogicalDatastoreType.OPERATIONAL, CAPABILITIES_INSTANCE_IDENTIFIER,
capabilities));
}
@Override
public void onSchemasChanged(final Schemas schemas) {
- runTransaction((tx) -> tx.put(LogicalDatastoreType.OPERATIONAL, SCHEMAS_INSTANCE_IDENTIFIER, schemas));
- }
-
- /**
- * Invoked using blueprint.
- */
- public void start() {
- serverMonitoringDependency.registerCapabilitiesListener(this);
- serverMonitoringDependency.registerSessionsListener(this);
+ runTransaction(tx -> tx.put(LogicalDatastoreType.OPERATIONAL, SCHEMAS_INSTANCE_IDENTIFIER, schemas));
}
private void runTransaction(final Consumer<WriteTransaction> txUser) {
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.schemas.Schema.Location.Enumeration;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.schemas.SchemaBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.schemas.SchemaKey;
+import org.opendaylight.yangtools.concepts.NoOpObjectRegistration;
+import org.opendaylight.yangtools.concepts.Registration;
public class DummyMonitoringService implements NetconfMonitoringService {
}
@Override
- public AutoCloseable registerCapabilitiesListener(final CapabilitiesListener listener) {
- return null;
+ public Registration registerCapabilitiesListener(final CapabilitiesListener listener) {
+ return NoOpObjectRegistration.of(listener);
}
@Override
- public AutoCloseable registerSessionsListener(final SessionsListener listener) {
- return null;
+ public Registration registerSessionsListener(final SessionsListener listener) {
+ return NoOpObjectRegistration.of(listener);
}
-
}
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Schemas;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Sessions;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.sessions.Session;
+import org.opendaylight.yangtools.concepts.Registration;
public interface NetconfMonitoringService {
* @param listener Monitoring listener
* @return listener registration
*/
- AutoCloseable registerCapabilitiesListener(CapabilitiesListener listener);
+ Registration registerCapabilitiesListener(CapabilitiesListener listener);
/**
* Allows push based sessions information transfer.
* @param listener Monitoring listener
* @return listener registration
*/
- AutoCloseable registerSessionsListener(SessionsListener listener);
+ Registration registerSessionsListener(SessionsListener listener);
interface CapabilitiesListener {
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfCapabilityChangeBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.changed.by.parms.ChangedByBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.changed.by.parms.changed.by.server.or.user.ServerBuilder;
+import org.opendaylight.yangtools.concepts.AbstractRegistration;
+import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.yang.common.Empty;
final class NetconfCapabilityMonitoringService implements CapabilityListener, AutoCloseable {
return new CapabilitiesBuilder().setCapability(Set.copyOf(capabilities.keySet())).build();
}
- synchronized AutoCloseable registerListener(final NetconfMonitoringService.CapabilitiesListener listener) {
+ synchronized Registration registerListener(final NetconfMonitoringService.CapabilitiesListener listener) {
listeners.add(listener);
listener.onCapabilitiesChanged(getCapabilities());
listener.onSchemasChanged(getSchemas());
- return () -> {
- synchronized (NetconfCapabilityMonitoringService.this) {
- listeners.remove(listener);
+ return new AbstractRegistration() {
+ @Override
+ protected void removeRegistration() {
+ synchronized (NetconfCapabilityMonitoringService.this) {
+ listeners.remove(listener);
+ }
}
};
}
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Capabilities;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Schemas;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Sessions;
+import org.opendaylight.yangtools.concepts.Registration;
public class NetconfMonitoringServiceImpl implements NetconfMonitoringService, AutoCloseable {
private final NetconfCapabilityMonitoringService capabilityMonitoring;
private final NetconfSessionMonitoringService sessionMonitoring;
- public NetconfMonitoringServiceImpl(NetconfOperationServiceFactory opProvider) {
+ public NetconfMonitoringServiceImpl(final NetconfOperationServiceFactory opProvider) {
this(opProvider, Optional.empty(), 0);
}
- public NetconfMonitoringServiceImpl(NetconfOperationServiceFactory opProvider,
- ScheduledThreadPool threadPool,
- long updateInterval) {
+ public NetconfMonitoringServiceImpl(final NetconfOperationServiceFactory opProvider,
+ final ScheduledThreadPool threadPool,
+ final long updateInterval) {
this(opProvider, Optional.ofNullable(threadPool), updateInterval);
}
- public NetconfMonitoringServiceImpl(NetconfOperationServiceFactory opProvider,
- Optional<ScheduledThreadPool> threadPool,
- long updateInterval) {
- this.capabilityMonitoring = new NetconfCapabilityMonitoringService(opProvider);
- this.sessionMonitoring = new NetconfSessionMonitoringService(threadPool, updateInterval);
+ public NetconfMonitoringServiceImpl(final NetconfOperationServiceFactory opProvider,
+ final Optional<ScheduledThreadPool> threadPool,
+ final long updateInterval) {
+ capabilityMonitoring = new NetconfCapabilityMonitoringService(opProvider);
+ sessionMonitoring = new NetconfSessionMonitoringService(threadPool, updateInterval);
}
}
@Override
- public String getSchemaForCapability(String moduleName, Optional<String> revision) {
+ public String getSchemaForCapability(final String moduleName, final Optional<String> revision) {
return capabilityMonitoring.getSchemaForModuleRevision(moduleName, revision);
}
}
@Override
- public AutoCloseable registerCapabilitiesListener(CapabilitiesListener listener) {
+ public Registration registerCapabilitiesListener(final CapabilitiesListener listener) {
return capabilityMonitoring.registerListener(listener);
}
@Override
- public AutoCloseable registerSessionsListener(SessionsListener listener) {
+ public Registration registerSessionsListener(final SessionsListener listener) {
return sessionMonitoring.registerListener(listener);
}
- public void setNotificationPublisher(BaseNotificationPublisherRegistration notificationPublisher) {
- this.capabilityMonitoring.setNotificationPublisher(notificationPublisher);
+ public void setNotificationPublisher(final BaseNotificationPublisherRegistration notificationPublisher) {
+ capabilityMonitoring.setNotificationPublisher(notificationPublisher);
}
@Override
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Sessions;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.SessionsBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.sessions.Session;
+import org.opendaylight.yangtools.concepts.AbstractRegistration;
+import org.opendaylight.yangtools.concepts.Registration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
final long updateInterval) {
this.updateInterval = updateInterval;
if (schedulingThreadPool.isPresent() && updateInterval > 0) {
- this.executor = schedulingThreadPool.get().getExecutor();
+ executor = schedulingThreadPool.get().getExecutor();
LOG.info("/netconf-state/sessions will be updated every {} seconds.", updateInterval);
} else {
LOG.info("Scheduling thread pool is present = {}, "
+ "update interval {}: /netconf-state/sessions won't be updated.",
schedulingThreadPool.isPresent(), updateInterval);
- this.executor = null;
+ executor = null;
}
}
changedSessions.add(event.getSession());
}
- synchronized AutoCloseable registerListener(final NetconfMonitoringService.SessionsListener listener) {
+ synchronized Registration registerListener(final NetconfMonitoringService.SessionsListener listener) {
listeners.add(listener);
if (!running) {
startUpdateSessionStats();
}
- return () -> listeners.remove(listener);
+ return new AbstractRegistration() {
+ @Override
+ protected void removeRegistration() {
+ listeners.remove(listener);
+ }
+ };
}
@Override
doNothing().when(sessionListener).onSessionUp(any(NetconfServerSession.class));
doNothing().when(sessionListener).onSessionDown(any(NetconfServerSession.class));
doNothing().when(sessionListener).onSessionEvent(any(SessionEvent.class));
- doReturn((AutoCloseable) () -> {
-
- }).when(monitoring).registerCapabilitiesListener(any(NetconfMonitoringService.CapabilitiesListener.class));
+ doReturn((Registration) () -> { }).when(monitoring)
+ .registerCapabilitiesListener(any(NetconfMonitoringService.CapabilitiesListener.class));
doReturn(sessionListener).when(monitoring).getSessionListener();
doReturn(new CapabilitiesBuilder().setCapability(Set.of()).build()).when(monitoring).getCapabilities();
return monitoring;