Add YangLibSupport.implementedRevision() 70/93070/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 14 Oct 2020 14:41:40 +0000 (16:41 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 15 Oct 2020 06:56:52 +0000 (08:56 +0200)
We want to decompose our services as much as possible, and RESTCONF
legally needs to know the version we are implementing. Expose that
version.

JIRA: MDSAL-595
Change-Id: Ic8dc27adf2c85658e364712af616db7ac558b595
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 74f4dd77a96fb84645892ee268a54f07491d84d2)
(cherry picked from commit bb8aa291f4edf81557c2a80a28c4bde9520234e0)

yanglib/mdsal-yanglib-api/src/main/java/org/opendaylight/mdsal/yanglib/api/YangLibSupport.java
yanglib/mdsal-yanglib-rfc7895/src/main/java/org/opendaylight/mdsal/yanglib/rfc7895/YangModuleLibrarySupport.java
yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/YangLibrarySupport.java

index 1420606b7db845e61ea2ee3bd303c64ebfe6997e..29135a2a6ef93fd1e6ef7eaf1a65f774267ad5e8 100644 (file)
@@ -11,6 +11,7 @@ import com.google.common.annotations.Beta;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.rfc8528.data.api.MountPointContextFactory;
 import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
+import org.opendaylight.yangtools.yang.common.Revision;
 
 /**
  * Main entrypoint into YANG (Module) Library support instance.
@@ -28,4 +29,12 @@ public interface YangLibSupport {
      */
     MountPointContextFactory createMountPointContextFactory(MountPointIdentifier mountId,
             SchemaContextResolver resolver);
+
+    /**
+     * Return the revision date of the model this support implements. The value returned from this method is suitable
+     * for reporting in <a href="https://tools.ietf.org/html/rfc8040#section-3.3.3">RFC8040 section 3.3.3</a>.
+     *
+     * @return A revision.
+     */
+    Revision implementedRevision();
 }
index 1102b6d117bd71427ff4556fcdc598d1ec58922b..085aa0e351a61bbd2a88acd4fe764ed71ef2e299 100644 (file)
@@ -29,6 +29,7 @@ import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.parser.api.YangParserException;
 import org.opendaylight.yangtools.yang.model.parser.api.YangParserFactory;
@@ -40,6 +41,8 @@ import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 @NonNullByDefault
 @Singleton
 public final class YangModuleLibrarySupport implements YangLibSupport {
+    private static final Revision REVISION = ModulesState.QNAME.getRevision().orElseThrow();
+
     private final BindingDataObjectCodecTreeNode<ModulesState> codec;
     private final EffectiveModelContext context;
 
@@ -66,6 +69,11 @@ public final class YangModuleLibrarySupport implements YangLibSupport {
         return new MountPointContextFactoryImpl(mountId, resolver, context, codec);
     }
 
+    @Override
+    public Revision implementedRevision() {
+        return REVISION;
+    }
+
     private static YangTextSchemaSource createSource(final YangModuleInfo info) {
         final QName name = info.getName();
         return YangTextSchemaSource.delegateForByteSource(
index d5d07c4590bac0096dde3577372944e24ddb97a0..7a2adbccad6d2a9c4b2c1a33a092df450fbdbf83 100644 (file)
@@ -31,6 +31,7 @@ import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.parser.api.YangParserException;
 import org.opendaylight.yangtools.yang.model.parser.api.YangParserFactory;
@@ -42,6 +43,8 @@ import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 @NonNullByDefault
 @Singleton
 public final class YangLibrarySupport implements YangLibSupport {
+    private static final Revision REVISION = YangLibrary.QNAME.getRevision().orElseThrow();
+
     private final BindingDataObjectCodecTreeNode<YangLibrary> codec;
     @SuppressWarnings("deprecation")
     private final BindingDataObjectCodecTreeNode<ModulesState> legacyCodec;
@@ -73,6 +76,11 @@ public final class YangLibrarySupport implements YangLibSupport {
         return new MountPointContextFactoryImpl(mountId, resolver, context, identityCodec, codec, legacyCodec);
     }
 
+    @Override
+    public Revision implementedRevision() {
+        return REVISION;
+    }
+
     private static YangTextSchemaSource createSource(final YangModuleInfo info) {
         final QName name = info.getName();
         return YangTextSchemaSource.delegateForByteSource(