Defer copy decisions to StatementSupport
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / reference / ReferenceStatementSupport.java
index 28ba59ab0f61238195539bfd5554f2b7488b4e26..365e4ce28488e18b1ea799f9a2336b360031d674 100644 (file)
@@ -8,13 +8,18 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.reference;
 
 import com.google.common.collect.ImmutableList;
+import java.util.Optional;
+import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStringStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.CopyType;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class ReferenceStatementSupport
@@ -37,6 +42,13 @@ public final class ReferenceStatementSupport
         return value;
     }
 
+    @Override
+    public Optional<? extends Mutable<?, ?, ?>> copyAsChildOf(final Mutable<?, ?, ?> stmt,
+            final Mutable<?, ?, ?> parent, final CopyType type, final QNameModule targetModule) {
+        return StmtContextUtils.isChildOfGrouping(stmt) ? Optional.empty()
+                : super.copyAsChildOf(stmt, parent, type, targetModule);
+    }
+
     @Override
     protected SubstatementValidator getSubstatementValidator() {
         return SUBSTATEMENT_VALIDATOR;
@@ -67,4 +79,4 @@ public final class ReferenceStatementSupport
             final ReferenceStatement declared) {
         return new EmptyReferenceEffectiveStatement(declared);
     }
-}
\ No newline at end of file
+}