Correct DefaultWith{Schema,Data}Tree statefulness
[yangtools.git] / model / yang-model-spi / src / main / java / org / opendaylight / yangtools / yang / model / spi / meta / AbstractUndeclaredEffectiveStatement.java
index 895f545b8d77fa299dd65faab75d940a8df9b7e1..c4ba858efd539a2cc707defa22e38acd66e3384d 100644 (file)
@@ -108,34 +108,22 @@ public abstract class AbstractUndeclaredEffectiveStatement<A, D extends Declared
      */
     public abstract static class DefaultWithSchemaTree<A, D extends DeclaredStatement<A>,
             E extends SchemaTreeAwareEffectiveStatement<A, D>> extends WithSchemaTree<A, D, E> {
-        public abstract static class WithSubstatements<A, D extends DeclaredStatement<A>,
-                E extends SchemaTreeAwareEffectiveStatement<A, D>> extends DefaultWithSchemaTree<A, D, E> {
-            private final @NonNull Object substatements;
-
-            protected WithSubstatements(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-                super(substatements);
-                this.substatements = maskList(substatements);
-            }
-
-            protected WithSubstatements(final WithSubstatements<A, D, E> original) {
-                super(original);
-                this.substatements = original.substatements;
-            }
-
-            @Override
-            public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
-                return unmaskList(substatements);
-            }
-        }
-
         private final @NonNull ImmutableMap<QName, SchemaTreeEffectiveStatement<?>> schemaTree;
+        private final @NonNull Object substatements;
 
         protected DefaultWithSchemaTree(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+            this.substatements = maskList(substatements);
             this.schemaTree = ImmutableMap.copyOf(createSchemaTreeNamespace(substatements));
         }
 
         protected DefaultWithSchemaTree(final DefaultWithSchemaTree<A, D, E> original) {
             this.schemaTree = original.schemaTree;
+            this.substatements = original.substatements;
+        }
+
+        @Override
+        public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
+            return unmaskList(substatements);
         }
 
         @Override
@@ -154,38 +142,26 @@ public abstract class AbstractUndeclaredEffectiveStatement<A, D extends Declared
      */
     public abstract static class DefaultWithDataTree<A, D extends DeclaredStatement<A>,
             E extends DataTreeAwareEffectiveStatement<A, D>> extends WithDataTree<A, D, E> {
-        public abstract static class WithSubstatements<A, D extends DeclaredStatement<A>,
-                E extends DataTreeAwareEffectiveStatement<A, D>> extends DefaultWithDataTree<A, D, E> {
-            private final @NonNull Object substatements;
-
-            protected WithSubstatements(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-                super(substatements);
-                this.substatements = maskList(substatements);
-            }
-
-            protected WithSubstatements(final WithSubstatements<A, D, E> original) {
-                super(original);
-                this.substatements = original.substatements;
-            }
-
-            @Override
-            public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
-                return unmaskList(substatements);
-            }
-        }
-
         private final @NonNull ImmutableMap<QName, SchemaTreeEffectiveStatement<?>> schemaTree;
         private final @NonNull ImmutableMap<QName, DataTreeEffectiveStatement<?>> dataTree;
+        private final @NonNull Object substatements;
 
         protected DefaultWithDataTree(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
             final Map<QName, SchemaTreeEffectiveStatement<?>> schema = createSchemaTreeNamespace(substatements);
             this.schemaTree = ImmutableMap.copyOf(schema);
             this.dataTree = createDataTreeNamespace(schema.values(), schemaTree);
+            this.substatements = maskList(substatements);
         }
 
         protected DefaultWithDataTree(final DefaultWithDataTree<A, D, E> original) {
             this.schemaTree = original.schemaTree;
             this.dataTree = original.dataTree;
+            this.substatements = original.substatements;
+        }
+
+        @Override
+        public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
+            return unmaskList(substatements);
         }
 
         @Override