import org.opendaylight.yangtools.yang.parser.stmt.reactor.RootStatementContext;
import org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace.ValidationBundleType;
import org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace;
-import java.util.Iterator;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.TypeOfCopy;
import java.util.Collection;
}
/**
- * @param sourceGrpStmtCtx
- * @param targetCtx
- * @throws SourceException
+ * @param sourceGrpStmtCtx source grouping statement context
+ * @param targetCtx target context
+ * @param usesNode uses node
+ * @throws SourceException instance of SourceException
*/
public static void copyFromSourceToTarget(
StatementContextBase<?, ?, ?> sourceGrpStmtCtx,
TypeOfCopy.ADDED_BY_USES);
targetCtx.addEffectiveSubstatement(copy);
usesNode.addAsEffectOfStatement(copy);
- } else if (isReusedByUses(originalStmtCtx)) {
+ } else if (isReusedByUsesOnTop(originalStmtCtx)) {
targetCtx.addEffectiveSubstatement(originalStmtCtx);
usesNode.addAsEffectOfStatement(originalStmtCtx);
}
TypeOfCopy.ADDED_BY_USES);
targetCtx.addEffectiveSubstatement(copy);
usesNode.addAsEffectOfStatement(copy);
- } else if (isReusedByUses(originalStmtCtx)) {
+ } else if (isReusedByUsesOnTop(originalStmtCtx)) {
targetCtx.addEffectiveSubstatement(originalStmtCtx);
usesNode.addAsEffectOfStatement(originalStmtCtx);
}
QName targetQName = (QName) targetStmtArgument;
QNameModule targetQNameModule = targetQName.getModule();
- QName sourceQName = (QName) sourceStmtArgument;
- QNameModule sourceQNameModule = sourceQName.getModule();
-
- if (targetQNameModule.equals(sourceQNameModule)) {
- return null;
- } else {
- return targetQNameModule;
- }
+ return targetQNameModule;
} else {
return null;
}
noCopyDefSet.add(Rfc6020Mapping.TYPEDEF);
noCopyDefSet.add(Rfc6020Mapping.TYPE);
+ final Set<StatementDefinition> noCopyFromGroupingSet = new HashSet<>();
+ noCopyFromGroupingSet.add(Rfc6020Mapping.DESCRIPTION);
+ noCopyFromGroupingSet.add(Rfc6020Mapping.REFERENCE);
+
StatementDefinition def = stmtContext.getPublicDefinition();
- return !noCopyDefSet.contains(def);
+ boolean dontCopyFromParentGrouping = noCopyFromGroupingSet.contains(def) && stmtContext.getParentContext()
+ .getPublicDefinition().equals(Rfc6020Mapping.GROUPING);
+
+ return !noCopyDefSet.contains(def) && !dontCopyFromParentGrouping;
}
public static boolean isReusedByUses(StmtContext<?, ?, ?> stmtContext) {
+ Set<StatementDefinition> reusedDefSet = new HashSet<>();
+ reusedDefSet.add(Rfc6020Mapping.TYPEDEF);
+ reusedDefSet.add(Rfc6020Mapping.TYPE);
+ reusedDefSet.add(Rfc6020Mapping.USES);
+
+ StatementDefinition def = stmtContext.getPublicDefinition();
+ return reusedDefSet.contains(def);
+ }
+
+ public static boolean isReusedByUsesOnTop(StmtContext<?, ?, ?> stmtContext) {
+
Set<StatementDefinition> reusedDefSet = new HashSet<>();
reusedDefSet.add(Rfc6020Mapping.TYPEDEF);
reusedDefSet.add(Rfc6020Mapping.TYPE);