org.opendaylight.yangtools.yang.model.util.SchemaContextUtil Maven / Gradle / Ivy
/*
* Copyright (c) 2013 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.model.util;
import java.util.HashSet;
import java.util.Set;
import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.ModuleLike;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.Submodule;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
/**
* The Schema Context Util contains support methods for searching through Schema Context modules for specified schema
* nodes via Schema Path or Revision Aware XPath. The Schema Context Util is designed as mixin, so it is not
* instantiable.
*/
public final class SchemaContextUtil {
private SchemaContextUtil() {
// Hidden on purpose
}
/**
* Extract the identifiers of all modules and submodules which were used to create a particular SchemaContext.
*
* @param context SchemaContext to be examined
* @return Set of ModuleIdentifiers.
*/
// FIXME: rehost to yang-repo-spi (or -api?)
public static Set getConstituentModuleIdentifiers(final SchemaContext context) {
final Set ret = new HashSet<>();
for (Module module : context.getModules()) {
ret.add(moduleToIdentifier(module));
for (Submodule submodule : module.getSubmodules()) {
ret.add(moduleToIdentifier(submodule));
}
}
return ret;
}
private static SourceIdentifier moduleToIdentifier(final ModuleLike module) {
return new SourceIdentifier(Unqualified.of(module.getName()), module.getRevision().orElse(null));
}
}