1 package org.opendaylight.yangtools.yang.stmt.test.augment;
3 import static org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping.AUGMENT;
4 import static org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping.IMPORT;
5 import static org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping.MODULE;
6 import static org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping.NAMESPACE;
7 import static org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping.PREFIX;
9 import java.util.Arrays;
11 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
12 import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
13 import org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModule;
14 import org.opendaylight.yangtools.yang.parser.spi.source.QNameToStatementDefinition;
15 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
16 import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
17 import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
18 import org.opendaylight.yangtools.yang.parser.spi.source.StatementWriter;
20 public class TestAugmentSource implements StatementStreamSource {
22 private static final String NS_PREFIX = "urn:org:opendaylight:yangtools:test:";
24 private final String name;
25 private final String augment;
26 private final java.util.List<String> imports;
27 private StatementWriter writer;
28 private StatementSourceReference REF = new StatementSourceReference() {
31 public StatementSource getStatementSource() {
32 return StatementSource.DECLARATION;
36 public TestAugmentSource(String name, String augment, String... imports) {
38 this.augment = augment;
39 this.imports = Arrays.asList(imports);
43 public void writeFull(StatementWriter writer, QNameToStatementDefinition stmtDef, PrefixToModule prefixes)
44 throws SourceException {
53 public void writeLinkage(StatementWriter writer, QNameToStatementDefinition stmtDef) throws SourceException {
59 public void writeLinkageAndStatementDefinitions(StatementWriter writer, QNameToStatementDefinition stmtDef,
60 PrefixToModule prefixes) throws SourceException {
67 protected void extensions() throws SourceException {
71 protected void body() throws SourceException {
73 stmt(AUGMENT).arg(augment);
77 TestAugmentSource header() throws SourceException {
79 stmt(MODULE).arg(name);
81 stmt(NAMESPACE).arg(getNamespace()).end();
82 stmt(PREFIX).arg(name).end();
85 for (String impEntry : imports) {
87 stmt(IMPORT).arg(impEntry);
89 stmt(PREFIX).arg(impEntry).end();
97 private String getNamespace() {
98 return NS_PREFIX + name;
101 protected TestAugmentSource arg(String arg) throws SourceException {
102 writer.argumentValue(arg, REF);
106 protected TestAugmentSource stmt(Rfc6020Mapping stmt) throws SourceException {
107 writer.startStatement(stmt.getStatementName(), REF);
111 protected TestAugmentSource end() throws SourceException {
112 writer.endStatement(REF);