X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=parser%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Frepo%2FRevisionDependencyResolver.java;fp=parser%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Frepo%2FRevisionDependencyResolver.java;h=8bfda2aae2f9e9390092abfa9b6b7c49dbe6e0d5;hb=083ef931709258bed6e0fede5eea7fe3f63ddecc;hp=0000000000000000000000000000000000000000;hpb=1480112ca5024464f8146ea5ec2b6d8b44e3aceb;p=yangtools.git diff --git a/parser/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/RevisionDependencyResolver.java b/parser/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/RevisionDependencyResolver.java new file mode 100644 index 0000000000..8bfda2aae2 --- /dev/null +++ b/parser/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/RevisionDependencyResolver.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.parser.repo; + +import java.util.Collection; +import java.util.Map; +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; +import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration; +import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangModelDependencyInfo; + +final class RevisionDependencyResolver extends DependencyResolver { + RevisionDependencyResolver(final Map depInfo) { + super(depInfo); + } + + protected static SourceIdentifier findWildcard(final Iterable haystack, final String needle) { + for (final SourceIdentifier r : haystack) { + if (needle.equals(r.getName())) { + return r; + } + } + + return null; + } + + @Override + YangParserConfiguration parserConfig() { + return YangParserConfiguration.DEFAULT; + } + + @Override + protected boolean isKnown(final Collection haystack, final ModuleImport mi) { + final SourceIdentifier msi = RevisionSourceIdentifier.create(mi.getModuleName(), mi.getRevision()); + + // Quick lookup + if (haystack.contains(msi)) { + return true; + } + + // Slow revision-less walk + return mi.getRevision().isEmpty() && findWildcard(haystack, mi.getModuleName()) != null; + } + + public static RevisionDependencyResolver create(final Map depInfo) { + return new RevisionDependencyResolver(depInfo); + } +} \ No newline at end of file