Migrate QName-based declared statements
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / BaseQNameStatementSupport.java
index d03945d75f0a1fed8f8ce48fdace836512a9bea1..0ff9cfb4a2e2cd49c29381beab5937deadb0be36 100644 (file)
@@ -31,6 +31,19 @@ public abstract class BaseQNameStatementSupport<D extends DeclaredStatement<QNam
         super(publicDefinition);
     }
 
+    @Override
+    public final D createDeclared(final StmtContext<QName, D, ?> ctx) {
+        final ImmutableList<? extends DeclaredStatement<?>> substatements = ctx.declaredSubstatements().stream()
+                .map(StmtContext::buildDeclared)
+                .collect(ImmutableList.toImmutableList());
+        return substatements.isEmpty() ? createEmptyDeclared(ctx) : createDeclared(ctx, substatements);
+    }
+
+    protected abstract @NonNull D createDeclared(@NonNull StmtContext<QName, D, ?> ctx,
+            @NonNull ImmutableList<? extends DeclaredStatement<?>> substatements);
+
+    protected abstract @NonNull D createEmptyDeclared(@NonNull StmtContext<QName, D, ?> ctx);
+
     @Override
     public final E createEffective(final StmtContext<QName, D, E> ctx) {
         final D declared = ctx.buildDeclared();