Promote more declared statements to yang-parser-spi 84/95084/1
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 9 Feb 2021 00:25:24 +0000 (01:25 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 9 Feb 2021 00:55:24 +0000 (01:55 +0100)
Declared statements are extremely simplistic, move their RFC7950
implementations to yang-model-spi. This is the second batch of
conversion, with more to follow.

JIRA: YANGTOOLS-1226
Change-Id: I9ca7a8af5c4a98fc1a6afc09e5b8b65434f9f1c8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
43 files changed:
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/DeclaredStatements.java
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/DeviateStatementImpl.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviate/DeviateStatementImpl.java with 81% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/DeviationStatementImpl.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviation/DeviationStatementImpl.java with 93% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/EmptyEnumStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EmptyEnumStatement.java with 91% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/EmptyErrorAppTagStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/error_app_tag/EmptyErrorAppTagStatement.java with 90% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/EmptyErrorMessageStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/error_message/EmptyErrorMessageStatement.java with 90% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/EmptyExtensionStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/EmptyExtensionStatement.java with 90% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/EmptyFeatureStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/feature/EmptyFeatureStatement.java with 91% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/EmptyFractionDigitsStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/fraction_digits/EmptyFractionDigitsStatement.java with 90% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/EmptyGroupingStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/EmptyGroupingStatement.java with 91% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/EmptyIdentityStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/identity/EmptyIdentityStatement.java with 91% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/EmptyIfFeatureStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/if_feature/EmptyIfFeatureStatement.java with 92% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/EmptyIncludeStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/EmptyIncludeStatement.java with 90% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/EmptyInputStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/input/EmptyInputStatement.java with 91% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/EmptyUndeclaredInputStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/input/EmptyUndeclaredInputStatement.java with 91% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/ImportStatementImpl.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementImpl.java with 92% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/RegularEnumStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/RegularEnumStatement.java with 93% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/RegularErrorAppTagStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/error_app_tag/RegularErrorAppTagStatement.java with 92% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/RegularErrorMessageStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/error_message/RegularErrorMessageStatement.java with 92% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/RegularExtensionStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/RegularExtensionStatement.java with 92% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/RegularFeatureStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/feature/RegularFeatureStatement.java with 93% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/RegularFractionDigitsStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/fraction_digits/RegularFractionDigitsStatement.java with 92% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/RegularGroupingStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/RegularGroupingStatement.java with 93% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/RegularIdentityStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/identity/RegularIdentityStatement.java with 93% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/RegularIfFeatureStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/if_feature/RegularIfFeatureStatement.java with 93% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/RegularIncludeStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/RegularIncludeStatement.java with 93% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/RegularInputStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/input/RegularInputStatement.java with 93% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/RegularUndeclaredInputStatement.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/input/RegularUndeclaredInputStatement.java with 93% similarity]
yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/UndeclaredStatements.java [new file with mode: 0644]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviate/AbstractDeviateStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviation/DeviationStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/error_app_tag/ErrorAppTagStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/error_message/ErrorMessageStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/feature/FeatureStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/fraction_digits/FractionDigitsStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/GroupingStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/identity/IdentityStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/if_feature/AbstractIfFeatureStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/IncludeStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/input/InputStatementSupport.java

index 577de13213d92f95f94a79cea6956a3ea37eaf59..fe9d6711d340abbf7d0d781807c335c9ebbad222 100644 (file)
@@ -11,6 +11,7 @@ import com.google.common.annotations.Beta;
 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.DeviateKind;
 import org.opendaylight.yangtools.yang.model.api.Status;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ActionStatement;
@@ -26,7 +27,23 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DefaultStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.DeviateStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.DeviationStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.EnumStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ErrorAppTagStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ErrorMessageStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.FeatureStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.FractionDigitsStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureExpr;
+import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.InputStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
 import org.opendaylight.yangtools.yang.model.api.stmt.StatusStatement;
 
 /**
@@ -161,6 +178,145 @@ public final class DeclaredStatements {
             : new RegularDescriptionStatement(argument, substatements);
     }
 
+    public static DeviateStatement createDeviate(final DeviateKind argument) {
+        // This is exceedingly unlikely, just reuse the implementation
+        return createDeviate(argument, ImmutableList.of());
+    }
+
+    public static DeviateStatement createDeviate(final DeviateKind argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return new DeviateStatementImpl(argument, substatements);
+    }
+
+    public static DeviationStatement createDeviation(final String rawArgument, final Absolute argument) {
+        // This does not make really sense
+        return createDeviation(rawArgument, argument, ImmutableList.of());
+    }
+
+    public static DeviationStatement createDeviation(final String rawArgument, final Absolute argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return new DeviationStatementImpl(rawArgument, argument, substatements);
+    }
+
+    // FIXME: what is the distinction between rawArgument and argument?
+    public static EnumStatement createEnum(final String rawArgument, final String argument) {
+        return new EmptyEnumStatement(rawArgument, argument);
+    }
+
+    public static EnumStatement createEnum(final String rawArgument, final String argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? createEnum(rawArgument, argument)
+            : new RegularEnumStatement(rawArgument, argument, substatements);
+    }
+
+    public static ErrorAppTagStatement createErrorAppTag(final String argument) {
+        return new EmptyErrorAppTagStatement(argument);
+    }
+
+    public static ErrorAppTagStatement createErrorAppTag(final String argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? createErrorAppTag(argument)
+            : new RegularErrorAppTagStatement(argument, substatements);
+    }
+
+    public static ErrorMessageStatement createErrorMessage(final String argument) {
+        return new EmptyErrorMessageStatement(argument);
+    }
+
+    public static ErrorMessageStatement createErrorMessage(final String argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? createErrorMessage(argument)
+            : new RegularErrorMessageStatement(argument, substatements);
+    }
+
+    public static ExtensionStatement createExtension(final QName argument) {
+        return new EmptyExtensionStatement(argument);
+    }
+
+    public static ExtensionStatement createExtension(final QName argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? createExtension(argument)
+            : new RegularExtensionStatement(argument, substatements);
+    }
+
+    public static FeatureStatement createFeature(final QName argument) {
+        return new EmptyFeatureStatement(argument);
+    }
+
+    public static FeatureStatement createFeature(final QName argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? createFeature(argument) : new RegularFeatureStatement(argument, substatements);
+    }
+
+    public static FractionDigitsStatement createFractionDigits(final Integer argument) {
+        return new EmptyFractionDigitsStatement(argument);
+    }
+
+    public static FractionDigitsStatement createFractionDigits(final Integer argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? createFractionDigits(argument)
+            : new RegularFractionDigitsStatement(argument, substatements);
+    }
+
+    public static GroupingStatement createGrouping(final QName argument) {
+        return new EmptyGroupingStatement(argument);
+    }
+
+    public static GroupingStatement createGrouping(final QName argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? createGrouping(argument)
+            : new RegularGroupingStatement(argument, substatements);
+    }
+
+    public static IdentityStatement createIdentity(final QName argument) {
+        return new EmptyIdentityStatement(argument);
+    }
+
+    public static IdentityStatement createIdentity(final QName argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? createIdentity(argument)
+            : new RegularIdentityStatement(argument, substatements);
+    }
+
+    public static IfFeatureStatement createIfFeature(final String rawArgument, final IfFeatureExpr argument) {
+        return new EmptyIfFeatureStatement(rawArgument, argument);
+    }
+
+    public static IfFeatureStatement createIfFeature(final String rawArgument, final IfFeatureExpr argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? createIfFeature(rawArgument, argument)
+            : new RegularIfFeatureStatement(rawArgument, argument, substatements);
+    }
+
+    public static ImportStatement createImport(final String argument) {
+        // This should never happen
+        return createImport(argument, ImmutableList.of());
+    }
+
+    public static ImportStatement createImport(final String argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return new ImportStatementImpl(argument, substatements);
+    }
+
+    public static IncludeStatement createInclude(final String rawArgument, final String argument) {
+        return new EmptyIncludeStatement(rawArgument, argument);
+    }
+
+    public static IncludeStatement createInclude(final String rawArgument, final String argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? createInclude(rawArgument, argument)
+            : new RegularIncludeStatement(rawArgument, argument, substatements);
+    }
+
+    public static InputStatement createInput(final QName argument) {
+        return new EmptyInputStatement(argument);
+    }
+
+    public static InputStatement createInput(final QName argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? createInput(argument) : new RegularInputStatement(argument, substatements);
+    }
+
     public static StatusStatement createStatus(final Status argument) {
         return new EmptyStatusStatement(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.deviate;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.model.api.DeviateKind;
@@ -14,8 +14,8 @@ import org.opendaylight.yangtools.yang.model.api.stmt.DeviateStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithArgument.WithSubstatements;
 
 final class DeviateStatementImpl extends WithSubstatements<DeviateKind> implements DeviateStatement {
-    DeviateStatementImpl(final String rawArgument, final DeviateKind argument,
+    DeviateStatementImpl(final DeviateKind argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        super(rawArgument, argument, substatements);
+        super(argument.getKeyword(), 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.deviation;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
@@ -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.enum_;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import org.opendaylight.yangtools.yang.model.api.stmt.EnumStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithArgument;
@@ -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.error_app_tag;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.model.api.stmt.ErrorAppTagStatement;
@@ -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.error_message;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.model.api.stmt.ErrorMessageStatement;
@@ -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.extension;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionStatement;
@@ -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.feature;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.stmt.FeatureStatement;
@@ -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.fraction_digits;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import org.opendaylight.yangtools.yang.model.api.stmt.FractionDigitsStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.ArgumentToString;
@@ -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.grouping;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
@@ -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.identity;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
@@ -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.if_feature;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureExpr;
@@ -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.include;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithArgument;
@@ -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.input;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.stmt.InputStatement;
@@ -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.input;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
@@ -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.import_;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
@@ -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.enum_;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
@@ -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.error_app_tag;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
@@ -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.error_message;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
@@ -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.extension;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -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.feature;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -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.fraction_digits;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
@@ -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.grouping;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -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.identity;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -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.if_feature;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
@@ -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.include;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
@@ -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.input;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -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.input;
+package org.opendaylight.yangtools.yang.model.spi.stmt;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.QName;
diff --git a/yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/UndeclaredStatements.java b/yang/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/stmt/UndeclaredStatements.java
new file mode 100644 (file)
index 0000000..d54871e
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.model.spi.stmt;
+
+import com.google.common.annotations.Beta;
+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.InputStatement;
+
+/**
+ * Static entry point to instantiating {@link DeclaredStatements} covered in the {@code RFC7950} metamodel which are
+ * not really declared, i.e. inferred to exist.
+ */
+@Beta
+@NonNullByDefault
+public final class UndeclaredStatements {
+    private UndeclaredStatements() {
+        // Hidden on purpose
+    }
+
+    public static InputStatement createInput(final QName argument) {
+        return new EmptyUndeclaredInputStatement(argument);
+    }
+
+    public static InputStatement createInput(final QName argument,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return substatements.isEmpty() ? createInput(argument)
+            : new RegularUndeclaredInputStatement(argument, substatements);
+    }
+}
index d7c16ca7a7a71f39d7c089bc651298be52300207..3b394a12a533a263319f1380211168f499bf9ff0 100644 (file)
@@ -28,6 +28,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 import org.opendaylight.yangtools.yang.model.api.stmt.DeviateEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DeviateStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.YangValidationBundles;
 import org.opendaylight.yangtools.yang.parser.spi.SchemaTreeNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
@@ -191,13 +192,12 @@ abstract class AbstractDeviateStatementSupport
     @Override
     protected final DeviateStatement createDeclared(final StmtContext<DeviateKind, DeviateStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new DeviateStatementImpl(ctx.getRawArgument(), ctx.getArgument(), substatements);
+        return DeclaredStatements.createDeviate(ctx.getArgument(), substatements);
     }
 
     @Override
     protected final DeviateStatement createEmptyDeclared(final StmtContext<DeviateKind, DeviateStatement, ?> ctx) {
-        // This is exceedingly unlikely, just reuse the implementation
-        return createDeclared(ctx, ImmutableList.of());
+        return DeclaredStatements.createDeviate(ctx.getArgument());
     }
 
     @Override
index 96833b667d6d1335d75380a2dea39c188072268e..f492ff90d600656b38ede036d509d17c5be4bcac 100644 (file)
@@ -16,6 +16,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DeviationEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DeviationStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ArgumentUtils;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
@@ -68,12 +69,12 @@ public final class DeviationStatementSupport
     @Override
     protected DeviationStatement createDeclared(final StmtContext<Absolute, DeviationStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new DeviationStatementImpl(ctx.getRawArgument(), ctx.getArgument(), substatements);
+        return DeclaredStatements.createDeviation(ctx.getRawArgument(), ctx.getArgument(), substatements);
     }
 
     @Override
     protected DeviationStatement createEmptyDeclared(final StmtContext<Absolute, DeviationStatement, ?> ctx) {
-        return createDeclared(ctx, ImmutableList.of());
+        return DeclaredStatements.createDeviation(ctx.getRawArgument(), ctx.getArgument());
     }
 
     @Override
index ab99b8d6300d33e61e54cd6061f91486ef5d3bf2..ddb0c1891972e277e52db4505ef06fc18432e45d 100644 (file)
@@ -17,6 +17,7 @@ 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.EnumEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.EnumStatement;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@@ -70,12 +71,12 @@ public final class EnumStatementSupport
     @Override
     protected EnumStatement createDeclared(final StmtContext<String, EnumStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularEnumStatement(ctx.getRawArgument(), ctx.getArgument(), substatements);
+        return DeclaredStatements.createEnum(ctx.getRawArgument(), ctx.getArgument(), substatements);
     }
 
     @Override
     protected EnumStatement createEmptyDeclared(final StmtContext<String, EnumStatement, ?> ctx) {
-        return new EmptyEnumStatement(ctx.getRawArgument(), ctx.getArgument());
+        return DeclaredStatements.createEnum(ctx.getRawArgument(), ctx.getArgument());
     }
 
     @Override
index 1602b7ce43076865f31da8414578e86ebe3452c0..cf764bf6e800564dcc401a342af70083c4e66959 100644 (file)
@@ -13,6 +13,7 @@ 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.ErrorAppTagEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ErrorAppTagStatement;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStringStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@@ -40,12 +41,12 @@ public final class ErrorAppTagStatementSupport
     @Override
     protected ErrorAppTagStatement createDeclared(final StmtContext<String, ErrorAppTagStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularErrorAppTagStatement(ctx.getRawArgument(), substatements);
+        return DeclaredStatements.createErrorAppTag(ctx.getRawArgument(), substatements);
     }
 
     @Override
     protected ErrorAppTagStatement createEmptyDeclared(final StmtContext<String, ErrorAppTagStatement, ?> ctx) {
-        return new EmptyErrorAppTagStatement(ctx.getRawArgument());
+        return DeclaredStatements.createErrorAppTag(ctx.getRawArgument());
     }
 
     @Override
index a31760fa4ea9538df72a87824b24da8c80a3800c..25f7aa996321eb40e0dbf2e2d3f96a17a0ed9a06 100644 (file)
@@ -13,6 +13,7 @@ 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.ErrorMessageEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ErrorMessageStatement;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStringStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@@ -40,12 +41,12 @@ public final class ErrorMessageStatementSupport
     @Override
     protected ErrorMessageStatement createDeclared(final StmtContext<String, ErrorMessageStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularErrorMessageStatement(ctx.getRawArgument(), substatements);
+        return DeclaredStatements.createErrorMessage(ctx.getRawArgument(), substatements);
     }
 
     @Override
     protected ErrorMessageStatement createEmptyDeclared(final StmtContext<String, ErrorMessageStatement, ?> ctx) {
-        return new EmptyErrorMessageStatement(ctx.getRawArgument());
+        return DeclaredStatements.createErrorMessage(ctx.getRawArgument());
     }
 
     @Override
index d8f7d68811e07877a97569ab25be7b5af0454fde..eceded4c2db168898ee6ff3f10c19dc7c415ac85 100644 (file)
@@ -17,6 +17,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ArgumentStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.YinElementStatement;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.spi.ExtensionNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
@@ -80,12 +81,12 @@ public final class ExtensionStatementSupport
     @Override
     protected ExtensionStatement createDeclared(final StmtContext<QName, ExtensionStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularExtensionStatement(ctx.getArgument(), substatements);
+        return DeclaredStatements.createExtension(ctx.getArgument(), substatements);
     }
 
     @Override
     protected ExtensionStatement createEmptyDeclared(final StmtContext<QName, ExtensionStatement, ?> ctx) {
-        return new EmptyExtensionStatement(ctx.getArgument());
+        return DeclaredStatements.createExtension(ctx.getArgument());
     }
 
     @Override
index b4561d42fd06198ae59332ac837bfa7f32b551f6..b3a31cd576d1872653b6963e3dc22891975b511c 100644 (file)
@@ -17,6 +17,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.FeatureEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.FeatureStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.EffectiveStatementWithFlags.FlagsBuilder;
 import org.opendaylight.yangtools.yang.parser.spi.FeatureNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport;
@@ -65,12 +66,12 @@ public final class FeatureStatementSupport
     @Override
     protected FeatureStatement createDeclared(final StmtContext<QName, FeatureStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularFeatureStatement(ctx.getArgument(), substatements);
+        return DeclaredStatements.createFeature(ctx.getArgument(), substatements);
     }
 
     @Override
     protected FeatureStatement createEmptyDeclared(@NonNull final StmtContext<QName, FeatureStatement, ?> ctx) {
-        return new EmptyFeatureStatement(ctx.getArgument());
+        return DeclaredStatements.createFeature(ctx.getArgument());
     }
 
     @Override
index d1b9e80ab32fbea46d033898cbf59103078fd97b..c35953b099bb51f6fe8af1fd10147f6007886767 100644 (file)
@@ -18,6 +18,7 @@ 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.FractionDigitsEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.FractionDigitsStatement;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@@ -30,17 +31,17 @@ public final class FractionDigitsStatementSupport
             SubstatementValidator.builder(YangStmtMapping.FRACTION_DIGITS).build();
     private static final FractionDigitsStatementSupport INSTANCE = new FractionDigitsStatementSupport();
 
-    private static final ImmutableMap<Integer, EmptyFractionDigitsStatement> EMPTY_DECLS;
-    private static final ImmutableMap<EmptyFractionDigitsStatement, EmptyFractionDigitsEffectiveStatement> EMPTY_EFF;
+    private static final ImmutableMap<Integer, FractionDigitsStatement> EMPTY_DECLS;
+    private static final ImmutableMap<FractionDigitsStatement, EmptyFractionDigitsEffectiveStatement> EMPTY_EFF;
 
     static {
-        final Builder<Integer, EmptyFractionDigitsStatement> declBuilder = ImmutableMap.builder();
-        final Builder<EmptyFractionDigitsStatement, EmptyFractionDigitsEffectiveStatement> effBuilder =
+        final Builder<Integer, FractionDigitsStatement> declBuilder = ImmutableMap.builder();
+        final Builder<FractionDigitsStatement, EmptyFractionDigitsEffectiveStatement> effBuilder =
                 ImmutableMap.builder();
 
         for (int i = 1; i <= 18; ++i) {
             final Integer argument = i;
-            final EmptyFractionDigitsStatement decl = new EmptyFractionDigitsStatement(argument);
+            final FractionDigitsStatement decl = DeclaredStatements.createFractionDigits(argument);
             declBuilder.put(argument, decl);
             effBuilder.put(decl, new EmptyFractionDigitsEffectiveStatement(decl));
         }
@@ -79,7 +80,7 @@ public final class FractionDigitsStatementSupport
     @Override
     protected FractionDigitsStatement createDeclared(final StmtContext<Integer, FractionDigitsStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularFractionDigitsStatement(ctx.getArgument(), substatements);
+        return DeclaredStatements.createFractionDigits(ctx.getArgument(), substatements);
     }
 
     @Override
index 07c45f3a9e6790c89ff555dda9aa1ffca5425d19..33c3409c9dc83278964c28936d30fccb99f3ddd1 100644 (file)
@@ -20,6 +20,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.GroupingEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins;
 import org.opendaylight.yangtools.yang.parser.spi.GroupingNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport;
@@ -138,12 +139,12 @@ public final class GroupingStatementSupport
     @Override
     protected GroupingStatement createDeclared(final StmtContext<QName, GroupingStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularGroupingStatement(ctx.getArgument(), substatements);
+        return DeclaredStatements.createGrouping(ctx.getArgument(), substatements);
     }
 
     @Override
     protected GroupingStatement createEmptyDeclared(final StmtContext<QName, GroupingStatement, ?> ctx) {
-        return new EmptyGroupingStatement(ctx.getArgument());
+        return DeclaredStatements.createGrouping(ctx.getArgument());
     }
 
     @Override
index e85565eee4d58ed2ad4829392c9feb98593581c7..41db2b5cbbadb995412d3c923502c2a6b21bd35f 100644 (file)
@@ -27,6 +27,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.BaseEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.EffectiveStatementWithFlags.FlagsBuilder;
 import org.opendaylight.yangtools.yang.parser.spi.IdentityNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport;
@@ -93,12 +94,12 @@ public final class IdentityStatementSupport
     @Override
     protected IdentityStatement createDeclared(final StmtContext<QName, IdentityStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularIdentityStatement(ctx.getArgument(), substatements);
+        return DeclaredStatements.createIdentity(ctx.getArgument(), substatements);
     }
 
     @Override
     protected IdentityStatement createEmptyDeclared(final StmtContext<QName, IdentityStatement, ?> ctx) {
-        return new EmptyIdentityStatement(ctx.getArgument());
+        return DeclaredStatements.createIdentity(ctx.getArgument());
     }
 
     @Override
index 4e1a62d391b4c67e7c51683cc20b6267a8fba6d5..5a7a8e6865c2d607c8ede3401d4379d83d534064 100644 (file)
@@ -22,6 +22,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureExpr;
 import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.spi.FeatureNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
@@ -87,13 +88,13 @@ abstract class AbstractIfFeatureStatementSupport
     @Override
     protected final IfFeatureStatement createDeclared(final StmtContext<IfFeatureExpr, IfFeatureStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularIfFeatureStatement(ctx.getRawArgument(), ctx.getArgument(), substatements);
+        return DeclaredStatements.createIfFeature(ctx.getRawArgument(), ctx.getArgument(), substatements);
     }
 
     @Override
     protected final IfFeatureStatement createEmptyDeclared(
             final StmtContext<IfFeatureExpr, IfFeatureStatement, ?> ctx) {
-        return new EmptyIfFeatureStatement(ctx.getRawArgument(), ctx.getArgument());
+        return DeclaredStatements.createIfFeature(ctx.getRawArgument(), ctx.getArgument());
     }
 
     @Override
index e6c34914e0a4f66d4c899367b5633655168cb8e6..4ad8daf265dfa1721ceccca025d5292b92aa6fca 100644 (file)
@@ -27,6 +27,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ImportEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.spi.PreLinkageModuleNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStringStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
@@ -129,12 +130,12 @@ public final class ImportStatementSupport
     @Override
     protected ImportStatement createDeclared(final StmtContext<String, ImportStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new ImportStatementImpl(ctx.getRawArgument(), substatements);
+        return DeclaredStatements.createImport(ctx.getRawArgument(), substatements);
     }
 
     @Override
     protected ImportStatement createEmptyDeclared(final StmtContext<String, ImportStatement, ?> ctx) {
-        throw new IllegalStateException("Unexpected empty declared import statement");
+        return DeclaredStatements.createImport(ctx.getRawArgument());
     }
 
     @Override
index 0284178eacc8adf8e724b943909e05414069700f..21a4d5f53107fefc4dba5adea1aac723adfc64c3 100644 (file)
@@ -24,6 +24,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.IncludeEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement;
 import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.spi.SubmoduleNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStringStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
@@ -116,12 +117,12 @@ public final class IncludeStatementSupport
     @Override
     protected IncludeStatement createDeclared(final StmtContext<String, IncludeStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularIncludeStatement(ctx.getRawArgument(), ctx.getArgument(), substatements);
+        return DeclaredStatements.createInclude(ctx.getRawArgument(), ctx.getArgument(), substatements);
     }
 
     @Override
     protected IncludeStatement createEmptyDeclared(final StmtContext<String, IncludeStatement, ?> ctx) {
-        return new EmptyIncludeStatement(ctx.getRawArgument(), ctx.getArgument());
+        return DeclaredStatements.createInclude(ctx.getRawArgument(), ctx.getArgument());
     }
 
     @Override
index 9fda7954d354c7652220052b66c7f1f82e83f366..af1c27e8d5b185b211c90282e58377e8afd3ef91 100644 (file)
@@ -21,6 +21,8 @@ import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
 import org.opendaylight.yangtools.yang.model.api.stmt.InputEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.InputStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
+import org.opendaylight.yangtools.yang.model.spi.stmt.UndeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseOperationContainerStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@@ -83,9 +85,9 @@ public final class InputStatementSupport
         final StatementSource source = ctx.source();
         switch (source) {
             case CONTEXT:
-                return new RegularUndeclaredInputStatement(ctx.getArgument(), substatements);
+                return UndeclaredStatements.createInput(ctx.getArgument(), substatements);
             case DECLARATION:
-                return new RegularInputStatement(ctx.getArgument(), substatements);
+                return DeclaredStatements.createInput(ctx.getArgument(), substatements);
             default:
                 throw new IllegalStateException("Unhandled statement source " + source);
         }
@@ -96,9 +98,9 @@ public final class InputStatementSupport
         final StatementSource source = ctx.source();
         switch (source) {
             case CONTEXT:
-                return new EmptyUndeclaredInputStatement(ctx.getArgument());
+                return UndeclaredStatements.createInput(ctx.getArgument());
             case DECLARATION:
-                return new EmptyInputStatement(ctx.getArgument());
+                return DeclaredStatements.createInput(ctx.getArgument());
             default:
                 throw new IllegalStateException("Unhandled statement source " + source);
         }