Split out yang-model-ri
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / reference / ReferenceStatementSupport.java
index 1b4761b9a52761384e9950e06cc128cf566d5f32..3828dc3d73ed2e4ca9ee9b3dbbe7d8a234c99a2a 100644 (file)
@@ -13,19 +13,20 @@ import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStringStatementSupport;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatements;
+import org.opendaylight.yangtools.yang.model.ri.stmt.EffectiveStatements;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractInternedStringStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class ReferenceStatementSupport
-        extends BaseStringStatementSupport<ReferenceStatement, ReferenceEffectiveStatement> {
+        extends AbstractInternedStringStatementSupport<ReferenceStatement, ReferenceEffectiveStatement> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
         YangStmtMapping.REFERENCE)
         .build();
     private static final ReferenceStatementSupport INSTANCE = new ReferenceStatementSupport();
 
     private ReferenceStatementSupport() {
-        super(YangStmtMapping.REFERENCE);
+        super(YangStmtMapping.REFERENCE, StatementPolicy.contextIndependent());
     }
 
     public static ReferenceStatementSupport getInstance() {
@@ -38,28 +39,24 @@ public final class ReferenceStatementSupport
     }
 
     @Override
-    protected ReferenceStatement createDeclared(final StmtContext<String, ReferenceStatement, ?> ctx,
+    protected ReferenceStatement createDeclared(final String argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularReferenceStatement(ctx.coerceRawStatementArgument(), substatements);
+        return DeclaredStatements.createReference(argument, substatements);
     }
 
     @Override
-    protected ReferenceStatement createEmptyDeclared(final StmtContext<String, ReferenceStatement, ?> ctx) {
-        return new EmptyReferenceStatement(ctx.coerceRawStatementArgument());
+    protected ReferenceStatement createEmptyDeclared(final String argument) {
+        return DeclaredStatements.createReference(argument);
     }
 
     @Override
-    protected ReferenceEffectiveStatement createEffective(
-            final StmtContext<String, ReferenceStatement, ReferenceEffectiveStatement> ctx,
-            final ReferenceStatement declared,
+    protected ReferenceEffectiveStatement createEffective(final ReferenceStatement declared,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-        return new RegularReferenceEffectiveStatement(declared, substatements);
+        return EffectiveStatements.createReference(declared, substatements);
     }
 
     @Override
-    protected ReferenceEffectiveStatement createEmptyEffective(
-            final StmtContext<String, ReferenceStatement, ReferenceEffectiveStatement> ctx,
-            final ReferenceStatement declared) {
-        return new EmptyReferenceEffectiveStatement(declared);
+    protected ReferenceEffectiveStatement createEmptyEffective(final ReferenceStatement declared) {
+        return EffectiveStatements.createReference(declared);
     }
 }