Split out OpenConfig extension metamodel 47/65447/7
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 11 Nov 2017 15:53:31 +0000 (16:53 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 13 Nov 2017 13:28:25 +0000 (14:28 +0100)
While the effects of the semantic version extensions are deeply
integrated into how YANG parser operates, the metamodel defined
by the extension itself does not need to be hard-wired.

Move the model bits out into a separate component, eliminating
the need for SupportedExtensionsMapping.

Change-Id: I497347ce79a2c07fdc462e83a20babb941c5cb1a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
20 files changed:
common/artifacts/pom.xml
yang/openconfig-model-api/pom.xml [new file with mode: 0644]
yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigConstants.java [new file with mode: 0644]
yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigStatements.java [new file with mode: 0644]
yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenconfigVersionEffectiveStatement.java [moved from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionEffectiveStatement.java with 90% similarity]
yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenconfigVersionStatement.java [moved from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionStatement.java with 89% similarity]
yang/pom.xml
yang/yang-parser-impl/pom.xml
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenconfigVersionEffectiveStatementImpl.java [moved from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionEffectiveStatementImpl.java with 90% similarity]
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenconfigVersionStatementImpl.java [moved from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionStatementImpl.java with 85% similarity]
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenconfigVersionSupport.java [moved from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionSupport.java with 87% similarity]
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/YangModelDependencyInfo.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionStatementSupport.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementRFC6020Support.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementRFC7950Support.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementRFC6020Support.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementRFC7950Support.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SupportedExtensionsMapping.java [deleted file]
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangInferencePipeline.java

index 224e6458741996f448a3c978112778948c8609a8..6afe3f0790808ca44c3abe1e6c1f2fbf9b4e73e5 100644 (file)
                 <version>2.0.0-SNAPSHOT</version>
             </dependency>
 
+            <dependency>
+                <groupId>org.opendaylight.yangtools</groupId>
+                <artifactId>openconfig-model-api</artifactId>
+                <version>2.0.0-SNAPSHOT</version>
+            </dependency>
+
             <dependency>
                 <groupId>org.opendaylight.yangtools</groupId>
                 <artifactId>rfc7952-model-api</artifactId>
diff --git a/yang/openconfig-model-api/pom.xml b/yang/openconfig-model-api/pom.xml
new file mode 100644 (file)
index 0000000..ab51b43
--- /dev/null
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+ Copyright (c) 2013 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
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <parent>
+        <groupId>org.opendaylight.odlparent</groupId>
+        <artifactId>bundle-parent</artifactId>
+        <version>2.0.5</version>
+        <relativePath/>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.opendaylight.yangtools</groupId>
+    <artifactId>openconfig-model-api</artifactId>
+    <version>2.0.0-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+    <name>${project.artifactId}</name>
+    <description>OpenConfig extensions metamodel</description>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.opendaylight.yangtools</groupId>
+                <artifactId>yangtools-artifacts</artifactId>
+                <version>2.0.0-SNAPSHOT</version>
+                <scope>import</scope>
+                <type>pom</type>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>concepts</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>yang-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>yang-model-api</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <configuration>
+                    <propertyExpansion>checkstyle.violationSeverity=error</propertyExpansion>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <!--
+        Maven Site Configuration
+
+        The following configuration is necessary for maven-site-plugin to
+        correctly identify the correct deployment path for OpenDaylight Maven
+        sites.
+    -->
+    <url>${odl.site.url}/${project.groupId}/${stream}/${project.artifactId}/</url>
+
+    <distributionManagement>
+        <site>
+            <id>opendaylight-site</id>
+            <url>${nexus.site.url}/${project.artifactId}/</url>
+        </site>
+    </distributionManagement>
+</project>
diff --git a/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigConstants.java b/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigConstants.java
new file mode 100644 (file)
index 0000000..f75910f
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2017 Pantheon Technologies, s.r.o. 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.openconfig.model.api;
+
+import com.google.common.collect.ImmutableList;
+import java.net.URI;
+import java.util.Collection;
+import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
+import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
+
+/**
+ * Constants associated with OpenDaylight extension in yang-ext.yang.
+ *
+ * @author Robert Varga
+ */
+public final class OpenConfigConstants {
+    private static final String MODULE_NAME = "yang-ext";
+    private static final URI MODULE_NAMESPACE = URI.create("http://openconfig.net/yang/openconfig-ext");
+
+    // Initial revision, defining semantic-version
+    private static final Revision SEMVER_REVISION = Revision.of("2015-10-09");
+
+    // Revised extension, adds openconfig-encrypted-value
+    private static final Revision ENCRYPTED_VALUE_REVISION = Revision.of("2017-01-29");
+
+    // Revised extension, renames openconfig-encrypted-value to openconfig-hashed-value
+    private static final Revision HASHED_VALUE_REVISION = Revision.of("2017-04-11");
+
+    /**
+     * Runtime identity of initial model.
+     */
+    public static final QNameModule SEMVER_MODULE = QNameModule.create(MODULE_NAMESPACE, SEMVER_REVISION).intern();
+
+    /**
+     * Runtime identity of model which exposed encrypted-value.
+     */
+    public static final QNameModule ENCRYPTED_VALUE_MODULE = QNameModule.create(MODULE_NAMESPACE,
+        ENCRYPTED_VALUE_REVISION).intern();
+
+    /**
+     * Runtime identity of model which exposed encrypted-value.
+     */
+    public static final QNameModule HASHED_VALUE_MODULE = QNameModule.create(MODULE_NAMESPACE, HASHED_VALUE_REVISION)
+            .intern();
+
+    /**
+     * Original model source name.
+     */
+    public static final SourceIdentifier SEMVER_SOURCE = RevisionSourceIdentifier.create(MODULE_NAME,
+        SEMVER_REVISION);
+
+    /**
+     * Original model source name.
+     */
+    public static final SourceIdentifier ENCRYPTED_VALUE_SOURCE = RevisionSourceIdentifier.create(MODULE_NAME,
+        ENCRYPTED_VALUE_REVISION);
+
+    /**
+     * Original model source name.
+     */
+    public static final SourceIdentifier HASHED_VALUE_SOURCE = RevisionSourceIdentifier.create(MODULE_NAME,
+        HASHED_VALUE_REVISION);
+
+    /**
+     * Normative prefix to use when importing {@link #SEMVER_SOURCE} and later.
+     */
+    public static final String MODULE_PREFIX = "oc-ext";
+
+    private OpenConfigConstants() {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Return identifiers of all sources known to define the metadata extension.
+     *
+     * @return Collection of identifiers.
+     */
+    public static Collection<SourceIdentifier> knownModelSources() {
+        return ImmutableList.of(HASHED_VALUE_SOURCE, ENCRYPTED_VALUE_SOURCE, SEMVER_SOURCE);
+    }
+}
diff --git a/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigStatements.java b/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigStatements.java
new file mode 100644 (file)
index 0000000..ffdde63
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2017 Pantheon Technologies, s.r.o. 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.openconfig.model.api;
+
+import static java.util.Objects.requireNonNull;
+
+import com.google.common.annotations.Beta;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+
+@Beta
+public enum OpenConfigStatements implements StatementDefinition {
+    // FIXME: add support for hashed value
+    OPENCONFIG_VERSION(QName.create(OpenConfigConstants.SEMVER_MODULE.getNamespace(), "openconfig-version"), "semver",
+        OpenconfigVersionStatement.class, OpenconfigVersionEffectiveStatement.class);
+
+    private final Class<? extends EffectiveStatement<?, ?>> effectiveRepresentation;
+    private final Class<? extends DeclaredStatement<?>> declaredRepresentation;
+    private final QName statementName;
+    private final QName argumentName;
+
+    OpenConfigStatements(final QName statementName, final String argumentName,
+            final Class<? extends DeclaredStatement<?>> declaredRepresentation,
+            final Class<? extends EffectiveStatement<?, ?>> effectiveRepresentation) {
+        this.statementName = statementName.intern();
+        this.argumentName = QName.create(statementName, argumentName);
+        this.declaredRepresentation = requireNonNull(declaredRepresentation);
+        this.effectiveRepresentation = requireNonNull(effectiveRepresentation);
+    }
+
+    @Nonnull
+    private static QName createQName(final String namespace, final String localName) {
+        return QName.create(namespace, localName).intern();
+    }
+
+    @Nonnull
+    private static QName createQName(final String namespace, final String revision, final String localName) {
+        return QName.create(namespace, revision, localName).intern();
+    }
+
+    @Nonnull
+    @Override
+    public QName getStatementName() {
+        return statementName;
+    }
+
+    @Override
+    @Nullable
+    public QName getArgumentName() {
+        return argumentName;
+    }
+
+    @Override
+    @Nonnull
+    public Class<? extends DeclaredStatement<?>> getDeclaredRepresentationClass() {
+        return declaredRepresentation;
+    }
+
+    @Nonnull
+    @Override
+    public Class<? extends EffectiveStatement<?, ?>> getEffectiveRepresentationClass() {
+        return effectiveRepresentation;
+    }
+
+    @Override
+    public boolean isArgumentYinElement() {
+        return false;
+    }
+}
@@ -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.stmt.openconfig;
+package org.opendaylight.yangtools.openconfig.model.api;
 
 import com.google.common.annotations.Beta;
 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.stmt.openconfig;
+package org.opendaylight.yangtools.openconfig.model.api;
 
 import com.google.common.annotations.Beta;
 import org.opendaylight.yangtools.concepts.SemVer;
index da3e1337d4bcb124c51b3d217af5385307a1d45c..801faf41a5afcdd1281b3f79425e4122acd6f9f9 100644 (file)
@@ -45,6 +45,9 @@
         <module>yang-model-validator</module>
         <module>yang-test-util</module>
 
+        <!-- OpenConfig (semantic version) metamodel support -->
+        <module>openconfig-model-api</module>
+
         <!-- OpenDaylight messy extensions -->
         <module>odlext-model-api</module>
 
index f92e82542e0260062c4efd9a848b70fc047b8ad0..4152f2c474c488e3dffec7e81db61f96b245bd91 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>odlext-model-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>openconfig-model-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>rfc8040-model-api</artifactId>
@@ -5,11 +5,13 @@
  * 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.stmt.openconfig;
+package org.opendaylight.yangtools.yang.parser.openconfig.stmt;
 
 import java.util.Objects;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.concepts.SemVer;
+import org.opendaylight.yangtools.openconfig.model.api.OpenconfigVersionEffectiveStatement;
+import org.opendaylight.yangtools.openconfig.model.api.OpenconfigVersionStatement;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase;
@@ -5,9 +5,10 @@
  * 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.stmt.openconfig;
+package org.opendaylight.yangtools.yang.parser.openconfig.stmt;
 
 import org.opendaylight.yangtools.concepts.SemVer;
+import org.opendaylight.yangtools.openconfig.model.api.OpenconfigVersionStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
@@ -5,25 +5,26 @@
  * 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.stmt.openconfig;
+package org.opendaylight.yangtools.yang.parser.openconfig.stmt;
 
 import org.opendaylight.yangtools.concepts.SemVer;
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
+import org.opendaylight.yangtools.openconfig.model.api.OpenconfigVersionStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 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;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.SupportedExtensionsMapping;
 
 public final class OpenconfigVersionSupport extends AbstractStatementSupport<SemVer, OpenconfigVersionStatement,
         EffectiveStatement<SemVer, OpenconfigVersionStatement>> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
-        SupportedExtensionsMapping.OPENCONFIG_VERSION).build();
+        OpenConfigStatements.OPENCONFIG_VERSION).build();
     private static final OpenconfigVersionSupport INSTANCE = new OpenconfigVersionSupport();
 
     private OpenconfigVersionSupport() {
-        super(SupportedExtensionsMapping.OPENCONFIG_VERSION);
+        super(OpenConfigStatements.OPENCONFIG_VERSION);
     }
 
     public static OpenconfigVersionSupport getInstance() {
index 5cb9977e66f8600f5c93dd57fa85ad7d6ee67dea..e691e7f0c2758abe01ccb2915bba38100a74837c 100644 (file)
@@ -24,6 +24,7 @@ import javax.annotation.Nullable;
 import org.antlr.v4.runtime.ParserRuleContext;
 import org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser.StatementContext;
 import org.opendaylight.yangtools.concepts.SemVer;
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
@@ -33,7 +34,6 @@ import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.opendaylight.yangtools.yang.parser.spi.source.DeclarationInTextSource;
 import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.SupportedExtensionsMapping;
 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
 
 /**
@@ -59,7 +59,7 @@ public abstract class YangModelDependencyInfo {
     private static final String REVISION_DATE = YangStmtMapping.REVISION_DATE.getStatementName().getLocalName();
     private static final String SUBMODULE = YangStmtMapping.SUBMODULE.getStatementName().getLocalName();
 
-    private static final String OPENCONFIG_VERSION = SupportedExtensionsMapping.OPENCONFIG_VERSION.getStatementName()
+    private static final String OPENCONFIG_VERSION = OpenConfigStatements.OPENCONFIG_VERSION.getStatementName()
             .getLocalName();
     private static final Splitter COLON_SPLITTER = Splitter.on(":").omitEmptyStrings().trimResults();
 
index 9363d361568b4796b11ccd9278a12e3cc3a16d36..02479036094e0dc8821acc21ab506c140c21af56 100644 (file)
@@ -30,6 +30,7 @@ import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.concepts.SemVer;
+import org.opendaylight.yangtools.openconfig.model.api.OpenconfigVersionEffectiveStatement;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.YangVersion;
@@ -65,7 +66,6 @@ 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.source.IncludedSubmoduleNameToModuleCtx;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
-import org.opendaylight.yangtools.yang.parser.stmt.openconfig.OpenconfigVersionEffectiveStatement;
 
 @Beta
 public abstract class AbstractEffectiveModule<D extends DeclaredStatement<String>> extends
index 1109ad21c375cadccdeaeb834ddbbf920b1609eb..0eb741f0f5bc925c977c9f286cf2b891db4cd0ae 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension;
 
+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.EffectiveStatement;
@@ -20,7 +21,6 @@ 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.StmtContextUtils;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.SupportedExtensionsMapping;
 
 public final class ExtensionStatementSupport
         extends AbstractQNameStatementSupport<ExtensionStatement, EffectiveStatement<QName, ExtensionStatement>> {
@@ -58,7 +58,7 @@ public final class ExtensionStatementSupport
         super.onStatementDefinitionDeclared(stmt);
 
         QName stmtName = stmt.getStatementArgument();
-        if (SupportedExtensionsMapping.OPENCONFIG_VERSION.getStatementName().isEqualWithoutRevision(stmtName)) {
+        if (OpenConfigStatements.OPENCONFIG_VERSION.getStatementName().isEqualWithoutRevision(stmtName)) {
             stmtName = stmtName.withoutRevision();
         }
 
index aac9a22c24a2298c2e0f374f93c6c4761b3cbbfb..03ffb5200f4a2c57ff7875c2d4f77b50928ca323 100644 (file)
@@ -7,16 +7,16 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.import_;
 
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.SupportedExtensionsMapping;
 
 public final class ImportStatementRFC6020Support extends AbstractImportStatementSupport {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator
             .builder(YangStmtMapping.IMPORT)
             .addMandatory(YangStmtMapping.PREFIX)
             .addOptional(YangStmtMapping.REVISION_DATE)
-            .addOptional(SupportedExtensionsMapping.OPENCONFIG_VERSION)
+            .addOptional(OpenConfigStatements.OPENCONFIG_VERSION)
             .build();
 
     @Override
index f86f8e9369a236db0641278d868ed946a0b7e7cd..af7282c5d49a23a14c64699a1c452244725d5510 100644 (file)
@@ -8,9 +8,9 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.import_;
 
 import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.SupportedExtensionsMapping;
 
 /**
  * Implementation of import statement definition for Yang 1.1 (RFC 7950) to
@@ -22,7 +22,7 @@ public final class ImportStatementRFC7950Support extends AbstractImportStatement
             .builder(YangStmtMapping.IMPORT)
             .addMandatory(YangStmtMapping.PREFIX)
             .addOptional(YangStmtMapping.REVISION_DATE)
-            .addOptional(SupportedExtensionsMapping.OPENCONFIG_VERSION)
+            .addOptional(OpenConfigStatements.OPENCONFIG_VERSION)
             .addOptional(YangStmtMapping.DESCRIPTION)
             .addOptional(YangStmtMapping.REFERENCE)
             .build();
index 7ac2bc4256f5fc08181835d9ace8992e1c6b140a..434e5ab6f0d4ff6be872d153627b2b7458a24ebd 100644 (file)
@@ -7,9 +7,9 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.module;
 
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.SupportedExtensionsMapping;
 
 public final class ModuleStatementRFC6020Support extends AbstractModuleStatementSupport {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
@@ -40,7 +40,7 @@ public final class ModuleStatementRFC6020Support extends AbstractModuleStatement
             .addAny(YangStmtMapping.TYPEDEF)
             .addAny(YangStmtMapping.USES)
             .addOptional(YangStmtMapping.YANG_VERSION)
-            .addOptional(SupportedExtensionsMapping.OPENCONFIG_VERSION)
+            .addOptional(OpenConfigStatements.OPENCONFIG_VERSION)
             .build();
 
     @Override
index a1ce07c52aeb50e4f6009e56680a52fedae64f02..693c06991edbf8b6781ce5a445b8818d0ae2e296 100644 (file)
@@ -8,9 +8,9 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.module;
 
 import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.SupportedExtensionsMapping;
 
 @Beta
 public final class ModuleStatementRFC7950Support extends AbstractModuleStatementSupport {
@@ -43,7 +43,7 @@ public final class ModuleStatementRFC7950Support extends AbstractModuleStatement
             .addAny(YangStmtMapping.TYPEDEF)
             .addAny(YangStmtMapping.USES)
             .addMandatory(YangStmtMapping.YANG_VERSION)
-            .addOptional(SupportedExtensionsMapping.OPENCONFIG_VERSION)
+            .addOptional(OpenConfigStatements.OPENCONFIG_VERSION)
             .build();
 
     @Override
diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SupportedExtensionsMapping.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SupportedExtensionsMapping.java
deleted file mode 100644 (file)
index 47802f2..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2015 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.stmt.rfc6020;
-
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.annotations.Beta;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
-import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
-import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
-import org.opendaylight.yangtools.yang.parser.stmt.openconfig.OpenconfigVersionEffectiveStatement;
-import org.opendaylight.yangtools.yang.parser.stmt.openconfig.OpenconfigVersionStatement;
-
-@Beta
-public enum SupportedExtensionsMapping implements StatementDefinition {
-    OPENCONFIG_VERSION("http://openconfig.net/yang/openconfig-ext",
-        OpenconfigVersionStatement.class, OpenconfigVersionEffectiveStatement.class,
-        "openconfig-version", "semver", false);
-
-    private final Class<? extends DeclaredStatement<?>> type;
-    private final Class<? extends EffectiveStatement<?, ?>> effectiveType;
-    private final QName name;
-    private final QName argument;
-    private final boolean yinElement;
-
-    SupportedExtensionsMapping(final String namespace, final String revision,
-            final Class<? extends DeclaredStatement<?>> declared,
-            final Class<? extends EffectiveStatement<?, ?>> effective, final String nameStr, final String argumentStr,
-            final boolean yinElement) {
-        type = requireNonNull(declared);
-        effectiveType = requireNonNull(effective);
-        name = createQName(namespace, revision, nameStr);
-        argument = createQName(namespace, revision, argumentStr);
-        this.yinElement = yinElement;
-    }
-
-    SupportedExtensionsMapping(final String namespace, final Class<? extends DeclaredStatement<?>> declared,
-            final Class<? extends EffectiveStatement<?, ?>> effective, final String nameStr, final String argumentStr,
-            final boolean yinElement) {
-        type = requireNonNull(declared);
-        effectiveType = requireNonNull(effective);
-        name = createQName(namespace, nameStr);
-        argument = createQName(namespace, argumentStr);
-        this.yinElement = yinElement;
-    }
-
-    @Nonnull
-    private static QName createQName(final String namespace, final String localName) {
-        return QName.create(namespace, localName).intern();
-    }
-
-    @Nonnull
-    private static QName createQName(final String namespace, final String revision, final String localName) {
-        return QName.create(namespace, revision, localName).intern();
-    }
-
-    @Nonnull
-    @Override
-    public QName getStatementName() {
-        return name;
-    }
-
-    @Override
-    @Nullable
-    public QName getArgumentName() {
-        return argument;
-    }
-
-    @Override
-    @Nonnull
-    public Class<? extends DeclaredStatement<?>> getDeclaredRepresentationClass() {
-        return type;
-    }
-
-    @Nonnull
-    @Override
-    public Class<? extends EffectiveStatement<?, ?>> getEffectiveRepresentationClass() {
-        return effectiveType;
-    }
-
-    @Override
-    public boolean isArgumentYinElement() {
-        return yinElement;
-    }
-}
index d2f696f05e4f3136db109d2bbdacb89fba03eec1..61878968744048e23ef74ffe1cea552de6667b7b 100644 (file)
@@ -22,6 +22,7 @@ import org.opendaylight.yangtools.yang.common.YangVersion;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 import org.opendaylight.yangtools.yang.parser.odlext.namespace.AnyxmlSchemaLocationNamespace;
 import org.opendaylight.yangtools.yang.parser.odlext.stmt.AnyxmlSchemaLocationSupport;
+import org.opendaylight.yangtools.yang.parser.openconfig.stmt.OpenconfigVersionSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.ChildSchemaNodeNamespace;
 import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.SchemaNodeIdentifierBuildNamespace;
 import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.URIStringToImportPrefix;
@@ -153,7 +154,6 @@ import org.opendaylight.yangtools.yang.parser.spi.source.StmtOrderingNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.source.SupportedFeaturesNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace.ValidationBundleType;
-import org.opendaylight.yangtools.yang.parser.stmt.openconfig.OpenconfigVersionSupport;
 import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor;
 import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor.Builder;
 import org.opendaylight.yangtools.yang.parser.stmt.rfc8040.YangDataStatementSupport;