2 * Copyright (c) 2015 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.stmt.test;
10 import static org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping.IMPORT;
11 import static org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping.MODULE;
12 import static org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping.NAMESPACE;
13 import static org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping.PREFIX;
15 import java.util.Arrays;
16 import java.util.List;
17 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
18 import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
19 import org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModule;
20 import org.opendaylight.yangtools.yang.parser.spi.source.QNameToStatementDefinition;
21 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
22 import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
23 import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
24 import org.opendaylight.yangtools.yang.parser.spi.source.StatementWriter;
26 class TestStatementSource implements StatementStreamSource {
28 private static final String NS_PREFIX = "urn:org:opendaylight:yangtools:test:";
30 private final String name;
31 private final List<String> imports;
32 private StatementWriter writer;
33 private StatementSourceReference REF = new StatementSourceReference() {
36 public StatementSource getStatementSource() {
37 return StatementSource.DECLARATION;
42 public TestStatementSource(String name, String... imports) {
44 this.imports = Arrays.asList(imports);
48 public void writeFull(StatementWriter writer, QNameToStatementDefinition stmtDef, PrefixToModule prefixes)
49 throws SourceException {
58 public void writeLinkage(StatementWriter writer, QNameToStatementDefinition stmtDef) throws SourceException {
64 public void writeLinkageAndStatementDefinitions(StatementWriter writer, QNameToStatementDefinition stmtDef,
65 PrefixToModule prefixes) throws SourceException {
72 protected void extensions() {
73 // TODO Auto-generated method stub
77 protected void body() {
81 TestStatementSource header() throws SourceException {
82 stmt(MODULE).arg(name); {
83 stmt(NAMESPACE).arg(getNamespace()).end();
84 stmt(PREFIX).arg(name).end();
85 for(String imp : imports) {
86 stmt(IMPORT).arg(imp);
87 stmt(PREFIX).arg(imp).end();
94 private String getNamespace() {
95 return NS_PREFIX + name;
98 protected TestStatementSource arg(String arg) throws SourceException {
99 writer.argumentValue(arg, REF);
103 protected TestStatementSource stmt(Rfc6020Mapping stmt) throws SourceException {
104 writer.startStatement(stmt.getStatementName(), REF);
108 protected TestStatementSource end() throws SourceException {
109 writer.endStatement(REF);