import org.opendaylight.controller.yang.model.util.ExtendedType;
import org.opendaylight.controller.yang.model.util.IdentityrefType;
import org.opendaylight.controller.yang.model.util.UnknownType;
+import org.opendaylight.controller.yang.model.validator.YangModelBasicValidator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
final List<ParseTree> trees = parseStreams(yangFiles);
final ModuleBuilder[] builders = new ModuleBuilder[trees.size()];
- // validation
- // if validation fails with any file, do not continue and throw
- // exception
- for (int i = 0; i < trees.size(); i++) {
- try {
- final YangModelValidationListener yangModelParser = new YangModelValidationListener();
- walker.walk(yangModelParser, trees.get(i));
- } catch (IllegalStateException e) {
- // wrap exception to add information about which file failed
- throw new YangValidationException(
- "Yang validation failed for file" + yangFiles[i], e);
- }
- }
+ // validate yang
+ new YangModelBasicValidator(walker).validate(trees);
YangModelParserListenerImpl yangModelParser = null;
for (int i = 0; i < trees.size(); i++) {
final QName currentQName = currentParent.getQName();
final QName lastAugmentPathElement = path.get(path.size() - 1);
-
if (currentQName.getLocalName().equals(
lastAugmentPathElement.getLocalName())) {
fillAugmentTarget(augmentBuilder,
}
}
}
-
}
/**
if(baseString.contains(":")) {
String[] splittedBase = baseString.split(":");
if(splittedBase.length > 2) {
- throw new YangParseException("Failed to parse identity base: "+ baseString);
+ throw new YangParseException("Failed to parse identityref base: "+ baseString);
}
String prefix = splittedBase[0];
String name = splittedBase[1];
if (prefix.equals(module.getPrefix())) {
dependentModule = module;
} else {
- final ModuleImport dependentModuleImport = getModuleImport(module,
+ final ModuleImport dependentModuleImport = ParserUtils.getModuleImport(module,
prefix);
if (dependentModuleImport == null) {
throw new YangParseException("No import found with prefix '"
return dependentModule;
}
- /**
- * Get module import referenced by given prefix.
- *
- * @param builder
- * module to search
- * @param prefix
- * prefix associated with import
- * @return ModuleImport based on given prefix
- */
- private ModuleImport getModuleImport(final ModuleBuilder builder,
- final String prefix) {
- ModuleImport moduleImport = null;
- for (ModuleImport mi : builder.getModuleImports()) {
- if (mi.getPrefix().equals(prefix)) {
- moduleImport = mi;
- break;
- }
- }
- return moduleImport;
- }
private static class SchemaContextImpl implements SchemaContext {
private final Set<Module> modules;