/* * 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.binding; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableList; import com.google.common.io.ByteSource; import com.google.common.io.CharSource; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.Collection; import org.eclipse.jdt.annotation.NonNullByDefault; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; /** * Information and model capture for Binding V1. Instances of this class identify a packaged model and allow access * to its YANG text. They also contain references to {@link YangModuleInfo} instances as observed at code generation * time. * *
* The purpose of this class is to ensure package resolution order in OSGi environments, as implementations of this
* interface are required to be co-located with generated code. When this module relies on some imports, that dependency
* is expressed across jars via an implementation requirement to reference YangModuleInfos.
*/
@NonNullByDefault
public interface YangModuleInfo extends Immutable {
/**
* Returns YANG module name, as a composite {@link QName}. Module's namespace and revision maps to
* {@link QName#getModule()} and module name maps to {@link QName#getLocalName()}.
*
* @return YANG module name.
*/
QName getName();
/**
* Return an open stream containing YANG text for this module. The stream is required to be UTF-8 encoded.
*
* @return An open stream.
* @throws IOException If the stream cannot be opened.
*/
InputStream openYangTextStream() throws IOException;
/**
* Return {@link YangModuleInfo} objects for all modules which are imported by this module. Default implementation
* returns an empty list.
*
* @return {@link YangModuleInfo} objects of all imported modules.
*/
default Collection