import java.util.concurrent.atomic.AtomicReference;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.opendaylight.netconf.server.api.monitoring.Capability;
import org.opendaylight.netconf.server.api.monitoring.CapabilityListener;
import org.opendaylight.yangtools.concepts.Registration;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
@SuppressWarnings("checkstyle:FinalClass")
public class CurrentSchemaContext implements EffectiveModelContextListener, AutoCloseable {
private final AtomicReference<EffectiveModelContext> currentContext = new AtomicReference<>();
- private final Set<CapabilityListener> listeners1 = Collections.synchronizedSet(new HashSet<>());
+ private final Set<CapabilityListener> listeners = Collections.synchronizedSet(new HashSet<>());
private final SchemaSourceProvider<YangTextSchemaSource> rootSchemaSourceProvider;
private Registration schemaContextListenerListenerRegistration;
public void onModelContextUpdated(final EffectiveModelContext schemaContext) {
currentContext.set(schemaContext);
// FIXME is notifying all the listeners from this callback wise ?
- final Set<Capability> addedCaps = MdsalNetconfOperationServiceFactory.transformCapabilities(
- currentContext.get(), rootSchemaSourceProvider);
- for (final CapabilityListener listener : listeners1) {
+ final var addedCaps = MdsalNetconfOperationServiceFactory.transformCapabilities(schemaContext,
+ rootSchemaSourceProvider);
+ for (var listener : listeners) {
listener.onCapabilitiesChanged(addedCaps, Set.of());
}
}
@Override
public void close() {
- listeners1.clear();
+ listeners.clear();
schemaContextListenerListenerRegistration.close();
currentContext.set(null);
}
public Registration registerCapabilityListener(final CapabilityListener listener) {
listener.onCapabilitiesChanged(MdsalNetconfOperationServiceFactory.transformCapabilities(currentContext.get(),
rootSchemaSourceProvider), Set.of());
- listeners1.add(listener);
- return () -> listeners1.remove(listener);
+ listeners.add(listener);
+ return () -> listeners.remove(listener);
}
}
}
// FIXME: ImmutableSet
- static Set<Capability> transformCapabilities(
- final EffectiveModelContext currentContext,
+ static Set<Capability> transformCapabilities(final EffectiveModelContext currentContext,
final SchemaSourceProvider<YangTextSchemaSource> rootSchemaSourceProviderDependency) {
final var capabilities = new HashSet<Capability>();
*/
package org.opendaylight.netconf.server;
-import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import io.netty.channel.Channel;
public NetconfServerSessionNegotiator getSessionNegotiator(final Channel channel,
final Promise<NetconfServerSession> promise) {
final var sessionId = idProvider.getNextSessionId();
- final var socketAddress = channel.parent() == null ? null : channel.parent().localAddress();
- final var service = getOperationServiceForAddress(sessionId, socketAddress);
- final var listener = new NetconfServerSessionListener(
- new NetconfOperationRouterImpl(service, monitoringService, sessionId), monitoringService, service);
+ final var service = getOperationServiceForAddress(sessionId,
+ channel.parent() == null ? null : channel.parent().localAddress());
return new NetconfServerSessionNegotiator(createHelloMessage(sessionId, monitoringService), sessionId, promise,
- channel, timer, listener, connectionTimeoutMillis, maximumIncomingChunkSize);
+ channel, timer,
+ new NetconfServerSessionListener(new NetconfOperationRouterImpl(service, monitoringService, sessionId),
+ monitoringService, service),
+ connectionTimeoutMillis, maximumIncomingChunkSize);
}
protected NetconfOperationService getOperationServiceForAddress(final SessionIdType sessionId,
- final SocketAddress socketAddress) {
+ final SocketAddress socketAddress) {
return aggregatedOpService.createService(sessionId);
}
sessionId);
}
- public static Set<String> transformCapabilities(final Capabilities capabilities) {
- return Sets.newHashSet(Collections2.transform(capabilities.getCapability(), Uri::getValue));
+ public static ImmutableSet<String> transformCapabilities(final Capabilities capabilities) {
+ return capabilities.requireCapability().stream().map(Uri::getValue).collect(ImmutableSet.toImmutableSet());
}
}