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/epl-v10.html
8 package org.opendaylight.yangtools.yang.model.repo.api;
10 import com.google.common.annotations.Beta;
11 import org.opendaylight.yangtools.concepts.Identifiable;
12 import org.opendaylight.yangtools.concepts.Immutable;
15 * Common interface for schema source representations.
17 * A schema source is an atomic piece of the overall schema context. In YANG terms,
18 * a schema source is semantically equivalent to a single YANG text file, be it a
19 * module or a submodule.
21 * A schema source can exist in various forms, which we call representations. Again,
22 * in YANG terms, each representation is semantically equivalent, but from
23 * implementation perspective certain operations on a schema source may require it
24 * to be first transformed into a particular representation before they can be
25 * applied. Such transformations are affected via instances of
26 * SchemaSourceTransformation.
28 * Typical examples of a schema source representation include:
30 * <li>a {@link java.lang.String} - textual representation of source code
31 * <li>a {@link java.io.InputStream} - input stream containing source code
32 * <li>a {@link com.google.common.io.ByteSource} - source for input streams
33 * containing source code
34 * <li>Parsed abstract syntax tree (AST), which is the result of a syntactic parser
37 * Implementations of this interface expected to comply with the {@link Immutable}
41 public interface SchemaSourceRepresentation extends Identifiable<SourceIdentifier>, Immutable {
46 SourceIdentifier getIdentifier();
49 * Return the concrete representation type.
51 * @return The type of representation.
53 Class<? extends SchemaSourceRepresentation> getType();