- @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
- justification = "https://github.com/spotbugs/spotbugs/issues/811")
- private void addProvidedSourcesToSchemaRegistry(final DeviceSources deviceSources) {
- final SchemaSourceProvider<YangTextSchemaSource> yangProvider = deviceSources.getSourceProvider();
- for (final SourceIdentifier sourceId : deviceSources.getProvidedSources()) {
- sourceRegistrations.add(schemaRegistry.registerSchemaSource(yangProvider,
- PotentialSchemaSource.create(
- sourceId, YangTextSchemaSource.class, PotentialSchemaSource.Costs.REMOTE_IO.getValue())));
+ private ListenableFuture<SchemaResult> assembleSchemaContext(final DeviceSources deviceSources,
+ final NetconfSessionPreferences remoteSessionCapabilities) {
+ LOG.debug("{}: Resolved device sources to {}", id, deviceSources);
+
+ sourceRegistrations.addAll(deviceSources.register(schemaRegistry));
+
+ return new SchemaSetup(deviceSources, remoteSessionCapabilities).startResolution();
+ }
+
+ private ListenableFuture<@NonNull MountPointContext> createMountPointContext(
+ final EffectiveModelContext schemaContext, final BaseSchema baseSchema,
+ final NetconfDeviceCommunicator listener) {
+ final MountPointContext emptyContext = new EmptyMountPointContext(schemaContext);
+ if (schemaContext.findModule(SchemaMountConstants.RFC8528_MODULE).isEmpty()) {
+ return Futures.immediateFuture(emptyContext);
+ }
+
+ // Create a temporary RPC invoker and acquire the mount point tree
+ LOG.debug("{}: Acquiring available mount points", id);
+ final NetconfDeviceRpc deviceRpc = new NetconfDeviceRpc(schemaContext, listener,
+ new NetconfMessageTransformer(emptyContext, false, baseSchema));
+
+ return Futures.transform(deviceRpc.invokeRpc(NetconfMessageTransformUtil.NETCONF_GET_QNAME,
+ Builders.containerBuilder().withNodeIdentifier(NETCONF_GET_NODEID)
+ .withChild(NetconfMessageTransformUtil.toFilterStructure(RFC8528_SCHEMA_MOUNTS, schemaContext))
+ .build()), rpcResult -> processSchemaMounts(rpcResult, emptyContext), MoreExecutors.directExecutor());
+ }
+
+ private MountPointContext processSchemaMounts(final DOMRpcResult rpcResult, final MountPointContext emptyContext) {
+ final Collection<? extends RpcError> errors = rpcResult.getErrors();
+ if (!errors.isEmpty()) {
+ LOG.warn("{}: Schema-mounts acquisition resulted in errors {}", id, errors);