Do not generate listener interfaces
[yangtools.git] / yang / yang-model-export / src / main / java / org / opendaylight / yangtools / yang / model / export / SchemaToStatementWriterAdaptor.java
index 4712dbd745530b0df3c2c2378bdae0e8b17ed9d2..c4f8f5428206ba79c1c1528e3e01aa84ad10b02e 100644 (file)
@@ -7,32 +7,39 @@
  */
 package org.opendaylight.yangtools.yang.model.export;
 
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.annotations.Beta;
-import com.google.common.base.Preconditions;
+import com.google.common.collect.Iterables;
 import com.google.common.primitives.UnsignedInteger;
 import java.net.URI;
-import java.util.Date;
+import java.util.Collection;
+import java.util.Iterator;
 import java.util.List;
 import javax.annotation.concurrent.NotThreadSafe;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
-import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.Status;
+import org.opendaylight.yangtools.yang.model.api.UniqueConstraint;
+import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Relative;
+import org.opendaylight.yangtools.yang.model.api.type.ModifierKind;
 
+@Deprecated
 @Beta
 @NotThreadSafe
-final class SchemaToStatementWriterAdaptor implements Rfc6020ModuleWriter {
+final class SchemaToStatementWriterAdaptor implements YangModuleWriter {
 
     private final StatementTextWriter writer;
 
     private SchemaToStatementWriterAdaptor(final StatementTextWriter writer) {
-        this.writer = Preconditions.checkNotNull(writer);
+        this.writer = requireNonNull(writer);
     }
 
-    public static final Rfc6020ModuleWriter from(final StatementTextWriter writer) {
+    public static YangModuleWriter from(final StatementTextWriter writer) {
         return new SchemaToStatementWriterAdaptor(writer);
     }
 
@@ -42,341 +49,614 @@ final class SchemaToStatementWriterAdaptor implements Rfc6020ModuleWriter {
     }
 
     @Override
-    public void startModuleNode(final String identifier) {
-        writer.startStatement(Rfc6020Mapping.MODULE);
-        writer.writeArgument(identifier);
+    public void startActionNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.ACTION);
+        writer.writeArgument(qname);
     }
 
     @Override
-    public void startOrganizationNode(final String input) {
-        writer.startStatement(Rfc6020Mapping.ORGANIZATION);
+    public void startActionNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.ACTION);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startAnydataNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.ANYDATA);
+        writer.writeArgument(qname);
+    }
+
+    @Override
+    public void startAnydataNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.ANYDATA);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startAnyxmlNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.ANYXML);
+        writer.writeArgument(qname);
+    }
+
+    @Override
+    public void startAnyxmlNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.ANYXML);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startArgumentNode(final String input) {
+        writer.startStatement(YangStmtMapping.ARGUMENT);
         writer.writeArgument(input);
     }
 
+    @Override
+    public void startAugmentNode(final SchemaPath targetPath) {
+        writer.startStatement(YangStmtMapping.AUGMENT);
+        writer.writeArgument(targetPath);
+    }
+
+    @Override
+    public void startAugmentNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.AUGMENT);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startBaseNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.BASE);
+        writer.writeArgument(qname);
+    }
+
+    @Override
+    public void startBaseNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.BASE);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startBelongsToNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.BELONGS_TO);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startBitNode(final String name) {
+        writer.startStatement(YangStmtMapping.BIT);
+        writer.writeArgument(name);
+    }
+
+    @Override
+    public void startCaseNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.CASE);
+        writer.writeArgument(qname);
+    }
+
+    @Override
+    public void startCaseNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.CASE);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startChoiceNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.CHOICE);
+        writer.writeArgument(qname);
+    }
+
+    @Override
+    public void startChoiceNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.CHOICE);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startConfigNode(final boolean config) {
+        writer.startStatement(YangStmtMapping.CONFIG);
+        writer.writeArgument(Boolean.toString(config));
+    }
+
+    @Override
+    public void startConfigNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.CONFIG);
+        writer.writeArgument(rawArgument);
+    }
+
     @Override
     public void startContactNode(final String input) {
-        writer.startStatement(Rfc6020Mapping.CONTACT);
+        writer.startStatement(YangStmtMapping.CONTACT);
         writer.writeArgument(input);
     }
 
+    @Override
+    public void startContainerNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.CONTAINER);
+        writer.writeArgument(qname);
+    }
+
+    @Override
+    public void startContainerNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.CONTAINER);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startDefaultNode(final String string) {
+        writer.startStatement(YangStmtMapping.DEFAULT);
+        writer.writeArgument(string);
+    }
+
     @Override
     public void startDescriptionNode(final String input) {
-        writer.startStatement(Rfc6020Mapping.DESCRIPTION);
+        writer.startStatement(YangStmtMapping.DESCRIPTION);
         writer.writeArgument(input);
     }
 
     @Override
-    public void startReferenceNode(final String input) {
-        writer.startStatement(Rfc6020Mapping.REFERENCE);
-        writer.writeArgument(input);
+    public void startDeviateNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.DEVIATE);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startUnitsNode(final String input) {
-        writer.startStatement(Rfc6020Mapping.UNITS);
+    public void startDeviationNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.DEVIATION);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startEnumNode(final String name) {
+        writer.startStatement(YangStmtMapping.ENUM);
+        writer.writeArgument(name);
+    }
+
+    @Override
+    public void startErrorAppTagNode(final String input) {
+        writer.startStatement(YangStmtMapping.ERROR_APP_TAG);
         writer.writeArgument(input);
     }
 
     @Override
-    public void startYangVersionNode(final String input) {
-        writer.startStatement(Rfc6020Mapping.YANG_VERSION);
+    public void startErrorMessageNode(final String input) {
+        writer.startStatement(YangStmtMapping.ERROR_MESSAGE);
         writer.writeArgument(input);
     }
 
     @Override
-    public void startNamespaceNode(final URI uri) {
-        writer.startStatement(Rfc6020Mapping.NAMESPACE);
-        writer.writeArgument(uri.toString());
+    public void startExtensionNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.EXTENSION);
+        writer.writeArgument(qname);
     }
 
     @Override
-    public void startKeyNode(final List<QName> keyList) {
-        writer.startStatement(Rfc6020Mapping.KEY);
-        final StringBuilder keyStr = new StringBuilder();
-        for (final QName item : keyList) {
-            keyStr.append(item.getLocalName());
-        }
-        writer.writeArgument(keyStr.toString());
+    public void startExtensionNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.EXTENSION);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startPrefixNode(final String input) {
-        writer.startStatement(Rfc6020Mapping.PREFIX);
-        writer.writeArgument(input);
+    public void startFeatureNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.FEATURE);
+        writer.writeArgument(qname);
     }
 
     @Override
-    public void startFeatureNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.FEATURE);
-        writer.writeArgument(qName);
+    public void startFeatureNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.FEATURE);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startExtensionNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.EXTENSION);
-        writer.writeArgument(qName);
+    public void startFractionDigitsNode(final Integer fractionDigits) {
+        writer.startStatement(YangStmtMapping.FRACTION_DIGITS);
+        writer.writeArgument(fractionDigits.toString());
     }
 
     @Override
-    public void startArgumentNode(final String input) {
-        writer.startStatement(Rfc6020Mapping.ARGUMENT);
-        writer.writeArgument(input);
+    public void startFractionDigitsNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.FRACTION_DIGITS);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startStatusNode(final Status status) {
-        writer.startStatement(Rfc6020Mapping.STATUS);
-        writer.writeArgument(status.toString().toLowerCase());
+    public void startGroupingNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.GROUPING);
+        writer.writeArgument(qname);
+    }
+
+    @Override
+    public void startGroupingNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.GROUPING);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startTypeNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.TYPE);
-        writer.writeArgument(qName);
+    public void startIdentityNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.IDENTITY);
+        writer.writeArgument(qname);
     }
 
     @Override
-    public void startLeafNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.LEAF);
-        writer.writeArgument(qName);
+    public void startIdentityNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.IDENTITY);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startContainerNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.CONTAINER);
-        writer.writeArgument(qName);
+    public void startIfFeatureNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.IF_FEATURE);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startGroupingNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.GROUPING);
-        writer.writeArgument(qName);
+    public void startImportNode(final String moduleName) {
+        writer.startStatement(YangStmtMapping.IMPORT);
+        writer.writeArgument(moduleName);
     }
 
     @Override
-    public void startRpcNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.RPC);
-        writer.writeArgument(qName);
+    public void startIncludeNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.INCLUDE);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
     public void startInputNode() {
-        writer.startStatement(Rfc6020Mapping.INPUT);
+        writer.startStatement(YangStmtMapping.INPUT);
     }
 
     @Override
-    public void startOutputNode() {
-        writer.startStatement(Rfc6020Mapping.OUTPUT);
+    public void startKeyNode(final List<QName> keyList) {
+        writer.startStatement(YangStmtMapping.KEY);
+        final StringBuilder keyStr = new StringBuilder();
+        final Iterator<QName> iter = keyList.iterator();
+        while (iter.hasNext()) {
+            keyStr.append(iter.next().getLocalName());
+            if (iter.hasNext()) {
+                keyStr.append(' ');
+            }
+        }
+        writer.writeArgument(keyStr.toString());
     }
 
     @Override
-    public void startLeafListNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.LEAF_LIST);
-        writer.writeArgument(qName);
+    public void startKeyNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.KEY);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startListNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.LIST);
-        writer.writeArgument(qName);
+    public void startLeafListNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.LEAF_LIST);
+        writer.writeArgument(qname);
     }
 
     @Override
-    public void startChoiceNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.CHOICE);
-        writer.writeArgument(qName);
+    public void startLeafListNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.LEAF_LIST);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startCaseNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.CASE);
-        writer.writeArgument(qName);
+    public void startLeafNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.LEAF);
+        writer.writeArgument(qname);
     }
 
     @Override
-    public void startNotificationNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.NOTIFICATION);
-        writer.writeArgument(qName);
+    public void startLeafNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.LEAF);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startIdentityNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.IDENTITY);
-        writer.writeArgument(qName);
+    public void startLengthNode(final String lengthString) {
+        writer.startStatement(YangStmtMapping.LENGTH);
+        writer.writeArgument(lengthString);
     }
 
     @Override
-    public void startBaseNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.BASE);
-        writer.writeArgument(qName);
+    public void startListNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.LIST);
+        writer.writeArgument(qname);
     }
 
     @Override
-    public void startTypedefNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.TYPEDEF);
-        writer.writeArgument(qName);
+    public void startListNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.LIST);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startRevisionNode(final Date date) {
-        writer.startStatement(Rfc6020Mapping.REVISION);
-        writer.writeArgument(SimpleDateFormatUtil.getRevisionFormat().format(date));
+    public void startMandatoryNode(final boolean mandatory) {
+        writer.startStatement(YangStmtMapping.MANDATORY);
+        writer.writeArgument(Boolean.toString(mandatory));
     }
 
     @Override
-    public void startDefaultNode(final String string) {
-        writer.startStatement(Rfc6020Mapping.DEFAULT);
-        writer.writeArgument(string);
+    public void startMandatoryNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.MANDATORY);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startMustNode(final RevisionAwareXPath xpath) {
-        writer.startStatement(Rfc6020Mapping.MUST);
-        writer.writeArgument(xpath);
+    public void startMaxElementsNode(final Integer max) {
+        writer.startStatement(YangStmtMapping.MAX_ELEMENTS);
+        writer.writeArgument(max.toString());
     }
 
     @Override
-    public void startErrorMessageNode(final String input) {
-        writer.startStatement(Rfc6020Mapping.ERROR_MESSAGE);
-        writer.writeArgument(input);
+    public void startMaxElementsNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.MAX_ELEMENTS);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startErrorAppTagNode(final String input) {
-        writer.startStatement(Rfc6020Mapping.ERROR_APP_TAG);
-        writer.writeArgument(input);
+    public void startMinElementsNode(final Integer min) {
+        writer.startStatement(YangStmtMapping.MIN_ELEMENTS);
+        writer.writeArgument(min.toString());
     }
 
     @Override
-    public void startPatternNode(final String regularExpression) {
-        writer.startStatement(Rfc6020Mapping.PATTERN);
-        writer.writeArgument(regularExpression);
+    public void startMinElementsNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.MIN_ELEMENTS);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startValueNode(final Integer integer) {
-        writer.startStatement(Rfc6020Mapping.VALUE);
-        writer.writeArgument(integer.toString());
+    public void startModifierNode(final ModifierKind modifier) {
+        writer.startStatement(YangStmtMapping.MODIFIER);
+        writer.writeArgument(modifier.getKeyword());
     }
 
     @Override
-    public void startEnumNode(final String name) {
-        writer.startStatement(Rfc6020Mapping.ENUM);
-        writer.writeArgument(name);
+    public void startModifierNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.MODIFIER);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startRequireInstanceNode(final boolean require) {
-        writer.startStatement(Rfc6020Mapping.REQUIRE_INSTANCE);
-        writer.writeArgument(Boolean.toString(require));
+    public void startModuleNode(final String identifier) {
+        writer.startStatement(YangStmtMapping.MODULE);
+        writer.writeArgument(identifier);
     }
 
     @Override
-    public void startPathNode(final RevisionAwareXPath revisionAwareXPath) {
-        writer.startStatement(Rfc6020Mapping.PATH);
-        writer.writeArgument(revisionAwareXPath);
+    public void startMustNode(final RevisionAwareXPath xpath) {
+        writer.startStatement(YangStmtMapping.MUST);
+        writer.writeArgument(xpath);
     }
 
     @Override
-    public void startBitNode(final String name) {
-        writer.startStatement(Rfc6020Mapping.BIT);
-        writer.writeArgument(name);
+    public void startMustNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.MUST);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startPositionNode(final UnsignedInteger position) {
-        writer.startStatement(Rfc6020Mapping.POSITION);
-        writer.writeArgument(position.toString());
+    public void startNamespaceNode(final URI uri) {
+        writer.startStatement(YangStmtMapping.NAMESPACE);
+        writer.writeArgument(uri.toString());
     }
 
     @Override
-    public void startImportNode(final String moduleName) {
-        writer.startStatement(Rfc6020Mapping.IMPORT);
-        writer.writeArgument(moduleName);
+    public void startNotificationNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.NOTIFICATION);
+        writer.writeArgument(qname);
     }
 
     @Override
-    public void startRevisionDateNode(final Date date) {
-        writer.startStatement(Rfc6020Mapping.REVISION_DATE);
-        writer.writeArgument(SimpleDateFormatUtil.getRevisionFormat().format(date));
+    public void startNotificationNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.NOTIFICATION);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startUsesNode(final QName groupingName) {
-        writer.startStatement(Rfc6020Mapping.USES);
-        writer.writeArgument(groupingName);
+    public void startOrderedByNode(final String ordering) {
+        writer.startStatement(YangStmtMapping.ORDERED_BY);
+        writer.writeArgument(ordering);
     }
 
     @Override
-    public void startAugmentNode(final SchemaPath targetPath) {
-        writer.startStatement(Rfc6020Mapping.AUGMENT);
-        writer.writeArgument(targetPath);
+    public void startOrganizationNode(final String input) {
+        writer.startStatement(YangStmtMapping.ORGANIZATION);
+        writer.writeArgument(input);
     }
 
     @Override
-    public void startConfigNode(final boolean config) {
-        writer.startStatement(Rfc6020Mapping.CONFIG);
-        writer.writeArgument(Boolean.toString(config));
+    public void startOutputNode() {
+        writer.startStatement(YangStmtMapping.OUTPUT);
     }
 
     @Override
-    public void startLengthNode(final String lengthString) {
-        writer.startStatement(Rfc6020Mapping.LENGTH);
-        writer.writeArgument(lengthString);
+    public void startPathNode(final RevisionAwareXPath revisionAwareXPath) {
+        writer.startStatement(YangStmtMapping.PATH);
+        writer.writeArgument(revisionAwareXPath);
     }
 
     @Override
-    public void startMaxElementsNode(final Integer max) {
-        writer.startStatement(Rfc6020Mapping.MAX_ELEMENTS);
-        writer.writeArgument(max.toString());
+    public void startPathNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.PATH);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startMinElementsNode(final Integer min) {
-        writer.startStatement(Rfc6020Mapping.MIN_ELEMENTS);
-        writer.writeArgument(min.toString());
+    public void startPatternNode(final String regularExpression) {
+        writer.startStatement(YangStmtMapping.PATTERN);
+        writer.writeArgument(regularExpression);
+    }
+
+    @Override
+    public void startPositionNode(final UnsignedInteger position) {
+        writer.startStatement(YangStmtMapping.POSITION);
+        writer.writeArgument(position.toString());
+    }
+
+    @Override
+    public void startPositionNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.POSITION);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startPrefixNode(final String input) {
+        writer.startStatement(YangStmtMapping.PREFIX);
+        writer.writeArgument(input);
     }
 
     @Override
     public void startPresenceNode(final boolean presence) {
-        writer.startStatement(Rfc6020Mapping.PRESENCE);
+        writer.startStatement(YangStmtMapping.PRESENCE);
         writer.writeArgument(Boolean.toString(presence));
     }
 
     @Override
-    public void startOrderedByNode(final String ordering) {
-        writer.startStatement(Rfc6020Mapping.ORDERED_BY);
-        writer.writeArgument(ordering);
+    public void startPresenceNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.PRESENCE);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
     public void startRangeNode(final String rangeString) {
-        writer.startStatement(Rfc6020Mapping.RANGE);
+        writer.startStatement(YangStmtMapping.RANGE);
         writer.writeArgument(rangeString);
     }
 
     @Override
-    public void startFractionDigitsNode(final Integer fractionDigits) {
-        writer.startStatement(Rfc6020Mapping.FRACTION_DIGITS);
-        writer.writeArgument(fractionDigits.toString());
+    public void startReferenceNode(final String input) {
+        writer.startStatement(YangStmtMapping.REFERENCE);
+        writer.writeArgument(input);
     }
 
     @Override
     public void startRefineNode(final SchemaPath path) {
-        writer.startStatement(Rfc6020Mapping.REFINE);
+        writer.startStatement(YangStmtMapping.REFINE);
         writer.writeArgument(path);
     }
 
     @Override
-    public void startMandatoryNode(final boolean mandatory) {
-        writer.startStatement(Rfc6020Mapping.MANDATORY);
-        writer.writeArgument(Boolean.toString(mandatory));
+    public void startRefineNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.REFINE);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startRequireInstanceNode(final boolean require) {
+        writer.startStatement(YangStmtMapping.REQUIRE_INSTANCE);
+        writer.writeArgument(Boolean.toString(require));
+    }
+
+    @Override
+    public void startRequireInstanceNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.REQUIRE_INSTANCE);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startRevisionDateNode(final Revision date) {
+        writer.startStatement(YangStmtMapping.REVISION_DATE);
+        writer.writeArgument(date.toString());
+    }
+
+    @Override
+    public void startRevisionDateNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.REVISION_DATE);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startRevisionNode(final Revision date) {
+        writer.startStatement(YangStmtMapping.REVISION);
+        writer.writeArgument(date.toString());
+    }
+
+    @Override
+    public void startRevisionNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.REVISION);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
-    public void startAnyxmlNode(final QName qName) {
-        writer.startStatement(Rfc6020Mapping.ANYXML);
-        writer.writeArgument(qName);
+    public void startRpcNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.RPC);
+        writer.writeArgument(qname);
+    }
+
+    @Override
+    public void startRpcNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.RPC);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startStatusNode(final Status status) {
+        writer.startStatement(YangStmtMapping.STATUS);
+        writer.writeArgument(status.toString().toLowerCase());
+    }
+
+    @Override
+    public void startStatusNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.STATUS);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startSubmoduleNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.SUBMODULE);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startTypeNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.TYPE);
+        writer.writeArgument(qname);
+    }
+
+    @Override
+    public void startTypeNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.TYPE);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startTypedefNode(final QName qname) {
+        writer.startStatement(YangStmtMapping.TYPEDEF);
+        writer.writeArgument(qname);
+    }
+
+    @Override
+    public void startTypedefNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.TYPEDEF);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startUniqueNode(final UniqueConstraint uniqueConstraint) {
+        writer.startStatement(YangStmtMapping.UNIQUE);
+        final StringBuilder uniqueStr = new StringBuilder();
+        final Collection<Relative> tag = uniqueConstraint.getTag();
+
+        final Iterator<Relative> iter = tag.iterator();
+        while (iter.hasNext()) {
+            uniqueStr.append(
+                    String.join("/", Iterables.transform(iter.next().getPathFromRoot(), qn -> qn.getLocalName())));
+            if (iter.hasNext()) {
+                uniqueStr.append(' ');
+            }
+        }
+        writer.writeArgument(uniqueStr.toString());
+    }
+
+    @Override
+    public void startUniqueNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.UNIQUE);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startUnitsNode(final String input) {
+        writer.startStatement(YangStmtMapping.UNITS);
+        writer.writeArgument(input);
     }
 
     @Override
@@ -391,14 +671,56 @@ final class SchemaToStatementWriterAdaptor implements Rfc6020ModuleWriter {
     }
 
     @Override
-    public void startYinElementNode(final boolean yinElement) {
-        writer.startStatement(Rfc6020Mapping.YIN_ELEMENT);
-        writer.writeArgument(Boolean.toString(yinElement));
+    public void startUsesNode(final QName groupingName) {
+        writer.startStatement(YangStmtMapping.USES);
+        writer.writeArgument(groupingName);
+    }
+
+    @Override
+    public void startUsesNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.USES);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startValueNode(final Integer integer) {
+        writer.startStatement(YangStmtMapping.VALUE);
+        writer.writeArgument(integer.toString());
+    }
+
+    @Override
+    public void startValueNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.VALUE);
+        writer.writeArgument(rawArgument);
     }
 
     @Override
     public void startWhenNode(final RevisionAwareXPath revisionAwareXPath) {
-        writer.startStatement(Rfc6020Mapping.WHEN);
+        writer.startStatement(YangStmtMapping.WHEN);
         writer.writeArgument(revisionAwareXPath);
     }
+
+    @Override
+    public void startWhenNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.WHEN);
+        writer.writeArgument(rawArgument);
+    }
+
+    @Override
+    public void startYangVersionNode(final String input) {
+        writer.startStatement(YangStmtMapping.YANG_VERSION);
+        writer.writeArgument(input);
+    }
+
+    @Override
+    public void startYinElementNode(final boolean yinElement) {
+        writer.startStatement(YangStmtMapping.YIN_ELEMENT);
+        writer.writeArgument(Boolean.toString(yinElement));
+    }
+
+    @Override
+    public void startYinElementNode(final String rawArgument) {
+        writer.startStatement(YangStmtMapping.YIN_ELEMENT);
+        writer.writeArgument(rawArgument);
+    }
 }