+++ /dev/null
-/*
- * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.restconf.nb.rfc8040;
-
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.$YangModuleInfoImpl;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.Module;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.Revision;
-
-/**
- * Common constants defined and relating to RFC8040.
- */
-public final class Rfc8040 {
- private Rfc8040() {
- // Hidden on purpose
- }
-
- /**
- * Constants for ietf-yang-library model.
- */
- // FIXME: split this out
- public static final class IetfYangLibrary {
- public static final QNameModule MODULE_QNAME = $YangModuleInfoImpl.getInstance().getName().getModule();
- public static final Revision REVISION = MODULE_QNAME.getRevision().orElseThrow();
-
- public static final QName MODULE_SET_ID_LEAF_QNAME = QName.create(MODULE_QNAME, "module-set-id").intern();
-
- public static final QName MODULE_QNAME_LIST = Module.QNAME;
-
- private IetfYangLibrary() {
- // Hidden on purpose
- }
- }
-}
import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
-import org.opendaylight.restconf.nb.rfc8040.Rfc8040.IetfYangLibrary;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.ModulesState;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.YangLibrary;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.Module;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.Module.ConformanceType;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.module.Deviation;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.module.Submodule;
private static final Logger LOG = LoggerFactory.getLogger(SchemaContextHandler.class);
private static final NodeIdentifier MODULE_CONFORMANCE_NODEID =
- NodeIdentifier.create(QName.create(IetfYangLibrary.MODULE_QNAME, "conformance-type").intern());
+ NodeIdentifier.create(QName.create(YangLibrary.QNAME, "conformance-type").intern());
private static final NodeIdentifier MODULE_FEATURE_NODEID =
- NodeIdentifier.create(QName.create(IetfYangLibrary.MODULE_QNAME, "feature").intern());
+ NodeIdentifier.create(QName.create(YangLibrary.QNAME, "feature").intern());
private static final NodeIdentifier MODULE_NAME_NODEID =
- NodeIdentifier.create(QName.create(IetfYangLibrary.MODULE_QNAME, "name").intern());
+ NodeIdentifier.create(QName.create(YangLibrary.QNAME, "name").intern());
private static final NodeIdentifier MODULE_NAMESPACE_NODEID =
- NodeIdentifier.create(QName.create(IetfYangLibrary.MODULE_QNAME, "namespace").intern());
+ NodeIdentifier.create(QName.create(YangLibrary.QNAME, "namespace").intern());
private static final NodeIdentifier MODULE_REVISION_NODEID =
- NodeIdentifier.create(QName.create(IetfYangLibrary.MODULE_QNAME, "revision").intern());
+ NodeIdentifier.create(QName.create(YangLibrary.QNAME, "revision").intern());
private static final NodeIdentifier MODULE_SCHEMA_NODEID =
- NodeIdentifier.create(QName.create(IetfYangLibrary.MODULE_QNAME, "schema").intern());
+ NodeIdentifier.create(QName.create(YangLibrary.QNAME, "schema").intern());
+ private static final NodeIdentifier MODULE_SET_ID_LEAF_NODEID =
+ NodeIdentifier.create(QName.create(YangLibrary.QNAME, "module-set-id").intern());
private final AtomicInteger moduleSetId = new AtomicInteger();
private final DOMDataBroker domDataBroker;
public void onModelContextUpdated(final EffectiveModelContext context) {
schemaContext = requireNonNull(context);
- if (context.findModuleStatement(IetfYangLibrary.MODULE_QNAME).isPresent()) {
+ if (context.findModuleStatement(YangLibrary.QNAME.getModule()).isPresent()) {
putData(mapModulesByIetfYangLibraryYang(context, String.valueOf(moduleSetId.incrementAndGet())));
}
}
public static ContainerNode mapModulesByIetfYangLibraryYang(final EffectiveModelContext context,
final String moduleSetId) {
final var mapBuilder = Builders.mapBuilder()
- .withNodeIdentifier(new NodeIdentifier(IetfYangLibrary.MODULE_QNAME_LIST));
+ .withNodeIdentifier(new NodeIdentifier(Module.QNAME));
for (var module : context.getModules()) {
- fillMapByModules(mapBuilder, IetfYangLibrary.MODULE_QNAME_LIST, false, module, context);
+ fillMapByModules(mapBuilder, Module.QNAME, false, module, context);
}
return Builders.containerBuilder()
.withNodeIdentifier(new NodeIdentifier(ModulesState.QNAME))
- .withChild(ImmutableNodes.leafNode(IetfYangLibrary.MODULE_SET_ID_LEAF_QNAME, moduleSetId))
+ .withChild(ImmutableNodes.leafNode(MODULE_SET_ID_LEAF_NODEID, moduleSetId))
.withChild(mapBuilder.build())
.build();
}
import javax.ws.rs.Path;
import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
-import org.opendaylight.restconf.nb.rfc8040.Rfc8040.IetfYangLibrary;
import org.opendaylight.restconf.nb.rfc8040.databind.DatabindProvider;
import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
import org.opendaylight.restconf.nb.rfc8040.rests.services.api.RestconfService;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev170126.Restconf;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.YangLibrary;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
@Path("/")
public class RestconfImpl implements RestconfService {
private static final QName YANG_LIBRARY_VERSION = QName.create(Restconf.QNAME, "yang-library-version").intern();
+ private static final String YANG_LIBRARY_REVISION = YangLibrary.QNAME.getRevision().orElseThrow().toString();
private final DatabindProvider databindProvider;
stack.enterDataTree(YANG_LIBRARY_VERSION);
return NormalizedNodePayload.of(InstanceIdentifierContext.ofStack(stack),
- ImmutableNodes.leafNode(YANG_LIBRARY_VERSION, IetfYangLibrary.REVISION.toString()));
+ ImmutableNodes.leafNode(YANG_LIBRARY_VERSION, YANG_LIBRARY_REVISION));
}
}
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
-import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.junit.BeforeClass;
import org.junit.Test;
-import org.opendaylight.restconf.nb.rfc8040.Rfc8040.IetfYangLibrary;
-import org.opendaylight.restconf.nb.rfc8040.TestRestconfUtils;
import org.opendaylight.restconf.nb.rfc8040.legacy.SchemaContextHandler;
import org.opendaylight.restconf.nb.rfc8040.utils.parser.ParserIdentifier;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.Module;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.module.Deviation;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static EffectiveModelContext schemaContext;
private static EffectiveModelContext schemaContextMonitoring;
- private static Collection<? extends Module> modulesRest;
@BeforeClass
public static void loadTestSchemaContextAndModules() throws Exception {
// FIXME: assemble these from dependencies
schemaContext = YangParserTestUtils.parseYangResourceDirectory("/modules/restconf-module-testing");
schemaContextMonitoring = YangParserTestUtils.parseYangResourceDirectory("/modules");
- modulesRest = YangParserTestUtils
- .parseYangFiles(TestRestconfUtils.loadFiles("/modules/restconf-module-testing")).getModules();
}
/**
for (var child : containerNode.body()) {
if (child instanceof LeafNode) {
- assertEquals(IetfYangLibrary.MODULE_SET_ID_LEAF_QNAME, child.name().getNodeType());
+ assertEquals(QName.create(Module.QNAME, "module-set-id"), child.name().getNodeType());
}
if (child instanceof MapNode mapChild) {
- assertEquals(IetfYangLibrary.MODULE_QNAME_LIST, child.name().getNodeType());
+ assertEquals(Module.QNAME, child.name().getNodeType());
for (var mapEntryNode : mapChild.body()) {
String name = "";
String revision = "";
}
}
- verifyLoadedModules(modulesRest, loadedModules);
- }
-
- /**
- * Verify if correct modules were loaded into Restconf module by comparison with modules from
- * <code>SchemaContext</code>.
- * @param expectedModules Modules from <code>SchemaContext</code>
- * @param loadedModules Loaded modules into Restconf module
- */
- private static void verifyLoadedModules(final Collection<? extends Module> expectedModules,
- final Map<String, String> loadedModules) {
+ final var expectedModules = schemaContext.getModules();
assertEquals("Number of loaded modules is not as expected", expectedModules.size(), loadedModules.size());
- for (final Module m : expectedModules) {
+ for (var m : expectedModules) {
final String name = m.getName();
-
final String revision = loadedModules.get(name);
assertNotNull("Expected module not found", revision);
assertEquals("Incorrect revision of loaded module", Revision.ofNullable(revision), m.getRevision());
import static org.junit.Assert.assertEquals;
import org.junit.Test;
-import org.opendaylight.restconf.nb.rfc8040.Rfc8040.IetfYangLibrary;
import org.opendaylight.restconf.nb.rfc8040.databind.DatabindContext;
-import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
public class RestconfImplTest {
@Test
public void restImplTest() {
final var context = YangParserTestUtils.parseYangResourceDirectory("/restconf/impl");
- final RestconfImpl restconfImpl = new RestconfImpl(() -> DatabindContext.ofModel(context));
- final NormalizedNodePayload libraryVersion = restconfImpl.getLibraryVersion();
- final LeafNode<?> value = (LeafNode<?>) libraryVersion.getData();
- assertEquals(IetfYangLibrary.REVISION.toString(), value.body());
+ final var restconfImpl = new RestconfImpl(() -> DatabindContext.ofModel(context));
+ final var libraryVersion = restconfImpl.getLibraryVersion();
+ assertEquals("2019-01-04", libraryVersion.getData().body());
}
}