- case SOURCE_LINKAGE:
- source.writeLinkage(new StatementContextWriter(this, inProgressPhase),stmtDef());
- break;
- case STATEMENT_DEFINITION:
- source.writeLinkageAndStatementDefinitions(new StatementContextWriter(this, inProgressPhase), stmtDef(), prefixes());
- break;
- case FULL_DECLARATION:
- source.writeFull(new StatementContextWriter(this, inProgressPhase), stmtDef(), prefixes());
- break;
- default:
- break;
+ case SOURCE_PRE_LINKAGE:
+ source.writePreLinkage(new StatementContextWriter(this, inProgressPhase), stmtDef());
+ break;
+ case SOURCE_LINKAGE:
+ source.writeLinkage(new StatementContextWriter(this, inProgressPhase), stmtDef(), preLinkagePrefixes());
+ break;
+ case STATEMENT_DEFINITION:
+ source.writeLinkageAndStatementDefinitions(new StatementContextWriter(this, inProgressPhase), stmtDef(), prefixes());
+ break;
+ case FULL_DECLARATION:
+ source.writeFull(new StatementContextWriter(this, inProgressPhase), stmtDef(), prefixes());
+ break;
+ default:
+ break;
+ }
+ }
+
+ private static StatementDefinitionContext<?, ?, ?> resolveTypeBodyStmts(final String typeArgument,
+ final YangVersion version) {
+ StatementSupport<?, ?, ?> support = BUILTIN_TYPE_SUPPORTS.get(version, typeArgument);
+
+ if (support == null) {
+ support = BUILTIN_TYPE_SUPPORTS.get(YangVersion.VERSION_1, typeArgument);
+ }
+
+ return support == null ? null : new StatementDefinitionContext<>(support);
+ }
+
+ private PrefixToModule preLinkagePrefixes() {
+ final PrefixToModuleMap preLinkagePrefixes = new PrefixToModuleMap(true);
+ final Map<String, URI> prefixToNamespaceMap = getAllFromLocalStorage(ImpPrefixToNamespace.class);
+ if (prefixToNamespaceMap == null) {
+ //:FIXME if it is a submodule without any import, the map is null. Handle also submodules and includes...
+ return null;