X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fimpl%2Fosgi%2FNetconfMonitoringServiceImpl.java;h=3f44ff4ff834120d3edb655e55b5419b1569e7e0;hp=505c74714a71c269ad9721497cdbffaedd4fb706;hb=ecd49a2e11021576f51052ad54f785c9b0e65122;hpb=f46e0c0ac627304099c17783696bc0b5c9f622e1 diff --git a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/osgi/NetconfMonitoringServiceImpl.java b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/osgi/NetconfMonitoringServiceImpl.java index 505c74714a..3f44ff4ff8 100644 --- a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/osgi/NetconfMonitoringServiceImpl.java +++ b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/osgi/NetconfMonitoringServiceImpl.java @@ -13,10 +13,16 @@ import com.google.common.collect.Collections2; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import io.netty.util.internal.ConcurrentSet; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import javax.annotation.Nonnull; import org.opendaylight.controller.netconf.api.monitoring.NetconfManagementSession; import org.opendaylight.controller.netconf.api.monitoring.NetconfMonitoringService; import org.opendaylight.controller.netconf.mapping.api.Capability; +import org.opendaylight.controller.netconf.mapping.api.NetconfOperationProvider; import org.opendaylight.controller.netconf.mapping.api.NetconfOperationService; +import org.opendaylight.controller.netconf.mapping.api.NetconfOperationServiceSnapshot; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.Yang; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Schemas; @@ -30,33 +36,28 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.mon import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; -import java.util.Collections; -import java.util.List; -import java.util.Set; - public class NetconfMonitoringServiceImpl implements NetconfMonitoringService, SessionMonitoringService { - private static final Logger logger = LoggerFactory.getLogger(NetconfMonitoringServiceImpl.class); + private static final Logger LOG = LoggerFactory.getLogger(NetconfMonitoringServiceImpl.class); private final Set sessions = new ConcurrentSet<>(); - private final NetconfOperationServiceFactoryListener factoriesListener; + private final NetconfOperationProvider netconfOperationProvider; - public NetconfMonitoringServiceImpl(NetconfOperationServiceFactoryListener factoriesListener) { - this.factoriesListener = factoriesListener; + public NetconfMonitoringServiceImpl(NetconfOperationProvider netconfOperationProvider) { + this.netconfOperationProvider = netconfOperationProvider; } @Override public void onSessionUp(NetconfManagementSession session) { - logger.debug("Session {} up", session); - Preconditions.checkState(sessions.contains(session) == false, "Session %s was already added", session); + LOG.debug("Session {} up", session); + Preconditions.checkState(!sessions.contains(session), "Session %s was already added", session); sessions.add(session); } @Override public void onSessionDown(NetconfManagementSession session) { - logger.debug("Session {} down", session); - Preconditions.checkState(sessions.contains(session) == true, "Session %s not present", session); + LOG.debug("Session {} down", session); + Preconditions.checkState(sessions.contains(session), "Session %s not present", session); sessions.remove(session); } @@ -67,17 +68,23 @@ public class NetconfMonitoringServiceImpl implements NetconfMonitoringService, S @Override public Schemas getSchemas() { - // FIXME, session ID // capabilities should be split from operations (it will allow to move getSchema operation to monitoring module) - return transformSchemas(factoriesListener.getSnapshot(0)); + try (NetconfOperationServiceSnapshot snapshot = netconfOperationProvider.openSnapshot("netconf-monitoring")) { + return transformSchemas(snapshot.getServices()); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Exception while closing", e); + } } - private Schemas transformSchemas(NetconfOperationServiceSnapshot snapshot) { + private Schemas transformSchemas(Set services) { Set caps = Sets.newHashSet(); List schemas = Lists.newArrayList(); - for (NetconfOperationService netconfOperationService : snapshot.getServices()) { + + for (NetconfOperationService netconfOperationService : services) { // TODO check for duplicates ? move capability merging to snapshot // Split capabilities from operations first and delete this duplicate code caps.addAll(netconfOperationService.getCapabilities()); @@ -86,8 +93,9 @@ public class NetconfMonitoringServiceImpl implements NetconfMonitoringService, S for (Capability cap : caps) { SchemaBuilder builder = new SchemaBuilder(); - if(cap.getCapabilitySchema().isPresent() == false) + if (cap.getCapabilitySchema().isPresent() == false) { continue; + } Preconditions.checkState(cap.getModuleNamespace().isPresent()); builder.setNamespace(new Uri(cap.getModuleNamespace().get())); @@ -102,7 +110,7 @@ public class NetconfMonitoringServiceImpl implements NetconfMonitoringService, S builder.setFormat(Yang.class); - builder.setLocation(transformLocations(cap.getLocation().or(Collections. emptyList()))); + builder.setLocation(transformLocations(cap.getLocation().or(Collections.emptyList()))); builder.setKey(new SchemaKey(Yang.class, identifier, version)); @@ -125,9 +133,8 @@ public class NetconfMonitoringServiceImpl implements NetconfMonitoringService, S private List transformSessions(Set sessions) { return Lists.newArrayList(Collections2.transform(sessions, new Function() { - @Nullable @Override - public Session apply(@Nullable NetconfManagementSession input) { + public Session apply(@Nonnull NetconfManagementSession input) { return input.toManagementSession(); } }));