+ public void onPreLinkageDeclared(final Mutable<String, ModuleStatement,
+ EffectiveStatement<String, ModuleStatement>> stmt) {
+ final String moduleName = stmt.getStatementArgument();
+
+ final URI moduleNs = firstAttributeOf(stmt.declaredSubstatements(), NamespaceStatement.class);
+ SourceException.throwIfNull(moduleNs, stmt.getStatementSourceReference(),
+ "Namespace of the module [%s] is missing", stmt.getStatementArgument());
+ stmt.addToNs(ModuleNameToNamespace.class, moduleName, moduleNs);
+
+ final String modulePrefix = firstAttributeOf(stmt.declaredSubstatements(), PrefixStatement.class);
+ SourceException.throwIfNull(modulePrefix, stmt.getStatementSourceReference(),
+ "Prefix of the module [%s] is missing", stmt.getStatementArgument());
+ stmt.addToNs(ImpPrefixToNamespace.class, modulePrefix, moduleNs);
+
+ stmt.addContext(PreLinkageModuleNamespace.class, moduleName, stmt);
+
+ final Optional<Revision> revisionDate = StmtContextUtils.getLatestRevision(stmt.declaredSubstatements());
+ final QNameModule qNameModule = QNameModule.create(moduleNs, revisionDate.orElse(null)).intern();
+
+ stmt.addToNs(ModuleCtxToModuleQName.class, stmt, qNameModule);
+ stmt.setRootIdentifier(RevisionSourceIdentifier.create(stmt.getStatementArgument(), revisionDate));
+ }
+
+ @Override
+ public void onLinkageDeclared(final Mutable<String, ModuleStatement,
+ EffectiveStatement<String, ModuleStatement>> stmt) {