/* * 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.controller.yang.model.parser.api; import java.io.File; import java.io.InputStream; import java.util.List; import java.util.Map; import java.util.Set; import org.opendaylight.controller.yang.model.api.Module; import org.opendaylight.controller.yang.model.api.SchemaContext; import org.opendaylight.controller.yang.model.api.type.UnknownTypeDefinition; /** * Yang Model Parser interface is designed for parsing yang models and convert * the information to Data Schema Tree. * */ public interface YangModelParser { /** * Parse one or more Yang model files and return the definitions of Yang * modules defined in *.yang files;
* This method SHOULD be used if user need to parse multiple yang models * that are referenced either through import or include statements. * * @param yangFiles * yang files to parse * @return Set of Yang Modules */ Set parseYangModels(final List yangFiles); /** * Parse one or more Yang model files and return the definitions of Yang * modules defined in *.yang files.
* This method SHOULD be used if user has already parsed context and need to * parse additinal yang models which can have dependencies on models in this * context. * * @param yangFiles * yang files to parse * @param context * SchemaContext containing already parsed yang models * @return Set of Yang Modules */ Set parseYangModels(final List yangFiles, final SchemaContext context); /** * Equivalent to {@link #parseYangModels(List)} that returns parsed modules * mapped to Files from which they were parsed. * * @param yangFiles * yang files to parse * @return Map of Yang Modules */ Map parseYangModelsMapped(final List yangFiles); /** * Parse one or more Yang model streams and return the definitions of Yang * modules defined in *.yang files;
* This method SHOULD be used if user need to parse multiple yang models * that are referenced either through import or include statements. * * @param yangModelStreams * yang streams to parse * @return Set of Yang Modules */ Set parseYangModelsFromStreams(final List yangModelStreams); /** * Parse one or more Yang model streams and return the definitions of Yang * modules defined in *.yang files.
* This method SHOULD be used if user has already parsed context and need to * parse additinal yang models which can have dependencies on models in this * context. * * @param yangModelStreams * yang streams to parse * @param context * SchemaContext containing already parsed yang models * @return Set of Yang Modules */ Set parseYangModelsFromStreams(final List yangModelStreams, final SchemaContext context); /** * Equivalent to {@link #parseYangModels(List)} that returns parsed modules * mapped to IputStreams from which they were parsed. * * @param yangModelStreams * yang streams to parse * @return Map of Yang Modules */ Map parseYangModelsFromStreamsMapped(final List yangModelStreams); /** * Creates {@link SchemaContext} from specified Modules. The modules SHOULD * not contain any unresolved Schema Nodes or Type Definitions. By * unresolved Schema Nodes or Type Definitions we mean that the Module * should not contain ANY Schema Nodes that contains * {@link UnknownTypeDefinition} and all dependencies although via import or * include definitions are resolved. * * @param modules * Set of Yang Modules * @return Schema Context instance constructed from whole Set of Modules. */ SchemaContext resolveSchemaContext(final Set modules); }