import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
import org.apache.maven.repository.RepositorySystem;
-import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
}
static SourceIdentifier moduleToIdentifier(final Module module) {
- final QNameModule mod = module.getQNameModule();
- final String rev = mod.getFormattedRevision();
- return rev != null ? RevisionSourceIdentifier.create(module.getName(), rev)
- : RevisionSourceIdentifier.create(module.getName());
+ return RevisionSourceIdentifier.create(module.getName(), module.getRevision());
}
}
import com.google.common.annotations.Beta;
import java.util.Objects;
import java.util.Optional;
+import javax.annotation.Nullable;
+import org.opendaylight.yangtools.yang.common.Revision;
/**
* YANG Schema revision source identifier.
*
* @param name
* Name of schema
- * @param formattedRevision
- * Revision of source in format YYYY-mm-dd
+ * @param revision
+ * Revision of source, may be null
*/
- RevisionSourceIdentifier(final String name, final String formattedRevision) {
- super(requireNonNull(name), requireNonNull(formattedRevision));
+ RevisionSourceIdentifier(final String name, @Nullable final Revision revision) {
+ super(requireNonNull(name), revision);
}
/**
* @param name
* Name of schema
* @param formattedRevision
- * Revision of source in format YYYY-mm-dd. If not present,
- * default value will be used.
+ * Revision of source, potentially not present
*/
- private RevisionSourceIdentifier(final String name, final Optional<String> formattedRevision) {
- super(name, formattedRevision);
+ private RevisionSourceIdentifier(final String name, final Optional<Revision> revision) {
+ super(name, revision);
}
/**
* Revision of source in format YYYY-mm-dd. If not present,
* default value will be used.
*/
- public static RevisionSourceIdentifier create(final String moduleName,
- final Optional<String> revision) {
+ public static RevisionSourceIdentifier create(final String moduleName, final Optional<Revision> revision) {
return new RevisionSourceIdentifier(moduleName, revision);
}
* @param moduleName
* Name of schema
* @param revision
- * Revision of source in format YYYY-mm-dd
+ * Revision of source, may be null
*/
- public static RevisionSourceIdentifier create(final String moduleName, final String revision) {
+ public static RevisionSourceIdentifier create(final String moduleName, @Nullable final Revision revision) {
return new RevisionSourceIdentifier(moduleName, revision);
}
final StringBuilder sb = new StringBuilder("RevisionSourceIdentifier [name=");
sb.append(getName());
- final String rev = getRevision();
- if (rev != null) {
- sb.append('@').append(rev);
+ final Optional<Revision> rev = getRevision();
+ if (rev.isPresent()) {
+ sb.append('@').append(rev.get());
}
return sb.append(']').toString();
}
import java.util.Objects;
import java.util.Optional;
import org.opendaylight.yangtools.concepts.SemVer;
+import org.opendaylight.yangtools.yang.common.Revision;
/**
* YANG Schema source identifier with specified semantic version.
*
* @param name
* Name of schema
- * @param formattedRevision
- * Optional of source revision in format YYYY-mm-dd. If not
- * present, default value will be used.
+ * @param revision
+ * Revision of source, possibly not present
* @param semVer
* semantic version of source
*/
- SemVerSourceIdentifier(final String name, final Optional<String> formattedRevision, final SemVer semVer) {
- super(name, formattedRevision);
+ SemVerSourceIdentifier(final String name, final Optional<Revision> revision, final SemVer semVer) {
+ super(name, revision);
this.semVer = semVer;
}
* @param semVer
* semantic version of source
*/
- public static SemVerSourceIdentifier create(final String moduleName, final String revision,
+ public static SemVerSourceIdentifier create(final String moduleName, final Revision revision,
final SemVer semVer) {
- return new SemVerSourceIdentifier(moduleName, Optional.of(revision), semVer);
+ return new SemVerSourceIdentifier(moduleName, Optional.ofNullable(revision), semVer);
}
/**
* @param semVer
* semantic version of source
*/
- public static SemVerSourceIdentifier create(final String moduleName,
- final Optional<String> revision, final SemVer semVer) {
+ public static SemVerSourceIdentifier create(final String moduleName, final Optional<Revision> revision,
+ final SemVer semVer) {
return new SemVerSourceIdentifier(moduleName, revision, semVer);
}
import com.google.common.collect.Interner;
import com.google.common.collect.Interners;
import java.util.Optional;
+import javax.annotation.Nullable;
import org.opendaylight.yangtools.concepts.Identifier;
import org.opendaylight.yangtools.concepts.Immutable;
+import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.common.YangConstants;
/**
*/
@Beta
public abstract class SourceIdentifier implements Identifier, Immutable {
- /**
- * Default revision for sources without specified revision. This should be used for comparisons
- * based on revision when a SourceIdentifier does not have a revision.
- */
- public static final String NOT_PRESENT_FORMATTED_REVISION = "0000-00-00";
-
private static final Interner<SourceIdentifier> INTERNER = Interners.newWeakInterner();
+ private static final long serialVersionUID = 2L;
- private static final long serialVersionUID = 1L;
- private final String revision;
+ private final Revision revision;
private final String name;
/**
* Name of schema
*/
SourceIdentifier(final String name) {
- this.name = requireNonNull(name);
- this.revision = null;
+ this(name, (Revision) null);
}
/**
*
* @param name
* Name of schema
- * @param formattedRevision
- * Revision of source in format YYYY-mm-dd
+ * @param revision
+ * Revision of source, may be null
*/
- SourceIdentifier(final String name, final String formattedRevision) {
+ SourceIdentifier(final String name, @Nullable final Revision revision) {
this.name = requireNonNull(name);
- this.revision = requireNonNull(formattedRevision);
+ this.revision = revision;
}
/**
*
* @param name
* Name of schema
- * @param formattedRevision
- * Revision of source in format YYYY-mm-dd. If not present,
- * default value will be used.
+ * @param revision
+ * Revision of source, possibly not present
*/
- SourceIdentifier(final String name, final Optional<String> formattedRevision) {
- this.name = requireNonNull(name);
- this.revision = formattedRevision.orElse(null);
+ SourceIdentifier(final String name, final Optional<Revision> revision) {
+ this(name, revision.orElse(null));
}
/**
*
* @return revision of source or null if revision was not supplied.
*/
- // FIXME: version 2.0.0: this should return Optional<String>
- public String getRevision() {
- return revision;
+ public Optional<Revision> getRevision() {
+ return Optional.ofNullable(revision);
}
/**
* @return Filename for this source identifier.
*/
public String toYangFilename() {
- final String rev = NOT_PRESENT_FORMATTED_REVISION.equals(revision) ? null : revision;
- return toYangFileName(name, Optional.ofNullable(rev));
+ return toYangFileName(name, Optional.ofNullable(revision));
}
/**
*
* @return Filename for this source identifier.
*/
- public static String toYangFileName(final String moduleName, final Optional<String> revision) {
+ public static String toYangFileName(final String moduleName, final Optional<Revision> revision) {
StringBuilder filename = new StringBuilder(moduleName);
if (revision.isPresent()) {
filename.append('@');
import java.io.InputStream;
import java.net.URL;
import java.util.Map.Entry;
-import java.util.Optional;
import javax.annotation.Nonnull;
+import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.common.YangConstants;
import org.opendaylight.yangtools.yang.common.YangNames;
final String baseName = name.substring(0, name.length() - YangConstants.RFC6020_YANG_FILE_EXTENSION.length());
final Entry<String, String> parsed = YangNames.parseFilename(baseName);
- return RevisionSourceIdentifier.create(parsed.getKey(), Optional.ofNullable(parsed.getValue()));
+ return RevisionSourceIdentifier.create(parsed.getKey(), parsed.getValue() == null ? null
+ : Revision.valueOf(parsed.getValue()));
}
/**
import com.google.common.base.MoreObjects;
import com.google.common.base.MoreObjects.ToStringHelper;
-import java.util.Optional;
import javax.annotation.Nonnull;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.common.YangConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
checkArgument(dateAttr != null, "No revision statement argument found in %s", revisionStmt);
final SourceIdentifier parsedId = RevisionSourceIdentifier.create(nameAttr.getValue(),
- Optional.of(dateAttr.getValue()));
+ Revision.valueOf(dateAttr.getValue()));
final SourceIdentifier id;
if (!parsedId.equals(identifier)) {
LOG.debug("Changed identifier from {} to {}", identifier, parsedId);
import java.io.InputStream;
import java.net.URL;
import java.util.Map.Entry;
-import java.util.Optional;
import javax.annotation.Nonnull;
import org.opendaylight.yangtools.concepts.Delegator;
+import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.common.YangConstants;
import org.opendaylight.yangtools.yang.common.YangNames;
import org.slf4j.Logger;
}
final Entry<String, String> parsed = YangNames.parseFilename(baseName);
- return RevisionSourceIdentifier.create(parsed.getKey(), Optional.ofNullable(parsed.getValue()));
+ return RevisionSourceIdentifier.create(parsed.getKey(), parsed.getValue() == null ? null
+ : Revision.valueOf(parsed.getValue()));
}
@Override
import static java.util.Objects.requireNonNull;
import com.google.common.base.MoreObjects.ToStringHelper;
-import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
}
static File sourceIdToFile(final SourceIdentifier identifier, final File storageDirectory) {
- final String rev = identifier.getRevision();
+ final Optional<Revision> rev = identifier.getRevision();
final File file;
- if (Strings.isNullOrEmpty(rev)) {
+ if (!rev.isPresent()) {
+ // FIXME: this does not look right
file = findFileWithNewestRev(identifier, storageDirectory);
} else {
file = new File(storageDirectory, identifier.toYangFilename());
if (matcher.matches()) {
final String moduleName = matcher.group("moduleName");
final String revision = matcher.group("revision");
- return Optional.of(RevisionSourceIdentifier.create(moduleName, Optional.ofNullable(revision)));
+ return Optional.of(RevisionSourceIdentifier.create(moduleName, revision == null ? Optional.empty()
+ : Optional.of(Revision.valueOf(revision))));
}
return Optional.empty();
}
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+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;
import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
@Test
public void sourceIdToFileEmptyRevWithEmptyDir() {
- final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test", "");
+ final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test");
final File sourceIdToFile = FilesystemSchemaSourceCache.sourceIdToFile(sourceIdentifier, this.storageDir);
final FilesystemSchemaSourceCache<YangTextSchemaSource> cache = new FilesystemSchemaSourceCache<>(this.registry,
YangTextSchemaSource.class, sourceIdToFile);
final YangTextSchemaSource source = new TestingYangSource("test", "2013-12-12", content);
cache.offer(source);
- final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test", "");
+ final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test");
final File sourceIdToFile = FilesystemSchemaSourceCache.sourceIdToFile(sourceIdentifier,
this.storageDir);
Assert.assertNotNull(sourceIdToFile);
cache.offer(source);
cache.offer(source2);
- final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test", "");
+ final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test");
final File sourceIdToFile = FilesystemSchemaSourceCache.sourceIdToFile(sourceIdentifier, this.storageDir);
Assert.assertNotNull(sourceIdToFile);
final List<File> storedFiles = Arrays.asList(this.storageDir.listFiles());
final String content = "content1";
final YangTextSchemaSource source = new TestingYangSource("test", "2013-12-12", content);
cache.offer(source);
- final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test", "2013-12-12");
+ final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test",
+ Revision.valueOf("2013-12-12"));
final ListenableFuture<? extends YangTextSchemaSource> checked = cache.getSource(sourceIdentifier);
Assert.assertNotNull(checked);
final YangTextSchemaSource checkedGet = checked.get();
final String content = "content1";
final YangTextSchemaSource source = new TestingYangSource("test", "2013-12-12", content);
cache.offer(source);
- final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test1", "2012-12-12");
+ final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test1",
+ Revision.valueOf("2012-12-12"));
final ListenableFuture<? extends YangTextSchemaSource> checked = cache.getSource(sourceIdentifier);
Assert.assertNotNull(checked);
checked.get();
private final String content;
- protected TestingYangSource(final String name, final String revision, final String content) {
- super(RevisionSourceIdentifier.create(name, Optional.ofNullable(revision)));
+ TestingYangSource(final String name, final String revision, final String content) {
+ super(RevisionSourceIdentifier.create(name, revision == null ? Optional.empty() :
+ Optional.of(Revision.valueOf(revision))));
this.content = content;
}
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
+import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
final String content = "content";
final YangTextSchemaSource source = new TestingYangSource("test", "2012-12-12", content);
inMemorySchemaSourceCache.offer(source);
- final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test", "2012-12-12");
+ final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test",
+ Revision.valueOf("2012-12-12"));
final ListenableFuture<? extends YangSchemaSourceRepresentation> checkedSource = inMemorySchemaSourceCache
.getSource(sourceIdentifier);
Assert.assertNotNull(checkedSource);
public void inMemorySchemaSourceCacheNullGetSourcestest() throws Exception {
final InMemorySchemaSourceCache<YangSchemaSourceRepresentation> inMemorySchemaSourceCache =
InMemorySchemaSourceCache.createSoftCache(this.registry, REPRESENTATION);
- final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test", "2012-12-12");
+ final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test",
+ Revision.valueOf("2012-12-12"));
final ListenableFuture<? extends YangSchemaSourceRepresentation> checkedSource =
inMemorySchemaSourceCache.getSource(sourceIdentifier);
Assert.assertNotNull(checkedSource);
inMemorySchemaSourceCache.offer(source);
inMemorySchemaSourceCache2.offer(source);
- final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test", "2012-12-12");
+ final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("test",
+ Revision.valueOf("2012-12-12"));
final ListenableFuture<? extends YangSchemaSourceRepresentation> checkedSource =
inMemorySchemaSourceCache.getSource(sourceIdentifier);
final ListenableFuture<? extends SchemaSourceRepresentation> checkedSource2 =
private final String content;
protected TestingYangSource(final String name, final String revision, final String content) {
- super(RevisionSourceIdentifier.create(name, Optional.ofNullable(revision)));
+ super(RevisionSourceIdentifier.create(name, revision == null ? Optional.empty()
+ : Optional.of(Revision.valueOf(revision))));
this.content = content;
}
.getLocalName();
private final String name;
- private final String formattedRevision;
private final Revision revision;
- private final Optional<SemVer> semVer;
+ private final SemVer semVer;
private final ImmutableSet<ModuleImport> submoduleIncludes;
private final ImmutableSet<ModuleImport> moduleImports;
private final ImmutableSet<ModuleImport> dependencies;
final ImmutableSet<ModuleImport> includes,
final Optional<SemVer> semVer) {
this.name = name;
- this.formattedRevision = formattedRevision;
this.revision = formattedRevision == null ? null : Revision.valueOf(formattedRevision);
this.moduleImports = imports;
this.submoduleIncludes = includes;
this.dependencies = ImmutableSet.<ModuleImport>builder()
.addAll(moduleImports).addAll(submoduleIncludes).build();
- this.semVer = semVer;
+ this.semVer = semVer.orElse(null);
}
/**
* @return formatted revision string
*/
public String getFormattedRevision() {
- return formattedRevision;
+ return revision != null ? revision.toString() : null;
}
/**
* Returns revision.
*
- * @return revision
+ * @return revision, potentially null
*/
- Revision getRevision() {
- return revision;
+ public Optional<Revision> getRevision() {
+ return Optional.ofNullable(revision);
}
/**
* @return semantic version
*/
public Optional<SemVer> getSemanticVersion() {
- return semVer;
+ return Optional.ofNullable(semVer);
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime * result + Objects.hashCode(formattedRevision);
result = prime * result + Objects.hashCode(name);
+ result = prime * result + Objects.hashCode(revision);
result = prime * result + Objects.hashCode(semVer);
return result;
}
return false;
}
final YangModelDependencyInfo other = (YangModelDependencyInfo) obj;
- if (formattedRevision == null) {
- if (other.formattedRevision != null) {
- return false;
- }
- } else if (!formattedRevision.equals(other.formattedRevision)) {
- return false;
- }
- if (name == null) {
- if (other.name != null) {
- return false;
- }
- } else if (!name.equals(other.name)) {
- return false;
- }
- return Objects.equals(semVer, other.semVer);
+ return Objects.equals(name, other.name) && Objects.equals(revision, other.revision)
+ && Objects.equals(semVer, other.semVer);
}
/**
import java.util.Collection;
import java.util.Map;
-import java.util.Optional;
-import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ModuleImport;
import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
@Override
protected boolean isKnown(final Collection<SourceIdentifier> haystack, final ModuleImport mi) {
- final String rev = mi.getRevision() != null ? QName.formattedRevision(mi.getRevision()) : null;
- final SourceIdentifier msi = RevisionSourceIdentifier.create(mi.getModuleName(), Optional.ofNullable(rev));
+ final SourceIdentifier msi = RevisionSourceIdentifier.create(mi.getModuleName(), mi.getRevision());
// Quick lookup
if (haystack.contains(msi)) {
}
// Slow revision-less walk
- return rev == null && findWildcard(haystack, mi.getModuleName()) != null;
+ return !mi.getRevision().isPresent() && findWildcard(haystack, mi.getModuleName()) != null;
}
public static RevisionDependencyResolver create(final Map<SourceIdentifier, YangModelDependencyInfo> depInfo) {
import java.util.Map;
import java.util.Optional;
import org.opendaylight.yangtools.concepts.SemVer;
-import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ModuleImport;
import org.opendaylight.yangtools.yang.model.repo.api.SemVerSourceIdentifier;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
@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),
+ final SemVerSourceIdentifier msi = SemVerSourceIdentifier.create(mi.getModuleName(), mi.getRevision(),
mi.getSemanticVersion().orElse(null));
// Quick lookup
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import javax.annotation.Nonnull;
+import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
import org.opendaylight.yangtools.yang.model.repo.api.MissingSchemaSourceException;
LOG.info("Provided module name {} does not match actual text {}, corrected",
providedId.toYangFilename(), parsedId.toYangFilename());
} else {
- final String sourceRev = providedId.getRevision();
- final String astRev = parsedId.getRevision();
- if (sourceRev != null && !SourceIdentifier.NOT_PRESENT_FORMATTED_REVISION.equals(sourceRev)) {
+ final Optional<Revision> sourceRev = providedId.getRevision();
+ final Optional<Revision> astRev = parsedId.getRevision();
+ if (sourceRev.isPresent()) {
if (!sourceRev.equals(astRev)) {
LOG.info("Provided module revision {} does not match actual text {}, corrected",
providedId.toYangFilename(), parsedId.toYangFilename());
private static SourceSpecificContext getRequiredLibSource(final SourceIdentifier requiredSource,
final TreeBasedTable<String, Optional<Revision>, SourceSpecificContext> libSourcesTable) {
- return requiredSource.getRevision() == null ? getLatestRevision(libSourcesTable.row(requiredSource.getName()))
- : libSourcesTable.get(requiredSource.getName(),
- Optional.of(Revision.valueOf(requiredSource.getRevision())));
+ return requiredSource.getRevision().isPresent()
+ ? libSourcesTable.get(requiredSource.getName(), requiredSource.getRevision())
+ : getLatestRevision(libSourcesTable.row(requiredSource.getName()));
}
private static SourceSpecificContext getLatestRevision(final SortedMap<Optional<Revision>,
final StmtContext<Revision, ?, ?> revision = findFirstDeclaredSubstatement(stmt,
RevisionDateStatement.class);
return revision == null ? RevisionSourceIdentifier.create(stmt.getStatementArgument())
- : RevisionSourceIdentifier.create(stmt.getStatementArgument(), revision.rawStatementArgument());
+ : RevisionSourceIdentifier.create(stmt.getStatementArgument(), revision.getStatementArgument());
}
}
private static SemVerSourceIdentifier createSemVerModuleIdentifier(
final ModuleIdentifier importedModuleIdentifier, final SemVer semVer) {
- final String formattedRevision = importedModuleIdentifier.getRevision().map(Revision::toString)
- .orElse(null);
- return SemVerSourceIdentifier.create(importedModuleIdentifier.getName(), formattedRevision, semVer);
+ return SemVerSourceIdentifier.create(importedModuleIdentifier.getName(),
+ importedModuleIdentifier.getRevision(), semVer);
}
}
}
final StmtContext<Revision, ?, ?> revision = findFirstDeclaredSubstatement(stmt,
RevisionDateStatement.class);
stmt.addRequiredSource(revision == null ? RevisionSourceIdentifier.create(stmt.getStatementArgument())
- : RevisionSourceIdentifier.create(stmt.getStatementArgument(), revision.rawStatementArgument()));
+ : RevisionSourceIdentifier.create(stmt.getStatementArgument(), revision.getStatementArgument()));
}
@Override
final StmtContext<?, ?, ?> includedSubModuleContext = requiresCtxPrerequisite.resolve(ctx);
stmt.addToNs(IncludedModuleContext.class, revision != null
- ? RevisionSourceIdentifier.create(submoduleName, revision.rawStatementArgument())
+ ? RevisionSourceIdentifier.create(submoduleName, revision.getStatementArgument())
: RevisionSourceIdentifier.create(submoduleName), includedSubModuleContext);
stmt.addToNs(IncludedSubmoduleNameToModuleCtx.class, stmt.getStatementArgument(),
includedSubModuleContext);
*/
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@Override
public String toString() {
- return this.getClass().getSimpleName() + "["
- + "name=" + name
- + ", namespace=" + getNamespace()
- + ", revision=" + getQNameModule().getFormattedRevision()
- + ", prefix=" + prefix
- + ", yangVersion=" + yangVersion
- + "]";
+ return MoreObjects.toStringHelper(this).omitNullValues()
+ .add("name", name)
+ .add("namespace", getNamespace())
+ .add("revision", getRevision().orElse(null))
+ .add("prefix", prefix)
+ .add("yangVersion", yangVersion)
+ .toString();
}
@Override
} else {
final SemVerSourceIdentifier importedModuleIdentifier = ctx.getFromNamespace(
ImportPrefixToSemVerSourceIdentifier.class, prefix);
- revision = Revision.valueOf(importedModuleIdentifier.getRevision());
+ revision = importedModuleIdentifier.getRevision().orElse(null);
semVer = importedModuleIdentifier.getSemanticVersion().orElse(null);
}
private static SourceIdentifier getSourceId(final YangModelDependencyInfo depInfo) {
final String name = depInfo.getName();
return depInfo.getFormattedRevision() == null ? RevisionSourceIdentifier.create(name)
- : RevisionSourceIdentifier.create(name, depInfo.getFormattedRevision());
+ : RevisionSourceIdentifier.create(name, depInfo.getRevision());
}
private static SemVerSourceIdentifier getSemVerSourceId(final YangModelDependencyInfo depInfo) {
return depInfo.getFormattedRevision() == null
? SemVerSourceIdentifier.create(depInfo.getName(), depInfo.getSemanticVersion().orElse(null))
- : SemVerSourceIdentifier.create(depInfo.getName(), depInfo.getFormattedRevision(),
+ : SemVerSourceIdentifier.create(depInfo.getName(), depInfo.getRevision(),
depInfo.getSemanticVersion().orElse(null));
}
}
import java.util.HashMap;
import java.util.Map;
-import java.util.Optional;
import org.junit.Test;
import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
public void testModulesWithoutRevisionAndImport() throws Exception {
final Map<SourceIdentifier, YangModelDependencyInfo> map = new HashMap<>();
- addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.forResource(getClass(), "/no-revision/imported.yang"));
- addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.forResource(getClass(), "/no-revision/imported@2012-12-12.yang"));
- addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.forResource(getClass(), "/no-revision/top@2012-10-10.yang"));
+ addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.forResource(getClass(),
+ "/no-revision/imported.yang"));
+ addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.forResource(getClass(),
+ "/no-revision/imported@2012-12-12.yang"));
+ addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.forResource(getClass(),
+ "/no-revision/top@2012-10-10.yang"));
final DependencyResolver resolved = RevisionDependencyResolver.create(map);
addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.forResource(getClass(), "/model/baz.yang"));
final DependencyResolver resolved = RevisionDependencyResolver.create(map);
-
- assertEquals(4, resolved.getResolvedSources().size());
assertEquals(0, resolved.getUnresolvedSources().size());
assertEquals(0, resolved.getUnsatisfiedImports().size());
+ assertEquals(4, resolved.getResolvedSources().size());
}
- private static void addToMap(final Map<SourceIdentifier, YangModelDependencyInfo> map, final YangModelDependencyInfo yangModelDependencyInfo) {
+ private static void addToMap(final Map<SourceIdentifier, YangModelDependencyInfo> map,
+ final YangModelDependencyInfo yangModelDependencyInfo) {
map.put(getSourceId(yangModelDependencyInfo), yangModelDependencyInfo);
}
private static SourceIdentifier getSourceId(final YangModelDependencyInfo depInfo) {
final String name = depInfo.getName();
- return RevisionSourceIdentifier.create(name, Optional.ofNullable(depInfo.getFormattedRevision()));
+ return RevisionSourceIdentifier.create(name, depInfo.getRevision());
}
}
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceFilter;
final YangTextSchemaSource source1 = YangTextSchemaSource.forResource("/ietf/ietf-inet-types@2010-09-24.yang");
final YangTextSchemaSource source2 = YangTextSchemaSource.forResource("/ietf/iana-timezones@2012-07-09.yang");
- s1 = RevisionSourceIdentifier.create("ietf-inet-types", "2010-09-24");
- s2 = RevisionSourceIdentifier.create("iana-timezones", "2012-07-09");
+ s1 = RevisionSourceIdentifier.create("ietf-inet-types", Revision.valueOf("2010-09-24"));
+ s2 = RevisionSourceIdentifier.create("iana-timezones", Revision.valueOf("2012-07-09"));
final TextToASTTransformer transformer = TextToASTTransformer.create(repository, repository);
repository.registerSchemaSourceListener(transformer);
import java.util.concurrent.ExecutionException;
import javax.annotation.Nonnull;
import org.junit.Test;
+import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.repo.api.MissingSchemaSourceException;
import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
assertThat(Lists.transform(listener.registeredSources, PotentialSchemaSource::getSourceIdentifier),
both(hasItem(RevisionSourceIdentifier.create("test", Optional.empty())))
- .and(hasItem(RevisionSourceIdentifier.create("test", Optional.of("2012-12-12"))))
- .and(hasItem(RevisionSourceIdentifier.create("test", Optional.of("2013-12-12"))))
- .and(hasItem(RevisionSourceIdentifier.create("module", Optional.of("2010-12-12"))))
+ .and(hasItem(RevisionSourceIdentifier.create("test", Revision.valueOf("2012-12-12"))))
+ .and(hasItem(RevisionSourceIdentifier.create("test", Revision.valueOf("2013-12-12"))))
+ .and(hasItem(RevisionSourceIdentifier.create("module", Revision.valueOf("2010-12-12"))))
);
}
sharedSchemaRepository, YangTextSchemaSource.class, storageDir);
sharedSchemaRepository.registerSchemaSourceListener(cache);
- final SourceIdentifier runningId = RevisionSourceIdentifier.create("running", Optional.of("2012-12-12"));
+ final SourceIdentifier runningId = RevisionSourceIdentifier.create("running", Revision.valueOf("2012-12-12"));
sharedSchemaRepository.registerSchemaSource(sourceIdentifier -> Futures.immediateFuture(
new YangTextSchemaSource(runningId) {
import java.util.Optional;
import java.util.concurrent.ExecutionException;
import org.junit.Test;
+import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
assertEquals(3, yangTextSchemaContextResolver.getAvailableSources().size());
- final SourceIdentifier fooModuleId = RevisionSourceIdentifier.create("foo", "2016-09-26");
+ final SourceIdentifier fooModuleId = RevisionSourceIdentifier.create("foo", Revision.valueOf("2016-09-26"));
final ListenableFuture<YangTextSchemaSource> foo = yangTextSchemaContextResolver.getSource(fooModuleId);
assertTrue(foo.isDone());
assertEquals(fooModuleId, foo.get().getIdentifier());
- final SourceIdentifier barModuleId = RevisionSourceIdentifier.create("bar", "2016-09-26");
+ final SourceIdentifier barModuleId = RevisionSourceIdentifier.create("bar", Revision.valueOf("2016-09-26"));
final ListenableFuture<YangTextSchemaSource> bar = yangTextSchemaContextResolver.getSource(barModuleId);
assertTrue(bar.isDone());
assertEquals(barModuleId, bar.get().getIdentifier());
- final SourceIdentifier bazModuleId = RevisionSourceIdentifier.create("baz", "2016-09-26");
+ final SourceIdentifier bazModuleId = RevisionSourceIdentifier.create("baz", Revision.valueOf("2016-09-26"));
final ListenableFuture<YangTextSchemaSource> baz =
yangTextSchemaContextResolver.getSource(bazModuleId);
assertTrue(baz.isDone());
assertEquals(bazModuleId, baz.get().getIdentifier());
- final SourceIdentifier foobarModuleId = RevisionSourceIdentifier.create("foobar", "2016-09-26");
+ final SourceIdentifier foobarModuleId = RevisionSourceIdentifier.create("foobar",
+ Revision.valueOf("2016-09-26"));
final ListenableFuture<YangTextSchemaSource> foobar = yangTextSchemaContextResolver.getSource(foobarModuleId);
assertTrue(foobar.isDone());
try {
SchemaContext result = reactor.buildEffective();
assertNotNull(result);
final Module moduleByName = result.getModules().iterator().next();
- final QNameModule qNameModule = moduleByName.getQNameModule();
- final String formattedRevision = qNameModule.getFormattedRevision();
- assertEquals(formattedRevision, "2015-06-07");
+ assertEquals("2015-06-07", moduleByName.getQNameModule().getRevision().get().toString());
}
@Test
public void twoRevisionsTest() throws ReactorException {
- CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR
- .newBuild();
+ CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
reactor.addSources(TED_20130712, TED_20131021, IETF_TYPES);
@Before
public void init() throws Exception {
- final StatementStreamSource yangFile = sourceForResource("/types/custom-types-test@2012-4-4.yang");
+ final StatementStreamSource yangFile = sourceForResource("/types/custom-types-test@2012-04-04.yang");
final StatementStreamSource yangFileDependency1 = sourceForResource("/ietf/iana-timezones@2012-07-09.yang");
final StatementStreamSource yangFileDependency2 = sourceForResource("/ietf/ietf-inet-types@2010-09-24.yang");
final StatementStreamSource yangFileDependency3 = sourceForResource("/ietf/ietf-yang-types@2010-09-24.yang");
final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- final StatementStreamSource types = sourceForResource("/types/custom-types-test@2012-4-4.yang");
+ final StatementStreamSource types = sourceForResource("/types/custom-types-test@2012-04-04.yang");
final StatementStreamSource test1 = sourceForResource("/context-test/test1.yang");
reactor.addSources(IETF);
final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- final StatementStreamSource types = sourceForResource("/types/custom-types-test@2012-4-4.yang");
+ final StatementStreamSource types = sourceForResource("/types/custom-types-test@2012-04-04.yang");
final StatementStreamSource test3 = sourceForResource("/context-test/test3.yang");
reactor.addSources(IETF);
final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- final StatementStreamSource types = sourceForResource("/types/custom-types-test@2012-4-4.yang");
+ final StatementStreamSource types = sourceForResource("/types/custom-types-test@2012-04-04.yang");
final StatementStreamSource test3 = sourceForResource("/context-test/test3.yang");
reactor.addSources(IETF);
final QNameModule qNameModule = root.getFromNamespace(ModuleCtxToModuleQName.class, root);
if (qNameModule != null) {
// creates SourceIdentifier for a module
- if (qNameModule.getFormattedRevision() == null) {
- return RevisionSourceIdentifier.create((String) root.getStatementArgument());
- }
-
- return RevisionSourceIdentifier.create((String) root.getStatementArgument(),
- qNameModule.getFormattedRevision());
+ return RevisionSourceIdentifier.create((String) root.getStatementArgument(), qNameModule.getRevision());
}
// creates SourceIdentifier for a submodule
final Optional<Revision> revision = getLatestRevision(root.declaredSubstatements());
- return revision.isPresent()
- ? RevisionSourceIdentifier.create((String) root.getStatementArgument(), revision.get().toString())
- : RevisionSourceIdentifier.create((String) root.getStatementArgument());
+ return RevisionSourceIdentifier.create((String) root.getStatementArgument(), revision);
}
public static Optional<Revision> getLatestRevision(final Iterable<? extends StmtContext<?, ?, ?>> subStmts) {