private final SubstatementValidator validator;
GroupingStatementSupport(final SubstatementValidator validator) {
- super(YangStmtMapping.GROUPING, StatementPolicy.legacyDeclaredCopy());
+ super(YangStmtMapping.GROUPING, StatementPolicy.copyDeclared(
+ (copy, current, substatements) ->
+ copy.history().isAddedByUses() == current.history().isAddedByUses()
+ && copy.getArgument().equals(current.getArgument())
+ && copy.equalParentPath(current)));
this.validator = requireNonNull(validator);
}
import org.opendaylight.yangtools.yang.model.api.stmt.NotificationEffectiveStatement;
public class YT1208Test {
+ @Test
+ public void testGroupingStatementReuse() throws Exception {
+ final ModuleEffectiveStatement module = StmtTestUtils.parseYangSource("/bugs/YT1208/grouping.yang")
+ .getModuleStatements()
+ .get(QNameModule.create(URI.create("foo")));
+ assertNotNull(module);
+
+ final NotificationEffectiveStatement notif = module
+ .findFirstEffectiveSubstatement(NotificationEffectiveStatement.class).orElseThrow();
+
+ final GroupingEffectiveStatement grpBar = notif
+ .findFirstEffectiveSubstatement(GroupingEffectiveStatement.class).orElseThrow()
+ .findFirstEffectiveSubstatement(ContainerEffectiveStatement.class).orElseThrow()
+ .findFirstEffectiveSubstatement(GroupingEffectiveStatement.class).orElseThrow();
+ final GroupingEffectiveStatement contBar = notif
+ .findFirstEffectiveSubstatement(ContainerEffectiveStatement.class).orElseThrow()
+ .findFirstEffectiveSubstatement(ContainerEffectiveStatement.class).orElseThrow()
+ .findFirstEffectiveSubstatement(GroupingEffectiveStatement.class).orElseThrow();
+
+ assertSame(contBar, grpBar);
+ }
+
@Test
public void testLeafStatementReuse() throws Exception {
final ModuleEffectiveStatement module = StmtTestUtils.parseYangSource("/bugs/YT1208/leaf.yang")