-
- private static SchemaContext libraryContext;
-
- private final Map<SourceIdentifier, URL> availableModels;
-
- static {
- final ModuleInfoBackedContext moduleInfoBackedContext = ModuleInfoBackedContext.create();
- moduleInfoBackedContext.registerModuleInfo(
- org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160409.
- $YangModuleInfoImpl.getInstance());
- libraryContext = moduleInfoBackedContext.tryToCreateSchemaContext().get();
- }
-
- private LibraryModulesSchemas(final Map<SourceIdentifier, URL> availableModels) {
- this.availableModels = availableModels;
+ private static final Pattern DATE_PATTERN = Pattern.compile("(\\d{4}-\\d{2}-\\d{2})");
+ private static final EffectiveModelContext LIBRARY_CONTEXT = BindingRuntimeHelpers.createEffectiveModel(
+ YangLibrary.class);
+ private static final Inference MODULES_STATE_INFERENCE =
+ SchemaInferenceStack.ofDataTreePath(LIBRARY_CONTEXT, ModulesState.QNAME).toInference();
+
+ // FIXME: this is legacy RFC7895, add support for RFC8525 containers, too
+ private static final NodeIdentifier MODULES_STATE_NID = NodeIdentifier.create(ModulesState.QNAME);
+ private static final NodeIdentifier MODULE_NID = NodeIdentifier.create(Module.QNAME);
+ private static final NodeIdentifier NAME_NID = NodeIdentifier.create(QName.create(Module.QNAME, "name").intern());
+ private static final NodeIdentifier REVISION_NID = NodeIdentifier.create(
+ QName.create(Module.QNAME, "revision").intern());
+ private static final NodeIdentifier SCHEMA_NID = NodeIdentifier.create(
+ QName.create(Module.QNAME, "schema").intern());
+ private static final NodeIdentifier NAMESPACE_NID = NodeIdentifier.create(
+ QName.create(Module.QNAME, "namespace").intern());
+
+ private static final JSONCodecFactory JSON_CODECS = JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02
+ .getShared(LIBRARY_CONTEXT);
+
+ private static final YangInstanceIdentifier MODULES_STATE_MODULE_LIST =
+ YangInstanceIdentifier.create(MODULES_STATE_NID, MODULE_NID);
+
+ private static final @NonNull ContainerNode GET_MODULES_STATE_MODULE_LIST_RPC = Builders.containerBuilder()
+ .withNodeIdentifier(NETCONF_GET_NODEID)
+ .withChild(NetconfMessageTransformUtil.toFilterStructure(MODULES_STATE_MODULE_LIST, LIBRARY_CONTEXT))
+ .build();
+
+ private final ImmutableMap<QName, URL> availableModels;
+
+ private LibraryModulesSchemas(final ImmutableMap<QName, URL> availableModels) {
+ this.availableModels = requireNonNull(availableModels);