Make SchemaNode.getPath() implementations as deprecated
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / container / ContainerEffectiveStatementImpl.java
index da1aa75fcfcb3f2a7f5eaf747abe6e242c82c984..448ad6b664490793a4a4c97d0bdd7d604d67d355 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.container;
 
-import static com.google.common.base.Verify.verify;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
@@ -24,7 +23,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ContainerEffectiveStatemen
 import org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.compat.ActionNodeContainerCompat;
 import org.opendaylight.yangtools.yang.model.api.stmt.compat.NotificationNodeContainerCompat;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.ActionNodeContainerMixin;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.AugmentationTargetMixin;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.DataNodeContainerMixin;
@@ -36,18 +35,17 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStmtUtils;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
 final class ContainerEffectiveStatementImpl
-        extends DefaultWithDataTree<QName, ContainerStatement, ContainerEffectiveStatement>
+        extends WithSubstatements<QName, ContainerStatement, ContainerEffectiveStatement>
         implements ContainerEffectiveStatement, ContainerSchemaNode, DerivableSchemaNode,
             DataSchemaNodeMixin<QName, ContainerStatement>, DataNodeContainerMixin<QName, ContainerStatement>,
             ActionNodeContainerMixin<QName, ContainerStatement>,
-            ActionNodeContainerCompat<QName, ContainerStatement>,
+            ActionNodeContainerCompat<QName, ContainerStatement, ContainerEffectiveStatement>,
             NotificationNodeContainerMixin<QName, ContainerStatement>,
-            NotificationNodeContainerCompat<QName, ContainerStatement>,
+            NotificationNodeContainerCompat<QName, ContainerStatement, ContainerEffectiveStatement>,
             MustConstraintMixin<QName, ContainerStatement>, PresenceMixin<QName, ContainerStatement>,
             AugmentationTargetMixin<QName, ContainerStatement> {
 
     private final int flags;
-    private final @NonNull Object substatements;
     private final @NonNull SchemaPath path;
     private final @Nullable ContainerSchemaNode original;
 
@@ -60,22 +58,11 @@ final class ContainerEffectiveStatementImpl
         EffectiveStmtUtils.checkUniqueTypedefs(ctx, substatements);
         EffectiveStmtUtils.checkUniqueUses(ctx, substatements);
 
-        this.substatements = substatements.size() == 1 ? substatements.get(0) : substatements;
         this.path = requireNonNull(path);
         this.original = original;
         this.flags = flags;
     }
 
-    @SuppressWarnings("unchecked")
-    @Override
-    public ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
-        if (substatements instanceof ImmutableList) {
-            return (ImmutableList<? extends EffectiveStatement<?, ?>>) substatements;
-        }
-        verify(substatements instanceof EffectiveStatement, "Unexpected substatement %s", substatements);
-        return ImmutableList.of((EffectiveStatement<?, ?>) substatements);
-    }
-
     @Override
     public int flags() {
         return flags;
@@ -87,6 +74,7 @@ final class ContainerEffectiveStatementImpl
     }
 
     @Override
+    @Deprecated
     public SchemaPath getPath() {
         return path;
     }