Move OpenConfigVersion support 95/98095/26
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 21 Oct 2021 09:15:40 +0000 (11:15 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 4 May 2022 19:35:49 +0000 (21:35 +0200)
We are no longer using semantic versions to resolve linkage. Move
statement support to openconfig-parser-support.

JIRA: YANGTOOLS-1432
Change-Id: I144cd2a1040c264b9c6bfafceb95ef5a77e09d90
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
13 files changed:
parser/openconfig-parser-support/src/main/java/org/opendaylight/yangtools/openconfig/parser/OpenConfigVersionEffectiveStatementImpl.java [moved from parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenConfigVersionEffectiveStatementImpl.java with 96% similarity]
parser/openconfig-parser-support/src/main/java/org/opendaylight/yangtools/openconfig/parser/OpenConfigVersionStatementImpl.java [moved from parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenConfigVersionStatementImpl.java with 93% similarity]
parser/openconfig-parser-support/src/main/java/org/opendaylight/yangtools/openconfig/parser/OpenConfigVersionSupport.java [moved from parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenConfigVersionSupport.java with 85% similarity]
parser/openconfig-parser-support/src/main/java/org/opendaylight/yangtools/openconfig/parser/RefOpenConfigVersionStatement.java [moved from parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/RefOpenConfigVersionStatement.java with 93% similarity]
parser/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/DefaultReactors.java
parser/yang-parser-rfc7950/pom.xml
parser/yang-parser-rfc7950/src/main/java/module-info.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/RFC7950Reactors.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionStatementSupport.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementSupport.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementSupport.java
parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/SemanticVersionNamespace.java [deleted file]
parser/yang-parser-spi/src/test/java/org/opendaylight/yangtools/yang/parser/spi/meta/NamespaceTest.java

@@ -5,7 +5,7 @@
  * 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.yangtools.yang.parser.openconfig.stmt;
+package org.opendaylight.yangtools.openconfig.parser;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.concepts.SemVer;
@@ -5,7 +5,7 @@
  * 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.yangtools.yang.parser.openconfig.stmt;
+package org.opendaylight.yangtools.openconfig.parser;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.concepts.SemVer;
@@ -5,7 +5,7 @@
  * 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.yangtools.yang.parser.openconfig.stmt;
+package org.opendaylight.yangtools.openconfig.parser;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.concepts.SemVer;
@@ -19,9 +19,7 @@ import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.BoundStmtCtx;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class OpenConfigVersionSupport
@@ -38,12 +36,6 @@ public final class OpenConfigVersionSupport
         return SemVer.valueOf(value);
     }
 
-    @Override
-    public void onLinkageDeclared(
-            final Mutable<SemVer, OpenConfigVersionStatement, OpenConfigVersionEffectiveStatement> stmt) {
-        stmt.addToNs(SemanticVersionNamespace.class, stmt.getParentContext(), stmt.argument());
-    }
-
     @Override
     protected OpenConfigVersionStatement createDeclared(final BoundStmtCtx<SemVer> ctx,
             final ImmutableList<DeclaredStatement<?>> substatements) {
@@ -5,7 +5,7 @@
  * 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.yangtools.yang.parser.openconfig.stmt;
+package org.opendaylight.yangtools.openconfig.parser;
 
 import org.opendaylight.yangtools.concepts.SemVer;
 import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionStatement;
index 3255c36ceca5f6cecee28289ff69c31371fe0d81..292e711d20e59b349e68ab93b164c6969d8d802d 100644 (file)
@@ -16,6 +16,7 @@ import org.opendaylight.yangtools.odlext.parser.InstanceTargetStatementSupport;
 import org.opendaylight.yangtools.odlext.parser.RpcContextReferenceStatementSupport;
 import org.opendaylight.yangtools.openconfig.parser.EncryptedValueStatementSupport;
 import org.opendaylight.yangtools.openconfig.parser.HashedValueStatementSupport;
+import org.opendaylight.yangtools.openconfig.parser.OpenConfigVersionSupport;
 import org.opendaylight.yangtools.rfc6241.parser.GetFilterElementAttributesStatementSupport;
 import org.opendaylight.yangtools.rfc6536.parser.DefaultDenyAllStatementSupport;
 import org.opendaylight.yangtools.rfc6536.parser.DefaultDenyWriteStatementSupport;
@@ -120,53 +121,47 @@ public final class DefaultReactors {
     private static @NonNull CustomCrossSourceStatementReactorBuilder addExtensions(
             final @NonNull CustomCrossSourceStatementReactorBuilder builder, final YangParserConfiguration config) {
         return builder
-                // OpenDaylight extensions
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,
-                    new AugmentIdentifierStatementSupport(config))
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new ContextInstanceStatementSupport(config))
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,
-                    new ContextReferenceStatementSupport(config))
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new InstanceTargetStatementSupport(config))
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,
-                    new RpcContextReferenceStatementSupport(config))
-
-                // RFC6241 get-filter-element-attributes support
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,
-                    new GetFilterElementAttributesStatementSupport(config))
-
-                // RFC6536 default-deny-{all,write} support
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,
-                    new DefaultDenyAllStatementSupport(config))
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,
-                    new DefaultDenyWriteStatementSupport(config))
-
-                // RFC6643 extensions
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new DisplayHintStatementSupport(config))
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new MaxAccessStatementSupport(config))
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new DefValStatementSupport(config))
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new ImpliedStatementSupport(config))
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new AliasStatementSupport(config))
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new OidStatementSupport(config))
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new SubIdStatementSupport(config))
-
-                // RFC7952 annotation support
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new AnnotationStatementSupport(config))
-
-                // RFC8040 yang-data support
-                .addNamespaceSupport(ModelProcessingPhase.FULL_DECLARATION, YangDataArgumentNamespace.BEHAVIOUR)
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new YangDataStatementSupport(config))
-
-                // RFC8528 mount-point support
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new MountPointStatementSupport(config))
-
-                // RFC8639 subscription-state-notification support
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,
-                    new SubscriptionStateNotificationStatementSupport(config))
-
-                // OpenConfig extensions support (except openconfig-version)
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,
-                    new EncryptedValueStatementSupport(config))
-                .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,
-                    new HashedValueStatementSupport(config));
+            // OpenDaylight extensions
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new AugmentIdentifierStatementSupport(config))
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new ContextInstanceStatementSupport(config))
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new ContextReferenceStatementSupport(config))
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new InstanceTargetStatementSupport(config))
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new RpcContextReferenceStatementSupport(config))
+
+            // RFC6241 get-filter-element-attributes support
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,
+                new GetFilterElementAttributesStatementSupport(config))
+
+            // RFC6536 default-deny-{all,write} support
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new DefaultDenyAllStatementSupport(config))
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new DefaultDenyWriteStatementSupport(config))
+
+            // RFC6643 extensions
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new DisplayHintStatementSupport(config))
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new MaxAccessStatementSupport(config))
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new DefValStatementSupport(config))
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new ImpliedStatementSupport(config))
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new AliasStatementSupport(config))
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new OidStatementSupport(config))
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new SubIdStatementSupport(config))
+
+            // RFC7952 annotation support
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new AnnotationStatementSupport(config))
+
+            // RFC8040 yang-data support
+            .addNamespaceSupport(ModelProcessingPhase.FULL_DECLARATION, YangDataArgumentNamespace.BEHAVIOUR)
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new YangDataStatementSupport(config))
+
+            // RFC8528 mount-point support
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new MountPointStatementSupport(config))
+
+            // RFC8639 subscription-state-notification support
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION,
+                new SubscriptionStateNotificationStatementSupport(config))
+
+            // OpenConfig extensions support
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new EncryptedValueStatementSupport(config))
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new HashedValueStatementSupport(config))
+            .addStatementSupport(ModelProcessingPhase.FULL_DECLARATION, new OpenConfigVersionSupport(config));
     }
 }
index a23780c7feb605d54f1edbd775fd40556c886ab3..7daa3fde362daf24a94a7650297ed7579c6b46ec 100644 (file)
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-xpath-api</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>openconfig-model-api</artifactId>
-        </dependency>
 
         <dependency>
             <groupId>ch.qos.logback</groupId>
index 572340c8785a567d5ae99dcd71cd9edf702880c1..c08ecb7ab2067372b755809e7bb5593e8b1fb560 100644 (file)
@@ -29,7 +29,6 @@ module org.opendaylight.yangtools.yang.parser.rfc7950 {
     requires transitive org.opendaylight.yangtools.yang.xpath.api;
 
     requires org.antlr.antlr4.runtime;
-    requires org.opendaylight.yangtools.openconfig.model.api;
     requires org.opendaylight.yangtools.yang.model.ri;
     requires org.opendaylight.yangtools.util;
     requires org.slf4j;
index e58b043333d3548efb99db7de8f4ea15d5ebf248..e756825b2c6d710a6847caccc334659d5b0b7356 100644 (file)
@@ -16,7 +16,6 @@ import com.google.common.collect.Sets;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.YangVersion;
 import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
-import org.opendaylight.yangtools.yang.parser.openconfig.stmt.OpenConfigVersionSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.ModuleQNameToPrefix;
 import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.YangNamespaceContextNamespace;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.augment.AugmentImplicitHandlingNamespace;
@@ -111,7 +110,6 @@ import org.opendaylight.yangtools.yang.parser.spi.SchemaTreeNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.SubmoduleNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.TypeNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementDefinitionNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupportBundle;
 import org.opendaylight.yangtools.yang.parser.spi.source.BelongsToModuleContext;
@@ -283,7 +281,7 @@ public final class RFC7950Reactors {
 
     public static @NonNull CustomCrossSourceStatementReactorBuilder defaultReactorBuilder(
             final YangParserConfiguration config) {
-        return addExtensions(vanillaReactorBuilder(config), config);
+        return vanillaReactorBuilder(config);
     }
 
     public static @NonNull CustomCrossSourceStatementReactorBuilder defaultReactorBuilder(
@@ -293,15 +291,7 @@ public final class RFC7950Reactors {
 
     public static @NonNull CustomCrossSourceStatementReactorBuilder defaultReactorBuilder(
             final YangXPathParserFactory xpathFactory, final YangParserConfiguration config) {
-        return addExtensions(vanillaReactorBuilder(xpathFactory, config), config);
-    }
-
-    private static @NonNull CustomCrossSourceStatementReactorBuilder addExtensions(
-            final @NonNull CustomCrossSourceStatementReactorBuilder builder, final YangParserConfiguration config) {
-        return builder
-                // Semantic version support
-                .addStatementSupport(ModelProcessingPhase.SOURCE_LINKAGE, new OpenConfigVersionSupport(config))
-                .addNamespaceSupport(ModelProcessingPhase.SOURCE_LINKAGE, SemanticVersionNamespace.BEHAVIOUR);
+        return vanillaReactorBuilder(xpathFactory, config);
     }
 
     /**
index fac074a8a6393f688c8dba9bcc3de6f9d78b0c2b..f082e97dbf6812825b3b657bec9fa96239e4994a 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
-import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
@@ -61,12 +60,7 @@ public final class ExtensionStatementSupport
             final Mutable<QName, ExtensionStatement, ExtensionEffectiveStatement> stmt) {
         super.onStatementDefinitionDeclared(stmt);
 
-        QName stmtName = stmt.getArgument();
-        if (OpenConfigStatements.OPENCONFIG_VERSION.getStatementName().isEqualWithoutRevision(stmtName)) {
-            stmtName = stmtName.withoutRevision();
-        }
-
-        stmt.addContext(ExtensionNamespace.class, stmtName, stmt);
+        stmt.addContext(ExtensionNamespace.class, stmt.getArgument(), stmt);
 
         final StmtContext<QName, ?, ?> argument = StmtContextUtils.findFirstDeclaredSubstatement(stmt,
             ArgumentStatement.class);
index c33333204b52ea71049c43ac0634a242880151bb..11e4daa2cff7d70edda96594b7d9c0464db43fd8 100644 (file)
@@ -16,7 +16,6 @@ import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
 import org.opendaylight.yangtools.yang.common.Empty;
 import org.opendaylight.yangtools.yang.common.XMLNamespace;
 import org.opendaylight.yangtools.yang.common.YangVersion;
@@ -56,13 +55,11 @@ public final class ImportStatementSupport
         SubstatementValidator.builder(YangStmtMapping.IMPORT)
             .addMandatory(YangStmtMapping.PREFIX)
             .addOptional(YangStmtMapping.REVISION_DATE)
-            .addOptional(OpenConfigStatements.OPENCONFIG_VERSION)
             .build();
     private static final SubstatementValidator RFC7950_VALIDATOR =
         SubstatementValidator.builder(YangStmtMapping.IMPORT)
             .addMandatory(YangStmtMapping.PREFIX)
             .addOptional(YangStmtMapping.REVISION_DATE)
-            .addOptional(OpenConfigStatements.OPENCONFIG_VERSION)
             .addOptional(YangStmtMapping.DESCRIPTION)
             .addOptional(YangStmtMapping.REFERENCE)
             .build();
index fee56063cf5de2ef7edc9a63429ccb69e922e495..2b290c1278cf0f183cced9084c5991ae56dc0942 100644 (file)
@@ -19,7 +19,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
 import org.opendaylight.yangtools.yang.common.Empty;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.common.Revision;
@@ -96,7 +95,6 @@ public final class ModuleStatementSupport
         .addAny(YangStmtMapping.TYPEDEF)
         .addAny(YangStmtMapping.USES)
         .addOptional(YangStmtMapping.YANG_VERSION)
-        .addOptional(OpenConfigStatements.OPENCONFIG_VERSION)
         .build();
     private static final SubstatementValidator RFC7950_VALIDATOR = SubstatementValidator.builder(YangStmtMapping.MODULE)
         .addAny(YangStmtMapping.ANYDATA)
@@ -126,7 +124,6 @@ public final class ModuleStatementSupport
         .addAny(YangStmtMapping.TYPEDEF)
         .addAny(YangStmtMapping.USES)
         .addMandatory(YangStmtMapping.YANG_VERSION)
-        .addOptional(OpenConfigStatements.OPENCONFIG_VERSION)
         .build();
 
     private ModuleStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
diff --git a/parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/SemanticVersionNamespace.java b/parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/SemanticVersionNamespace.java
deleted file mode 100644 (file)
index 72114df..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * 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.yangtools.yang.parser.spi.meta;
-
-import com.google.common.annotations.Beta;
-import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.concepts.SemVer;
-
-/**
- * Namespace class for storing semantic version of yang modules.
- */
-@Beta
-@Deprecated(since = "7.0.11", forRemoval = true)
-public interface SemanticVersionNamespace extends ParserNamespace<StmtContext<?, ?, ?>, SemVer> {
-    NamespaceBehaviour<StmtContext<?, ?, ?>, SemVer, @NonNull SemanticVersionNamespace> BEHAVIOUR =
-            NamespaceBehaviour.global(SemanticVersionNamespace.class);
-
-}
index 58f17e7ca36f2282d4f4b7511e87f6e73c6ac2c6..5c4479bf7eb1356de15babf1c809412706903937 100644 (file)
@@ -16,7 +16,6 @@ public class NamespaceTest {
     public void testNamespaces() {
         // Touch behaviors
         // FIXME: add more checks/split this up when behaviours are testable
-        assertNotNull(SemanticVersionNamespace.BEHAVIOUR);
         assertNotNull(StatementDefinitionNamespace.BEHAVIOUR);
     }
 }