From: Robert Varga Date: Sat, 11 Nov 2017 15:53:31 +0000 (+0100) Subject: Split out OpenConfig extension metamodel X-Git-Tag: v2.0.0~38 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=09cee8de56efac9087225f6546e5f5a30bbe8953;p=yangtools.git Split out OpenConfig extension metamodel 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 --- diff --git a/common/artifacts/pom.xml b/common/artifacts/pom.xml index 224e645874..6afe3f0790 100644 --- a/common/artifacts/pom.xml +++ b/common/artifacts/pom.xml @@ -142,6 +142,12 @@ 2.0.0-SNAPSHOT + + org.opendaylight.yangtools + openconfig-model-api + 2.0.0-SNAPSHOT + + org.opendaylight.yangtools rfc7952-model-api diff --git a/yang/openconfig-model-api/pom.xml b/yang/openconfig-model-api/pom.xml new file mode 100644 index 0000000000..ab51b43c35 --- /dev/null +++ b/yang/openconfig-model-api/pom.xml @@ -0,0 +1,81 @@ + + + + + + + org.opendaylight.odlparent + bundle-parent + 2.0.5 + + + + 4.0.0 + org.opendaylight.yangtools + openconfig-model-api + 2.0.0-SNAPSHOT + bundle + ${project.artifactId} + OpenConfig extensions metamodel + + + + + org.opendaylight.yangtools + yangtools-artifacts + 2.0.0-SNAPSHOT + import + pom + + + + + + + ${project.groupId} + concepts + + + ${project.groupId} + yang-common + + + ${project.groupId} + yang-model-api + + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + + checkstyle.violationSeverity=error + + + + + + + ${odl.site.url}/${project.groupId}/${stream}/${project.artifactId}/ + + + + opendaylight-site + ${nexus.site.url}/${project.artifactId}/ + + + 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 index 0000000000..f75910fada --- /dev/null +++ b/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigConstants.java @@ -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 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 index 0000000000..ffdde636fa --- /dev/null +++ b/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigStatements.java @@ -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> effectiveRepresentation; + private final Class> declaredRepresentation; + private final QName statementName; + private final QName argumentName; + + OpenConfigStatements(final QName statementName, final String argumentName, + final Class> declaredRepresentation, + final Class> 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> getDeclaredRepresentationClass() { + return declaredRepresentation; + } + + @Nonnull + @Override + public Class> getEffectiveRepresentationClass() { + return effectiveRepresentation; + } + + @Override + public boolean isArgumentYinElement() { + return false; + } +} diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionEffectiveStatement.java b/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenconfigVersionEffectiveStatement.java similarity index 90% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionEffectiveStatement.java rename to yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenconfigVersionEffectiveStatement.java index 51ad9d12a4..7d6b07dc5b 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionEffectiveStatement.java +++ b/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenconfigVersionEffectiveStatement.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.stmt.openconfig; +package org.opendaylight.yangtools.openconfig.model.api; import com.google.common.annotations.Beta; import org.opendaylight.yangtools.concepts.SemVer; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionStatement.java b/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenconfigVersionStatement.java similarity index 89% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionStatement.java rename to yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenconfigVersionStatement.java index 0c352dcc98..10a031504a 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionStatement.java +++ b/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenconfigVersionStatement.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.stmt.openconfig; +package org.opendaylight.yangtools.openconfig.model.api; import com.google.common.annotations.Beta; import org.opendaylight.yangtools.concepts.SemVer; diff --git a/yang/pom.xml b/yang/pom.xml index da3e1337d4..801faf41a5 100644 --- a/yang/pom.xml +++ b/yang/pom.xml @@ -45,6 +45,9 @@ yang-model-validator yang-test-util + + openconfig-model-api + odlext-model-api diff --git a/yang/yang-parser-impl/pom.xml b/yang/yang-parser-impl/pom.xml index f92e82542e..4152f2c474 100644 --- a/yang/yang-parser-impl/pom.xml +++ b/yang/yang-parser-impl/pom.xml @@ -70,6 +70,10 @@ ${project.groupId} odlext-model-api + + ${project.groupId} + openconfig-model-api + ${project.groupId} rfc8040-model-api diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenconfigVersionEffectiveStatementImpl.java similarity index 90% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionEffectiveStatementImpl.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenconfigVersionEffectiveStatementImpl.java index 88ae3320c4..d9f5af5a31 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenconfigVersionEffectiveStatementImpl.java @@ -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; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenconfigVersionStatementImpl.java similarity index 85% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionStatementImpl.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenconfigVersionStatementImpl.java index 507e40181a..3fb7c3ffa1 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenconfigVersionStatementImpl.java @@ -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; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionSupport.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenconfigVersionSupport.java similarity index 87% rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionSupport.java rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenconfigVersionSupport.java index 82469f8069..05656034b5 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/openconfig/OpenconfigVersionSupport.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenconfigVersionSupport.java @@ -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> { 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() { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/YangModelDependencyInfo.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/YangModelDependencyInfo.java index 5cb9977e66..e691e7f0c2 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/YangModelDependencyInfo.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/YangModelDependencyInfo.java @@ -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(); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java index 9363d36156..0247903609 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java @@ -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> extends diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionStatementSupport.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionStatementSupport.java index 1109ad21c3..0eb741f0f5 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionStatementSupport.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionStatementSupport.java @@ -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> { @@ -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(); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementRFC6020Support.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementRFC6020Support.java index aac9a22c24..03ffb5200f 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementRFC6020Support.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementRFC6020Support.java @@ -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 diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementRFC7950Support.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementRFC7950Support.java index f86f8e9369..af7282c5d4 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementRFC7950Support.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementRFC7950Support.java @@ -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(); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementRFC6020Support.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementRFC6020Support.java index 7ac2bc4256..434e5ab6f0 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementRFC6020Support.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementRFC6020Support.java @@ -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 diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementRFC7950Support.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementRFC7950Support.java index a1ce07c52a..693c06991e 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementRFC7950Support.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementRFC7950Support.java @@ -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 index 47802f2d55..0000000000 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SupportedExtensionsMapping.java +++ /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> type; - private final Class> effectiveType; - private final QName name; - private final QName argument; - private final boolean yinElement; - - SupportedExtensionsMapping(final String namespace, final String revision, - final Class> declared, - final Class> 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> declared, - final Class> 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> getDeclaredRepresentationClass() { - return type; - } - - @Nonnull - @Override - public Class> getEffectiveRepresentationClass() { - return effectiveType; - } - - @Override - public boolean isArgumentYinElement() { - return yinElement; - } -} diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangInferencePipeline.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangInferencePipeline.java index d2f696f05e..6187896874 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangInferencePipeline.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangInferencePipeline.java @@ -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;