Move case statement implementations 36/95236/1
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 19 Feb 2021 15:44:38 +0000 (16:44 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 19 Feb 2021 16:28:15 +0000 (17:28 +0100)
Case statements are rather simple, migrate them to yang-model-ri.

JIRA: YANGTOOLS-1241
Change-Id: I71e1992e51f219f20f82cd02a4c08005eb2ac72c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
15 files changed:
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/DeclaredStatements.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/EffectiveStatements.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/ImplicitStatements.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/decl/EmptyCaseStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/EmptyCaseStatement.java with 73% similarity]
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/decl/EmptyUndeclaredCaseStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/EmptyUndeclaredCaseStatement.java with 73% similarity]
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/decl/RegularCaseStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/RegularCaseStatement.java with 71% similarity]
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/decl/RegularUndeclaredCaseStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/RegularUndeclaredCaseStatement.java with 79% similarity]
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/CaseEffectiveStatementMixin.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/CaseEffectiveStatementMixin.java with 96% similarity]
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ChoiceEffectiveStatementImpl.java
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredCaseEffectiveStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/DeclaredCaseEffectiveStatement.java with 85% similarity]
yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/UndeclaredCaseEffectiveStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/UndeclaredCaseEffectiveStatement.java with 83% similarity]
yang/yang-parser-rfc7950/src/main/java/module-info.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/RFC7950Reactors.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/CaseStatementSupport.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/CaseStatementSupport.java with 83% similarity]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ChoiceStatementSupport.java

index 6ce0ebd369518a02f6c4b3355ef247c81d4b4bc7..a3a6f849c389494f5e4192785d5bded75dccbf07 100644 (file)
@@ -31,6 +31,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.AugmentStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.BaseStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ContactStatement;
@@ -107,6 +108,7 @@ import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyAugmentState
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyBaseStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyBelongsToStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyBitStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyCaseStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyChoiceStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyConfigStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyContactStatement;
@@ -171,6 +173,7 @@ import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularAugmentSta
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularBaseStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularBelongsToStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularBitStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularCaseStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularChoiceStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularConfigStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularContactStatement;
@@ -285,6 +288,12 @@ public final class DeclaredStatements {
             : new RegularBitStatement(argument, substatements);
     }
 
+    public static CaseStatement createCase(final QName argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? new EmptyCaseStatement(argument)
+            : new RegularCaseStatement(argument, substatements);
+    }
+
     public static ChoiceStatement createChoice(final QName argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         return substatements.isEmpty() ? new EmptyChoiceStatement(argument)
index ba54c605ba4321dbee907d76bd719fbdd6a77ca7..1c510dee321b349ca19a253a0eab47854b9f28f5 100644 (file)
@@ -42,6 +42,8 @@ import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToEffectiveStatemen
 import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.BitEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ConfigEffectiveStatement;
@@ -152,6 +154,7 @@ import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.ActionEffectiveSta
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.AugmentEffectiveStatementImpl;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.ChoiceEffectiveStatementImpl;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.ContainerEffectiveStatementImpl;
+import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.DeclaredCaseEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.DeclaredInputEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.DeclaredOutputEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.DeviateEffectiveStatementImpl;
@@ -250,6 +253,7 @@ import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularYangVersion
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularYinElementEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RpcEffectiveStatementImpl;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.TypedefEffectiveStatementImpl;
+import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.UndeclaredCaseEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.UndeclaredInputEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.UndeclaredOutputEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException;
@@ -347,10 +351,35 @@ public final class EffectiveStatements {
             : new RegularBitEffectiveStatement(declared, substatements);
     }
 
+    public static CaseEffectiveStatement copyCase(final CaseEffectiveStatement original,
+            final Immutable path, final int flags, final @Nullable CaseSchemaNode newOriginal) {
+        if (original instanceof DeclaredCaseEffectiveStatement) {
+            return new DeclaredCaseEffectiveStatement((DeclaredCaseEffectiveStatement) original, path, flags,
+                newOriginal);
+        } else if (original instanceof UndeclaredCaseEffectiveStatement) {
+            return new UndeclaredCaseEffectiveStatement((UndeclaredCaseEffectiveStatement) original, path, flags,
+                newOriginal);
+        } else {
+            throw new IllegalArgumentException("Unsupported origin " + original);
+        }
+    }
+
+    public static CaseEffectiveStatement createCase(final Immutable path,
+            final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
+                final @Nullable CaseSchemaNode original) {
+        return new UndeclaredCaseEffectiveStatement(substatements, path, flags, original);
+    }
+
+    public static CaseEffectiveStatement createCase(final CaseStatement declared, final Immutable path,
+            final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
+            final @Nullable CaseSchemaNode original) {
+        return new DeclaredCaseEffectiveStatement(declared, substatements, path, flags, original);
+    }
+
     public static ChoiceEffectiveStatement copyChoice(final ChoiceEffectiveStatement original,
-            final Immutable path, final int flags, final @Nullable ChoiceSchemaNode orig) {
+            final Immutable path, final int flags, final @Nullable ChoiceSchemaNode newOriginal) {
         checkArgument(original instanceof ChoiceEffectiveStatementImpl, "Unsupported original %s", original);
-        return new ChoiceEffectiveStatementImpl((ChoiceEffectiveStatementImpl) original, path, flags, orig);
+        return new ChoiceEffectiveStatementImpl((ChoiceEffectiveStatementImpl) original, path, flags, newOriginal);
     }
 
     public static ChoiceEffectiveStatement createChoice(final ChoiceStatement declared, final Immutable path,
index 219289f688b32d3f03bfedc2cc59894dd466a5ac..3fc444c642ccd31bc4ab3f3ef797694e285ec429 100644 (file)
@@ -12,10 +12,13 @@ import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.InputStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.OutputStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyUndeclaredCaseStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyUndeclaredInputStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyUndeclaredOutputStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularUndeclaredCaseStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularUndeclaredInputStatement;
 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularUndeclaredOutputStatement;
 
@@ -30,6 +33,12 @@ public final class ImplicitStatements {
         // Hidden on purpose
     }
 
+    public static CaseStatement createCase(final QName argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? new EmptyUndeclaredCaseStatement(argument)
+            : new RegularUndeclaredCaseStatement(argument, substatements);
+    }
+
     public static InputStatement createInput(final QName argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         return substatements.isEmpty() ? new EmptyUndeclaredInputStatement(argument)
@@ -5,14 +5,14 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl;
 
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithQNameArgument;
 
-class EmptyCaseStatement extends WithQNameArgument implements CaseStatement {
-    EmptyCaseStatement(final QName argument) {
+public class EmptyCaseStatement extends WithQNameArgument implements CaseStatement {
+    public EmptyCaseStatement(final QName argument) {
         super(argument);
     }
 }
@@ -5,13 +5,13 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl;
 
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
 
-final class EmptyUndeclaredCaseStatement extends EmptyCaseStatement {
-    EmptyUndeclaredCaseStatement(final QName argument) {
+public final class EmptyUndeclaredCaseStatement extends EmptyCaseStatement {
+    public EmptyUndeclaredCaseStatement(final QName argument) {
         super(argument);
     }
 
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -13,8 +13,9 @@ import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithQNameArgument.WithSubstatements;
 
-class RegularCaseStatement extends WithSubstatements implements CaseStatement {
-    RegularCaseStatement(final QName argument, final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+public class RegularCaseStatement extends WithSubstatements implements CaseStatement {
+    public RegularCaseStatement(final QName argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         super(argument, substatements);
     }
 }
@@ -5,15 +5,15 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
 
-final class RegularUndeclaredCaseStatement extends RegularCaseStatement {
-    RegularUndeclaredCaseStatement(final QName argument,
+public final class RegularUndeclaredCaseStatement extends RegularCaseStatement {
+    public RegularUndeclaredCaseStatement(final QName argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         super(argument, substatements);
     }
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.QName;
index 01500f8a470c9a4c1a2110a76b7bdbd960578418..27b143ee32ae1d7bb3b746e8ff9d565720025a7e 100644 (file)
@@ -50,12 +50,12 @@ public final class ChoiceEffectiveStatementImpl
     }
 
     public ChoiceEffectiveStatementImpl(final ChoiceEffectiveStatementImpl origEffective, final Immutable path,
-            final int flags, final ChoiceSchemaNode original) {
+            final int flags, final ChoiceSchemaNode newOriginal) {
         super(origEffective);
         this.path = requireNonNull(path);
         this.flags = flags;
         this.defaultCase = origEffective.defaultCase;
-        this.original = original;
+        this.original = newOriginal;
     }
 
     @Override
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 
 import static java.util.Objects.requireNonNull;
 
@@ -22,13 +22,13 @@ import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
 
-final class DeclaredCaseEffectiveStatement extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement>
-        implements CaseEffectiveStatementMixin {
+public final class DeclaredCaseEffectiveStatement
+        extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement> implements CaseEffectiveStatementMixin {
     private final CaseSchemaNode original;
     private final @NonNull Immutable path;
     private final int flags;
 
-    DeclaredCaseEffectiveStatement(final CaseStatement declared,
+    public DeclaredCaseEffectiveStatement(final CaseStatement declared,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
             final int flags, final @Nullable CaseSchemaNode original) {
         super(declared, substatements);
@@ -37,7 +37,7 @@ final class DeclaredCaseEffectiveStatement extends WithSubstatements<QName, Case
         this.original = original;
     }
 
-    DeclaredCaseEffectiveStatement(final DeclaredCaseEffectiveStatement origEffective, final Immutable path,
+    public DeclaredCaseEffectiveStatement(final DeclaredCaseEffectiveStatement origEffective, final Immutable path,
             final int flags, final @Nullable CaseSchemaNode original) {
         super(origEffective);
         this.path = requireNonNull(path);
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 
 import static java.util.Objects.requireNonNull;
 
@@ -22,13 +22,13 @@ import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.AbstractUndeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
 
-final class UndeclaredCaseEffectiveStatement extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement>
-        implements CaseEffectiveStatementMixin {
+public final class UndeclaredCaseEffectiveStatement
+        extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement> implements CaseEffectiveStatementMixin {
     private final @Nullable CaseSchemaNode original;
     private final @NonNull Immutable path;
     private final int flags;
 
-    UndeclaredCaseEffectiveStatement(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
+    public UndeclaredCaseEffectiveStatement(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
             final Immutable path, final int flags, final @Nullable CaseSchemaNode original) {
         super(substatements);
         this.path = requireNonNull(path);
@@ -36,7 +36,7 @@ final class UndeclaredCaseEffectiveStatement extends WithSubstatements<QName, Ca
         this.original = original;
     }
 
-    UndeclaredCaseEffectiveStatement(final UndeclaredCaseEffectiveStatement origEffective, final Immutable path,
+    public UndeclaredCaseEffectiveStatement(final UndeclaredCaseEffectiveStatement origEffective, final Immutable path,
             final int flags, final @Nullable CaseSchemaNode original) {
         super(origEffective);
         this.path = requireNonNull(path);
index 7f135da6c46c49d75ef1b88fdb4681610b7017c3..755b1a3b971dea6415ff05325acf4ca4fa094288 100644 (file)
@@ -39,7 +39,6 @@ module org.opendaylight.yangtools.yang.parser.rfc7950 {
     requires static org.eclipse.jdt.annotation;
 
     // FIXME: hide these
-    exports org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
     exports org.opendaylight.yangtools.yang.parser.rfc7950.stmt.key;
     exports org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf_list;
     exports org.opendaylight.yangtools.yang.parser.rfc7950.stmt.list;
index 819c490df5e2182549fb250284384026b1ee54a1..7bb2ee5b0fe8cc51d410b50f000b86af99ab49e5 100644 (file)
@@ -22,7 +22,6 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.XPathSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.augment.AugmentImplicitHandlingNamespace;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.augment.AugmentStatementRFC6020Support;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.augment.AugmentStatementRFC7950Support;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_.CaseStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.deviate.DeviateStatementRFC6020Support;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.deviate.DeviateStatementRFC7950Support;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.ExtensionStatementSupport;
@@ -41,6 +40,7 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.ArgumentStatemen
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.BaseStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.BelongsToStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.BitStatementSupport;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.CaseStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.ChoiceStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.ConfigStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.ContactStatementSupport;
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
 
 import static java.util.Objects.requireNonNull;
 
@@ -27,6 +27,9 @@ import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
 import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatements;
+import org.opendaylight.yangtools.yang.model.ri.stmt.EffectiveStatements;
+import org.opendaylight.yangtools.yang.model.ri.stmt.ImplicitStatements;
 import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.EffectiveStatementWithFlags.FlagsBuilder;
 import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseImplicitStatementSupport;
@@ -95,38 +98,27 @@ public final class CaseStatementSupport
     protected CaseStatement createDeclared(final StmtContext<QName, CaseStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         final StatementSource source = ctx.source();
-        if (substatements.isEmpty()) {
-            switch (source) {
-                case CONTEXT:
-                    return new EmptyUndeclaredCaseStatement(ctx.getArgument());
-                case DECLARATION:
-                    return new EmptyCaseStatement(ctx.getArgument());
-                default:
-                    throw new IllegalStateException("Unhandled statement source " + source);
-            }
-        } else {
-            switch (source) {
-                case CONTEXT:
-                    return new RegularUndeclaredCaseStatement(ctx.getArgument(), substatements);
-                case DECLARATION:
-                    return new RegularCaseStatement(ctx.getArgument(), substatements);
-                default:
-                    throw new IllegalStateException("Unhandled statement source " + source);
-            }
+        switch (source) {
+            case CONTEXT:
+                return ImplicitStatements.createCase(ctx.getArgument(), substatements);
+            case DECLARATION:
+                return DeclaredStatements.createCase(ctx.getArgument(), substatements);
+            default:
+                throw new IllegalStateException("Unhandled statement source " + source);
         }
     }
 
     @Override
     protected CaseEffectiveStatement copyDeclaredEffective(final Current<QName, CaseStatement> stmt,
             final CaseEffectiveStatement original) {
-        return new DeclaredCaseEffectiveStatement((DeclaredCaseEffectiveStatement) original, stmt.effectivePath(),
+        return EffectiveStatements.copyCase(original, stmt.effectivePath(),
             computeFlags(stmt, original.effectiveSubstatements()), stmt.original(CaseSchemaNode.class));
     }
 
     @Override
     protected CaseEffectiveStatement copyUndeclaredEffective(final Current<QName, CaseStatement> stmt,
             final CaseEffectiveStatement original) {
-        return new UndeclaredCaseEffectiveStatement((UndeclaredCaseEffectiveStatement) original, stmt.effectivePath(),
+        return EffectiveStatements.copyCase(original, stmt.effectivePath(),
             computeFlags(stmt, original.effectiveSubstatements()), stmt.original(CaseSchemaNode.class));
     }
 
@@ -134,8 +126,8 @@ public final class CaseStatementSupport
     protected CaseEffectiveStatement createDeclaredEffective(final Current<QName, CaseStatement> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         try {
-            return new DeclaredCaseEffectiveStatement(stmt.declared(), substatements, stmt.effectivePath(),
-                computeFlags(stmt, substatements), stmt.original(CaseSchemaNode.class));
+            return EffectiveStatements.createCase(stmt.declared(), stmt.effectivePath(),
+                computeFlags(stmt, substatements), substatements, stmt.original(CaseSchemaNode.class));
         } catch (SubstatementIndexingException e) {
             throw new SourceException(e.getMessage(), stmt, e);
         }
@@ -145,8 +137,8 @@ public final class CaseStatementSupport
     protected CaseEffectiveStatement createUndeclaredEffective(final Current<QName, CaseStatement> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         try {
-            return new UndeclaredCaseEffectiveStatement(substatements, stmt.effectivePath(),
-                computeFlags(stmt, substatements), stmt.original(CaseSchemaNode.class));
+            return EffectiveStatements.createCase(stmt.effectivePath(), computeFlags(stmt, substatements),
+                substatements, stmt.original(CaseSchemaNode.class));
         } catch (SubstatementIndexingException e) {
             throw new SourceException(e.getMessage(), stmt, e);
         }
index 36211e9a72cca3bf6974025b96c2fc1cb80b297d..77ae7057b2da47577f10be0d360c58d78ad096c7 100644 (file)
@@ -32,7 +32,6 @@ import org.opendaylight.yangtools.yang.model.ri.stmt.EffectiveStatements;
 import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.EffectiveStatementWithFlags.FlagsBuilder;
 import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException;
 import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.YangValidationBundles;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_.CaseStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractSchemaTreeStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ImplicitParentAwareStatementSupport;