2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/eplv10.html
8 package org.opendaylight.yangtools.yang.parser.impl.util;
11 import java.util.Map.Entry;
13 import org.opendaylight.yangtools.yang.model.util.repo.SourceIdentifier;
15 import com.google.common.base.Optional;
16 import com.google.common.collect.ImmutableMap;
18 public final class YangSourceFromDependencyInfoResolver extends YangSourceContextResolver {
20 private final Map<SourceIdentifier, YangModelDependencyInfo> dependencyInfo;
22 public YangSourceFromDependencyInfoResolver(final Map<SourceIdentifier, YangModelDependencyInfo> moduleDependencies) {
23 dependencyInfo = ImmutableMap.copyOf(moduleDependencies);
27 public Optional<YangModelDependencyInfo> getDependencyInfo(final SourceIdentifier identifier) {
28 if (identifier.getRevision() != null) {
29 return Optional.fromNullable(dependencyInfo.get(identifier));
31 YangModelDependencyInfo potential = dependencyInfo.get(identifier);
32 if (potential == null) {
33 for (Entry<SourceIdentifier, YangModelDependencyInfo> newPotential : dependencyInfo.entrySet()) {
34 String newPotentialName = newPotential.getKey().getName();
36 if (newPotentialName.equals(identifier.getName())) {
37 String newPotentialRevision = newPotential.getKey().getRevision();
38 if (potential == null || 1 == newPotentialRevision.compareTo(potential.getFormattedRevision())) {
39 potential = newPotential.getValue();
44 return Optional.fromNullable(potential);
48 public YangSourceContext resolveContext() {
49 for (SourceIdentifier source : dependencyInfo.keySet()) {
50 resolveSource(source);
52 return createSourceContext();