BUG-6522: share instances of Config(Effective)Statement
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / ConfigStatementImpl.java
index af1d8dd42862dfd74c0e9e7346ba92f78e9a5a75..886099e8ebe4155a96cb229e1a88fc4a02be691d 100644 (file)
@@ -39,13 +39,26 @@ public class ConfigStatementImpl extends AbstractDeclaredStatement<Boolean> impl
 
         @Override
         public ConfigStatement createDeclared(final StmtContext<Boolean, ConfigStatement, ?> ctx) {
-            return new ConfigStatementImpl(ctx);
+            final ConfigStatement ret = new ConfigStatementImpl(ctx);
+
+            if (EmptyConfigStatement.FALSE.equals(ret)) {
+                return EmptyConfigStatement.FALSE;
+            } else if (EmptyConfigStatement.TRUE.equals(ret)) {
+                return EmptyConfigStatement.TRUE;
+            } else {
+                return ret;
+            }
         }
 
         @Override
         public EffectiveStatement<Boolean, ConfigStatement> createEffective(
                 final StmtContext<Boolean, ConfigStatement, EffectiveStatement<Boolean, ConfigStatement>> ctx) {
-            return new ConfigEffectiveStatementImpl(ctx);
+            final EffectiveStatement<Boolean, ConfigStatement> ret = new ConfigEffectiveStatementImpl(ctx);
+            final ConfigStatement declared = ret.getDeclared();
+            if (declared instanceof EmptyConfigStatement && ret.effectiveSubstatements().isEmpty()) {
+                return ((EmptyConfigStatement)declared).toEffective();
+            }
+            return ret;
         }
 
         @Override