- //unknown-stmts (from import, include or local-scope)
- if (qNameToStmtDefMap.get(Utils.trimPrefix(name)) != null) {
- QName key = Utils.qNameFromArgument(current, name.getLocalName());
- if (key != null) {
- final StatementContextBase<?,?,?> extension = (StatementContextBase<?, ?, ?>) currentContext
- .getAllFromNamespace(ExtensionNamespace.class).get(key);
- if (extension != null) {
- final QName qName = QName.create(((QName) ((SubstatementContext<?, ?, ?>) extension).getStatementArgument())
- .getModule().getNamespace(), ((QName) ((SubstatementContext<?, ?, ?>) extension).
- getStatementArgument()).getModule().getRevision(), extension.getIdentifier().getArgument());
-
- def = new StatementDefinitionContext<>(new UnknownStatementImpl.Definition
- (getNewStatementDefinition(qName)));
- } else {
- throw new IllegalArgumentException("Not found unknown statement: " + name);
- }
- }
+ // unknown-stmts (from import, include or local-scope)
+ if (qNameToStmtDefMap.get(name) != null) {
+ final StatementContextBase<?, ?, ?> extension =
+ (StatementContextBase<?, ?, ?>) currentContext.getAllFromNamespace(ExtensionNamespace.class).get(name);
+
+ SourceException.throwIfNull(extension, current.getStatementSourceReference(), "Extension %s not found",
+ name);
+
+ final QName arg = (QName) extension.getStatementArgument();
+ final QName qName = current.getFromNamespace(QNameCacheNamespace.class,
+ QName.create(arg, extension.getIdentifier().getArgument()));
+
+ def = new StatementDefinitionContext<>(new UnknownStatementImpl.Definition(
+ getNewStatementDefinition(qName)));