assertVerificationException(e,
"SchemaResolutionException{unsatisfiedImports={RevisionSourceIdentifier"
+ " [name=private@2013-02-27]=[ModuleImportImpl"
- + " [name=unknownDep, revision=2013-02-27, semanticVersion=0.0.0]]}");
+ + " [name=unknownDep, revision=2013-02-27, semanticVersion=null]]}");
return;
}
}
import java.net.URI;
import java.util.Date;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
*/
@Immutable
public interface Module extends DataNodeContainer, NotificationNodeContainer {
- /**
- * Default semantic version of Module.
- */
- SemVer DEFAULT_SEMANTIC_VERSION = SemVer.create(0, 0, 0);
-
/**
* Returns the name of the module which is specified as argument of YANG
* {@link Module <b><font color="#FF0000">module</font></b>} keyword.
* (urn:opendaylight:yang:extension:semantic-version?revision
* =2016-02-02)semantic-version statement
*/
- // FIXME: Should return Optional<SemVer>
- default SemVer getSemanticVersion() {
- return Module.DEFAULT_SEMANTIC_VERSION;
- }
+ Optional<SemVer> getSemanticVersion();
/**
* Returns the prefix of the module.
import java.net.URI;
import java.util.Date;
+import java.util.Optional;
import org.opendaylight.yangtools.concepts.SemVer;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
*
* @return URI format of the namespace of the module
*/
- // FIXME: 2.0.0: should be a default method calling getQNameModule().getNamespace()
+ // FIXME: this should not be here
URI getNamespace();
/**
* YANG {@link Module <b><font color="#339900">revison</font></b>}
* keyword
*/
- // FIXME: BUG-4688: should return Revision
- // FIXME: BUG-4688: should be a default method calling getQNameModule().getRevision().get()
+ // FIXME: BUG-4688: should return Optional<Revision>
+ // FIXME: this should not be here
Date getRevision();
/**
- * Returns the semantic version of yang module.
+ * Returns the semantic version of YANG module.
*
* <p>
* If the semantic version is not specified, default semantic version of
* (urn:opendaylight:yang:extension:semantic-version?revision
* =2016-02-02)semantic-version statement
*/
- default SemVer getSemanticVersion() {
- return Module.DEFAULT_SEMANTIC_VERSION;
- }
+ // FIXME: this should not be here
+ Optional<SemVer> getSemanticVersion();
}
package org.opendaylight.yangtools.yang.model.api;
import java.util.Date;
+import java.util.Optional;
import org.opendaylight.yangtools.concepts.SemVer;
/**
* Interface describing YANG 'import' statement.
*
* <p>
- * The import statement makes definitions from one module available inside
- * another module or submodule.
+ * The import statement makes definitions from one module available inside another module or submodule.
*/
public interface ModuleImport extends DocumentedNode {
/**
*
* @return Semantic version of module to import
*/
- default SemVer getSemanticVersion() {
- return Module.DEFAULT_SEMANTIC_VERSION;
- }
+ Optional<SemVer> getSemanticVersion();
/**
* Returns the prefix associated with the imported module.
import java.util.Objects;
import java.util.Optional;
import org.opendaylight.yangtools.concepts.SemVer;
-import org.opendaylight.yangtools.yang.model.api.Module;
/**
* YANG Schema source identifier with specified semantic version.
*/
SemVerSourceIdentifier(final String name, final Optional<String> formattedRevision, final SemVer semVer) {
super(name, formattedRevision);
- this.semVer = semVer == null ? Module.DEFAULT_SEMANTIC_VERSION : semVer;
+ this.semVer = semVer;
}
/**
}
/**
- * Returns semantic version of source or
- * {@link Module#DEFAULT_SEMANTIC_VERSION} if semantic version was not
- * supplied.
+ * Returns semantic version of source if it was specified.
*
- * @return revision of source or {@link Module#DEFAULT_SEMANTIC_VERSION} if
- * revision was not supplied.
+ * @return revision of source.
*/
- public SemVer getSemanticVersion() {
- return semVer;
+ public Optional<SemVer> getSemanticVersion() {
+ return Optional.ofNullable(semVer);
}
/**
import java.util.Optional;
import org.opendaylight.yangtools.concepts.SemVer;
import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
/**
* ModuleIdentifier that can be used for indexing/searching by name.
* Name is only non-null attribute.
* Equality check on namespace and revision is only triggered if they are non-null
+ *
+ * @deprecated This class will be removed with {@link ModuleIdentifier}
*/
+@Deprecated
@Beta
public final class ModuleIdentifierImpl implements ModuleIdentifier {
private final QNameModule qnameModule;
final SemVer semVer) {
this.name = checkNotNull(name);
this.qnameModule = QNameModule.create(namespace.orElse(null), revision.orElse(null));
- this.semVer = (semVer == null ? Module.DEFAULT_SEMANTIC_VERSION : semVer);
+ this.semVer = semVer;
}
public static ModuleIdentifier create(final String name, final Optional<URI> namespace,
final Optional<Date> revision) {
- return create(name, namespace, revision, Module.DEFAULT_SEMANTIC_VERSION);
+ return create(name, namespace, revision, null);
}
public static ModuleIdentifier create(final String name, final Optional<URI> namespace,
}
@Override
- public SemVer getSemanticVersion() {
- return semVer;
+ public Optional<SemVer> getSemanticVersion() {
+ return Optional.ofNullable(semVer);
}
@Override
import java.util.Date;
import java.util.HashSet;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import org.junit.BeforeClass;
import org.junit.Test;
}
@Override
- public SemVer getSemanticVersion() {
+ public Optional<SemVer> getSemanticVersion() {
return module.getSemanticVersion();
}
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
+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.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.ModuleImport;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
final String importedModuleName = Utils.stringFromStringContext(subStatementContext.argument(),
getReference(sourceName, subStatementContext));
final Date revisionDate = revisionDateStr == null ? null : QName.parseRevision(revisionDateStr);
- final Optional<SemVer> importSemVer = Optional.ofNullable(findSemanticVersion(subStatementContext,
- sourceName));
+ final SemVer importSemVer = findSemanticVersion(subStatementContext, sourceName);
result.add(new ModuleImportImpl(importedModuleName, revisionDate, importSemVer));
}
}
@Override
public String toString() {
return "Module [name=" + getName() + ", revision=" + getRevision()
- + ", semanticVersion=" + getSemanticVersion().orElse(Module.DEFAULT_SEMANTIC_VERSION)
+ + ", semanticVersion=" + getSemanticVersion().orElse(null)
+ ", dependencies=" + getDependencies()
+ "]";
}
private final String name;
ModuleImportImpl(final String moduleName, final Date revision) {
- this(moduleName, revision, Optional.empty());
+ this(moduleName, revision, null);
}
- ModuleImportImpl(final String moduleName, final Date revision, final Optional<SemVer> semVer) {
+ ModuleImportImpl(final String moduleName, @Nullable final Date revision, @Nullable final SemVer semVer) {
this.name = requireNonNull(moduleName, "Module name must not be null.");
this.revision = revision;
- this.semVer = semVer.orElse(Module.DEFAULT_SEMANTIC_VERSION);
+ this.semVer = semVer;
}
@Override
public String getModuleName() {
- return this.name;
+ return name;
}
@Override
public Date getRevision() {
- return this.revision;
+ return revision;
}
@Override
- public SemVer getSemanticVersion() {
- return this.semVer;
+ public Optional<SemVer> getSemanticVersion() {
+ return Optional.ofNullable(semVer);
}
@Override
@Override
public String toString() {
return "ModuleImportImpl [name=" + name + ", revision="
- + QName.formattedRevision(revision) + ", semanticVersion=" + getSemanticVersion() + "]";
+ + QName.formattedRevision(revision) + ", semanticVersion=" + semVer + "]";
}
}
}
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Optional;
import java.util.Set;
import org.opendaylight.yangtools.concepts.SemVer;
import org.opendaylight.yangtools.yang.model.api.ModuleImport;
}
@Override
- public SemVer getSemanticVersion() {
- return null;
+ public Optional<SemVer> getSemanticVersion() {
+ return Optional.empty();
}
@Override
public String toString() {
- return MoreObjects.toStringHelper(this)
- .add("parent", parent)
- .toString();
+ return MoreObjects.toStringHelper(this).add("parent", parent).toString();
}
}
}
return null;
}
- private static boolean isCompatible(final SemVer moduleSemVer, final SemVer importSemVer) {
- return moduleSemVer.getMajor() == importSemVer.getMajor() && moduleSemVer.compareTo(importSemVer) >= 0;
+ private static boolean isCompatible(final Optional<SemVer> moduleSemVer, final Optional<SemVer> importSemVer) {
+ if (!importSemVer.isPresent()) {
+ // Import does not care about the version
+ return true;
+ }
+ if (!moduleSemVer.isPresent()) {
+ // Modules which do not declare a semantic version are incompatible with imports which do
+ return false;
+ }
+
+ final SemVer modVer = moduleSemVer.get();
+ final SemVer impVer = importSemVer.get();
+ return modVer.getMajor() == impVer.getMajor() && modVer.compareTo(impVer) >= 0;
}
@Override
protected boolean isKnown(final Collection<SourceIdentifier> haystack, final ModuleImport mi) {
final String rev = mi.getRevision() != null ? QName.formattedRevision(mi.getRevision()) : null;
final SemVerSourceIdentifier msi = SemVerSourceIdentifier.create(mi.getModuleName(), Optional.ofNullable(rev),
- mi.getSemanticVersion());
+ mi.getSemanticVersion().orElse(null));
// Quick lookup
if (haystack.contains(msi)) {
import java.util.Optional;
import org.opendaylight.yangtools.concepts.SemVer;
import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
-import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
if (importedModuleEntry == null) {
throw new InferenceException(stmt.getStatementSourceReference(),
"Unable to find module compatible with requested import [%s(%s)].",
- impIdentifier.getName(), getRequestedImportVersion(stmt));
+ impIdentifier.getName(), getRequestedImportVersionString(stmt));
}
final StmtContext<?, ?, ?> importedModule = importedModuleEntry.getValue();
if (failed.contains(imported)) {
throw new InferenceException(stmt.getStatementSourceReference(),
"Unable to find module compatible with requested import [%s(%s)].",
- impIdentifier.getName(), getRequestedImportVersion(stmt));
+ impIdentifier.getName(), getRequestedImportVersionString(stmt));
}
}
});
}
- private static SemVer getRequestedImportVersion(final StmtContext<?, ?, ?> impStmt) {
- SemVer requestedImportVersion = impStmt.getFromNamespace(SemanticVersionNamespace.class, impStmt);
- if (requestedImportVersion == null) {
- requestedImportVersion = Module.DEFAULT_SEMANTIC_VERSION;
- }
- return requestedImportVersion;
+ private static Optional<SemVer> getRequestedImportVersion(final StmtContext<?, ?, ?> stmt) {
+ return Optional.ofNullable(stmt.getFromNamespace(SemanticVersionNamespace.class, stmt));
+ }
+
+ private static String getRequestedImportVersionString(final StmtContext<?, ?, ?> stmt) {
+ return getRequestedImportVersion(stmt).map(SemVer::toString).orElse("<any");
}
private static Entry<SemVer, StmtContext<?, ?, ?>> findRecentCompatibleModuleEntry(final String moduleName,
return null;
}
- final SemVer requestedImportVersion = getRequestedImportVersion(impStmt);
- allRelevantModulesMap = allRelevantModulesMap.subMap(requestedImportVersion, true,
- SemVer.create(requestedImportVersion.getMajor() + 1), false);
- if (!allRelevantModulesMap.isEmpty()) {
- return allRelevantModulesMap.lastEntry();
+ final Optional<SemVer> optImportVer = getRequestedImportVersion(impStmt);
+ if (optImportVer.isPresent()) {
+ final SemVer importVer = optImportVer.get();
+ allRelevantModulesMap = allRelevantModulesMap.subMap(importVer, true,
+ SemVer.create(importVer.getMajor() + 1), false);
}
- return null;
+ return allRelevantModulesMap.lastEntry();
}
private static ModuleIdentifier getImportedModuleIdentifier(
import org.opendaylight.yangtools.concepts.SemVer;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
-import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
}
}
+ private static int compareNullableSemVer(final SemVer ver1, final SemVer ver2) {
+ if (ver1 == null) {
+ return ver2 == null ? 0 : -1;
+ }
+
+ return ver2 == null ? 1 : ver1.compareTo(ver2);
+ }
+
private static void addToSemVerModuleNamespace(
final Mutable<String, ModuleStatement, EffectiveStatement<String, ModuleStatement>> stmt) {
final String moduleName = stmt.getStatementArgument();
NavigableMap<SemVer, StmtContext<?, ?, ?>> modulesMap = stmt.getFromNamespace(
SemanticVersionModuleNamespace.class, moduleName);
if (modulesMap == null) {
- modulesMap = new TreeMap<>();
- }
- SemVer moduleSemVer = stmt.getFromNamespace(SemanticVersionNamespace.class, stmt);
- if (moduleSemVer == null) {
- moduleSemVer = Module.DEFAULT_SEMANTIC_VERSION;
+ modulesMap = new TreeMap<>(ModuleStatementSupport::compareNullableSemVer);
}
+ final SemVer moduleSemVer = stmt.getFromNamespace(SemanticVersionNamespace.class, stmt);
modulesMap.put(moduleSemVer, stmt);
stmt.addToNs(SemanticVersionModuleNamespace.class, moduleName, modulesMap);
}
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
final OpenconfigVersionEffectiveStatementImpl semanticVersionStmt =
firstEffective(OpenconfigVersionEffectiveStatementImpl.class);
- this.semanticVersion = semanticVersionStmt == null ? DEFAULT_SEMANTIC_VERSION : semanticVersionStmt.argument();
+ this.semanticVersion = semanticVersionStmt == null ? null : semanticVersionStmt.argument();
final OrganizationEffectiveStatementImpl organizationStmt =
firstEffective(OrganizationEffectiveStatementImpl.class);
}
@Override
- public SemVer getSemanticVersion() {
- return semanticVersion;
+ public Optional<SemVer> getSemanticVersion() {
+ return Optional.ofNullable(semanticVersion);
}
@Override
import com.google.common.base.MoreObjects;
import java.util.Date;
import java.util.Objects;
+import java.util.Optional;
import org.opendaylight.yangtools.concepts.SemVer;
import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
import org.opendaylight.yangtools.yang.model.api.ModuleImport;
import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement;
final RevisionDateEffectiveStatementImpl revisionDateStmt = firstEffective(
RevisionDateEffectiveStatementImpl.class);
this.revision = revisionDateStmt == null ? getImportedRevision(ctx) : revisionDateStmt.argument();
- this.semVer = Module.DEFAULT_SEMANTIC_VERSION;
+ this.semVer = null;
} else {
final ModuleIdentifier importedModuleIdentifier = ctx.getFromNamespace(
ImpPrefixToSemVerModuleIdentifier.class, prefix);
revision = importedModuleIdentifier.getRevision();
- semVer = importedModuleIdentifier.getSemanticVersion();
+ semVer = importedModuleIdentifier.getSemanticVersion().orElse(null);
}
final DescriptionEffectiveStatementImpl descriptionStmt = firstEffective(
}
@Override
- public SemVer getSemanticVersion() {
- return semVer;
+ public Optional<SemVer> getSemanticVersion() {
+ return Optional.ofNullable(semVer);
}
@Override
package org.opendaylight.yangtools.yang.parser.util;
import static java.util.Objects.requireNonNull;
-import static org.opendaylight.yangtools.yang.model.api.Module.DEFAULT_SEMANTIC_VERSION;
import com.google.common.annotations.Beta;
import java.util.Optional;
private static SemVerSourceIdentifier getSemVerSourceId(final YangModelDependencyInfo depInfo) {
return depInfo.getFormattedRevision() == null
- ? SemVerSourceIdentifier.create(depInfo.getName(),
- depInfo.getSemanticVersion().orElse(DEFAULT_SEMANTIC_VERSION))
+ ? SemVerSourceIdentifier.create(depInfo.getName(), depInfo.getSemanticVersion().orElse(null))
: SemVerSourceIdentifier.create(depInfo.getName(), depInfo.getFormattedRevision(),
- depInfo.getSemanticVersion().orElse(DEFAULT_SEMANTIC_VERSION));
+ depInfo.getSemanticVersion().orElse(null));
}
}
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
Module bar = StmtTestUtils.findImportedModule(context, foo, "bar");
- assertEquals(SemVer.valueOf("5.5.5"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("5.5.5"), bar.getSemanticVersion().get());
}
@Test
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
Module bar = StmtTestUtils.findImportedModule(context, foo, "bar");
- assertEquals(SemVer.valueOf("5.6.5"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("5.6.5"), bar.getSemanticVersion().get());
}
@Test
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
Module bar = StmtTestUtils.findImportedModule(context, foo, "bar");
- assertEquals(SemVer.valueOf("5.5.6"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("5.5.6"), bar.getSemanticVersion().get());
}
@Test
URI.create("http://openconfig.net/yang/openconfig-ext")).iterator().next();
// check module versions
- assertEquals(SemVer.valueOf("1.3.95"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("1.50.2"), foo.getSemanticVersion());
+ assertEquals(SemVer.valueOf("1.3.95"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("1.50.2"), foo.getSemanticVersion().get());
final Module bar = StmtTestUtils.findImportedModule(context, foo, "bar");
- assertEquals(SemVer.valueOf("1.2.6"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("1.2.6"), bar.getSemanticVersion().get());
final Module foobar = StmtTestUtils.findImportedModule(context, bar, "foobar");
- assertEquals(SemVer.valueOf("2.26.465"), foobar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("2.26.465"), foobar.getSemanticVersion().get());
// check imported components
assertNotNull("This component should be present", SchemaContextUtil.findDataSchemaNode(context, foo,
"http://openconfig.net/yang/openconfig-ext")).iterator().next();
// check module versions
- assertEquals(SemVer.valueOf("2.5.50"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("2.32.2"), foo.getSemanticVersion());
+ assertEquals(SemVer.valueOf("2.5.50"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("2.32.2"), foo.getSemanticVersion().get());
final Module bar = StmtTestUtils.findImportedModule(context, foo, "bar");
- assertEquals(SemVer.valueOf("4.9.8"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("4.9.8"), bar.getSemanticVersion().get());
final Module foobar = StmtTestUtils.findImportedModule(context, bar, "foobar");
- assertEquals(SemVer.valueOf("7.13.99"), foobar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("7.13.99"), foobar.getSemanticVersion().get());
// check used augmentations
assertNotNull("This component should be present", SchemaContextUtil.findDataSchemaNode(context, bar,
import static org.junit.Assert.fail;
import java.net.URI;
+import java.util.Optional;
import org.junit.Test;
import org.opendaylight.yangtools.concepts.SemVer;
import org.opendaylight.yangtools.yang.model.api.Module;
Module foo = context.findModuleByNamespace(new URI("foo")).iterator().next();
Module bar = context.findModuleByNamespace(new URI("bar")).iterator().next();
- assertEquals(SemVer.valueOf("0.0.0"), foo.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.0.0"), bar.getSemanticVersion());
+ assertEquals(Optional.empty(), foo.getSemanticVersion());
+ assertEquals(Optional.empty(), bar.getSemanticVersion());
}
@Test
Module foo = context.findModuleByNamespace(new URI("foo")).iterator().next();
Module bar = context.findModuleByNamespace(new URI("bar")).iterator().next();
- assertEquals(SemVer.valueOf("0.0.0"), foo.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.99.99"), bar.getSemanticVersion());
+ assertEquals(Optional.empty(), foo.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.99.99"), bar.getSemanticVersion().get());
}
@Test
fail("Test should fail due to invalid openconfig version");
} catch (ReactorException e) {
assertTrue(e.getCause().getMessage()
- .startsWith("Unable to find module compatible with requested import [bar(0.0.0)]."));
+ .startsWith("Unable to find module compatible with requested import [bar(0.0.1)]."));
}
}
}
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion().get());
}
@Test
.iterator().next();
Module bar = StmtTestUtils.findImportedModule(context, foo, "bar");
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion().get());
}
}
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("1.0.0"), semVer.getSemanticVersion());
+ assertEquals(SemVer.valueOf("1.0.0"), semVer.getSemanticVersion().get());
}
@Test
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
Module bar = findImportedModule(context, foo, "bar");
- assertEquals(SemVer.valueOf("0.9.5"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.9.5"), bar.getSemanticVersion().get());
}
@Test
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
Module bar = findImportedModule(context, foo, "bar");
- assertEquals(SemVer.valueOf("5.5.6"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("5.5.6"), bar.getSemanticVersion().get());
}
private static Module findImportedModule(final SchemaContext context, final Module rootModule,
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion().get());
}
@Test
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion().get());
}
@Test
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion().get());
}
}
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion().get());
}
@Test
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion().get());
}
@Test
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
}
@Test
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
Module bar = StmtTestUtils.findImportedModule(context, foo, "bar");
- assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion().get());
}
@Test
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
Module bar = StmtTestUtils.findImportedModule(context, foo, "bar");
- assertEquals(SemVer.valueOf("0.10.4"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.10.4"), bar.getSemanticVersion().get());
}
@Test
Module semVer = context.findModuleByNamespace(new URI("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("2016.1.1"), foo.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("2016.1.1"), foo.getSemanticVersion().get());
Module bar = StmtTestUtils.findImportedModule(context, foo, "bar");
- assertEquals(SemVer.valueOf("2016.4.6"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("2016.4.6"), bar.getSemanticVersion().get());
QName root = QName.create("foo", "2016-01-01", "foo-root");
QName container20160404 = QName.create("foo", "2016-01-01", "con20160404");
Module semVer = context.findModuleByNamespace(URI.create("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion().get());
}
@Test
Module semVer = context.findModuleByNamespace(URI.create("http://openconfig.net/yang/openconfig-ext"))
.iterator().next();
- assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion());
- assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.0.1"), semVer.getSemanticVersion().get());
+ assertEquals(SemVer.valueOf("0.1.1"), foo.getSemanticVersion().get());
Module bar = StmtTestUtils.findImportedModule(context, foo, "bar");
- assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion());
+ assertEquals(SemVer.valueOf("0.1.2"), bar.getSemanticVersion().get());
}
@Test
public void basicImportErrTest1() throws URISyntaxException, SAXException, IOException {
try {
- StmtTestUtils.parseYinSources("/openconfig-version/yin-input/basic-import-invalid", StatementParserMode.SEMVER_MODE);
+ StmtTestUtils.parseYinSources("/openconfig-version/yin-input/basic-import-invalid",
+ StatementParserMode.SEMVER_MODE);
fail("Test should fail due to invalid openconfig version");
} catch (ReactorException e) {
assertTrue(e.getCause().getMessage()
yang-version 1;
import openconfig-extensions { prefix oc-ext; revision-date 2017-01-29; oc-ext:openconfig-version "0.0.1"; }
- import bar { prefix bar; revision-date 2016-01-31; }
+ import bar { prefix bar; revision-date 2016-01-31; oc-ext:openconfig-version "0.0.1"; }
revision "2016-02-01" {
description "Initial version";
yang-version 1;
import openconfig-extensions { prefix oc-ext; revision-date 2017-01-29; oc-ext:openconfig-version "0.0.1"; }
- import bar { prefix bar; }
+ import bar { prefix bar; oc-ext:openconfig-version "0.0.1"; }
revision "2016-02-01" {
description "Initial version";