-
- List<StatementContextBase<?, ?, ?>> rootStatementCtxList = new LinkedList<>();
-
- if (augmentTargetNode.isAbsolute()) {
-
- QNameModule module = augmentTargetNode.getPathFromRoot().iterator()
- .next().getModule();
-
- StatementContextBase<?, ?, ?> rootStatementCtx = (StatementContextBase<?, ?, ?>) augmentNode
- .getFromNamespace(NamespaceToModule.class, module);
- rootStatementCtxList.add(rootStatementCtx);
-
- final Map<?, ?> subModules = rootStatementCtx
- .getAllFromNamespace(IncludedModuleContext.class);
- if (subModules != null) {
- rootStatementCtxList
- .addAll((Collection<? extends StatementContextBase<?, ?, ?>>) subModules
- .values());
- }
-
- } else {
- StatementContextBase<?, ?, ?> parent = (StatementContextBase<?, ?, ?>) augmentNode
- .getParentContext();
- if (StmtContextUtils.producesDeclared(parent, UsesStatement.class)) {
- rootStatementCtxList.add(parent.getParentContext());
+ QName sourceStmtQName = (QName) sourceCtx.getStatementArgument();
+
+ RootStatementContext<?, ?, ?> root = targetCtx.getRoot();
+ do {
+ Verify.verify(targetCtx.getStatementArgument() instanceof QName,
+ "Argument of augment target statement must be QName.");
+ QName targetStmtQName = (QName) targetCtx.getStatementArgument();
+ /*
+ * If target is from another module, return true and perform
+ * mandatory nodes validation
+ */
+ if (!Utils.belongsToTheSameModule(targetStmtQName, sourceStmtQName)) {
+ return true;