import java.util.Optional;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
public interface ContainerStatement extends DataDefinitionStatement,
DataDefinitionAwareDeclaredStatement.WithReusableDefinitions<QName>,
ActionStatementAwareDeclaredStatement<QName>, ConfigStatementAwareDeclaredStatement<QName>,
NotificationStatementAwareDeclaredStatement<QName>, MustStatementAwareDeclaredStatement<QName> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return YangStmtMapping.CONTAINER;
+ }
+
default @Nullable PresenceStatement getPresence() {
final Optional<PresenceStatement> opt = findFirstDeclaredSubstatement(PresenceStatement.class);
return opt.isPresent() ? opt.get() : null;
import java.util.Collection;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
public interface LeafListStatement extends MultipleElementsDeclaredStatement, TypeAwareDeclaredStatement,
ConfigStatementAwareDeclaredStatement<QName>, MustStatementAwareDeclaredStatement<QName> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return YangStmtMapping.LEAF_LIST;
+ }
+
/**
* Return default statements defined in this leaf-list. For RFC6020 semantics, this method returns an empty
* collection.
package org.opendaylight.yangtools.yang.model.api.stmt;
import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
public interface LeafStatement extends DataDefinitionStatement, TypeAwareDeclaredStatement,
ConfigStatementAwareDeclaredStatement<QName>, DefaultStatementAwareDeclaredStatement,
MandatoryStatementAwareDeclaredStatement<QName>, MustStatementAwareDeclaredStatement<QName> {
-
+ @Override
+ default StatementDefinition statementDefinition() {
+ return YangStmtMapping.LEAF;
+ }
}
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
public interface ListStatement extends MultipleElementsDeclaredStatement,
DataDefinitionAwareDeclaredStatement.WithReusableDefinitions<QName>,
ConfigStatementAwareDeclaredStatement<QName>, ActionStatementAwareDeclaredStatement<QName>,
MustStatementAwareDeclaredStatement<QName>, NotificationStatementAwareDeclaredStatement<QName> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return YangStmtMapping.LIST;
+ }
+
default @Nullable KeyStatement getKey() {
final Optional<KeyStatement> opt = findFirstDeclaredSubstatement(KeyStatement.class);
return opt.isPresent() ? opt.get() : null;
<module xmlns="urn:ietf:params:xml:ns:yang:yin:1"
xmlns:foo-prefix="foo-namespace" name="foo">
- <namespace uri="foo-namespace"></namespace>
- <prefix value="foo-prefix"></prefix>
- <revision date="2016-08-05"></revision>
- <extension name="test-extension">
- </extension>
+ <namespace uri="foo-namespace"/>
+ <prefix value="foo-prefix"/>
+ <revision date="2016-08-05"/>
<feature name="test-feature">
- <status value="current"></status>
+ <status value="current"/>
<description>
<text>test-feature description</text>
</description>
<text>test-feature reference</text>
</reference>
</feature>
- <identity name="test-identity">
- <base name="test-base-identity"></base>
- <status value="current"></status>
- <description>
- <text>test-identity description</text>
- </description>
- <reference>
- <text>test-identity reference</text>
- </reference>
- </identity>
- <identity name="test-base-identity">
- </identity>
<typedef name="test-uint32-typedef">
<type name="uint32">
- <range value="50..100">
- </range>
+ <range value="50..100"/>
</type>
<units name="seconds"></units>
</typedef>
<typedef name="test-int32-typedef">
<type name="int32">
- <range value="50..100">
- </range>
+ <range value="50..100"/>
</type>
</typedef>
<typedef name="test-leafref-typedef">
<type name="leafref">
- <path value="../leafref-target-leaf"></path>
+ <path value="../leafref-target-leaf"/>
</type>
</typedef>
<typedef name="test-iid-typedef">
<require-instance value="false"></require-instance>
</type>
</typedef>
- <grouping name="test-grouping-1">
- <leaf name="test-leaf-1">
- <type name="string"></type>
- <default value="def-val"></default>
- </leaf>
- <leaf-list name="test-leaf-list">
- <type name="string"></type>
- <config value="false"></config>
- <ordered-by value="user"></ordered-by>
- </leaf-list>
- <list name="test-list">
- <key value="key-leaf-1 key-leaf-2"></key>
- <min-elements value="5"></min-elements>
- <leaf name="key-leaf-1">
- <type name="string"></type>
+ <identity name="test-base-identity"/>
+ <identity name="test-identity">
+ <base name="test-base-identity"/>
+ <status value="current"/>
+ <description>
+ <text>test-identity description</text>
+ </description>
+ <reference>
+ <text>test-identity reference</text>
+ </reference>
+ </identity>
+ <extension name="test-extension"/>
+ <rpc name="test-rpc">
+ <input>
+ <leaf name="input-leaf">
+ <type name="string"/>
</leaf>
- <leaf name="key-leaf-2">
- <type name="string"></type>
+ </input>
+ <output>
+ <leaf name="output-leaf">
+ <type name="string"/>
</leaf>
- </list>
- <container name="test-container-2">
- <config value="false"></config>
- </container>
- </grouping>
- <grouping name="test-grouping-2">
- <anyxml name="test-anyxml-2">
- <config value="false"></config>
- </anyxml>
- <choice name="test-choice-2">
- <config value="false"></config>
- <case name="first">
- <leaf name="first-case-leaf">
- <type name="string">
- <length value="10..10 | 15">
- </length>
- </type>
- </leaf>
- </case>
- <case name="second">
- <leaf name="second-case-leaf">
- <type name="int32">
- <range value="10..10 | 15">
- </range>
- </type>
- </leaf>
- </case>
- </choice>
- </grouping>
+ </output>
+ <grouping name="rpc-grouping">
+ <leaf name="rpc-grouping-leaf">
+ <type name="string"/>
+ </leaf>
+ </grouping>
+ </rpc>
+ <notification name="test-notification">
+ <uses name="test-grouping-2">
+ <refine target-node="test-choice-2">
+ <config value="false"/>
+ </refine>
+ <refine target-node="test-anyxml-2">
+ <config value="false"/>
+ </refine>
+ </uses>
+ </notification>
<anyxml name="test-anyxml">
- <when condition="foo != 'bar'"></when>
- <must condition="bar != 'foo'"></must>
- <foo-prefix:test-extension></foo-prefix:test-extension>
+ <when condition="foo != 'bar'"/>
+ <must condition="bar != 'foo'"/>
+ <foo-prefix:test-extension/>
</anyxml>
<leaf name="leafref-target-leaf">
- <type name="string"></type>
+ <type name="string"/>
</leaf>
<container name="test-container-1">
- <must condition="bar != 'foo'"></must>
+ <must condition="bar != 'foo'"/>
</container>
<container name="test-container-3">
<choice name="test-choice">
<case name="a">
<leaf name="case-a-leaf">
- <type name="int32"></type>
+ <type name="int32"/>
</leaf>
</case>
<case name="b">
<leaf name="case-b-leaf">
<type name="decimal64">
- <fraction-digits value="3"></fraction-digits>
+ <fraction-digits value="3"/>
</type>
</leaf>
</case>
<leaf name="bits-leaf">
<type name="bits">
<bit name="one">
- <position value="1"></position>
+ <position value="1"/>
</bit>
<bit name="two">
- <position value="2"></position>
+ <position value="2"/>
</bit>
</type>
</leaf>
<leaf name="identityref-leaf">
<type name="identityref">
- <base name="test-base-identity"></base>
+ <base name="test-base-identity"/>
</type>
</leaf>
</container>
<augment target-node="/test-container-3/test-choice">
<case name="c">
<leaf name="case-c-leaf">
- <type name="string"></type>
+ <type name="string"/>
</leaf>
</case>
</augment>
<augment target-node="/test-container-1">
<uses name="test-grouping-1">
<refine target-node="test-list">
- <min-elements value="5"></min-elements>
+ <min-elements value="5"/>
</refine>
<refine target-node="test-leaf-list">
- <config value="false"></config>
+ <config value="false"/>
</refine>
<refine target-node="test-leaf-1">
- <default value="def-val"></default>
+ <default value="def-val"/>
</refine>
<refine target-node="test-container-2">
- <config value="false"></config>
+ <config value="false"/>
</refine>
<augment target-node="test-container-2">
<leaf name="test-leaf-2">
- <type name="string"></type>
+ <type name="string"/>
</leaf>
</augment>
</uses>
</augment>
- <rpc name="test-rpc">
- <grouping name="rpc-grouping">
- <leaf name="rpc-grouping-leaf">
- <type name="string"></type>
- </leaf>
- </grouping>
- <input>
- <leaf name="input-leaf">
- <type name="string"></type>
+ <grouping name="test-grouping-1">
+ <leaf name="test-leaf-1">
+ <type name="string"/>
+ <default value="def-val"/>
+ </leaf>
+ <leaf-list name="test-leaf-list">
+ <type name="string"/>
+ <config value="false"/>
+ <ordered-by value="user"/>
+ </leaf-list>
+ <list name="test-list">
+ <key value="key-leaf-1 key-leaf-2"/>
+ <min-elements value="5"/>
+ <leaf name="key-leaf-1">
+ <type name="string"/>
</leaf>
- </input>
- <output>
- <leaf name="output-leaf">
- <type name="string"></type>
+ <leaf name="key-leaf-2">
+ <type name="string"/>
</leaf>
- </output>
- </rpc>
- <notification name="test-notification">
- <uses name="test-grouping-2">
- <refine target-node="test-choice-2">
- <config value="false"></config>
- </refine>
- <refine target-node="test-anyxml-2">
- <config value="false"></config>
- </refine>
- </uses>
- </notification>
+ </list>
+ <container name="test-container-2">
+ <config value="false"/>
+ </container>
+ </grouping>
+ <grouping name="test-grouping-2">
+ <anyxml name="test-anyxml-2">
+ <config value="false"/>
+ </anyxml>
+ <choice name="test-choice-2">
+ <config value="false"/>
+ <case name="first">
+ <leaf name="first-case-leaf">
+ <type name="string">
+ <length value="10..10 | 15"/>
+ </type>
+ </leaf>
+ </case>
+ <case name="second">
+ <leaf name="second-case-leaf">
+ <type name="int32">
+ <range value="10..10 | 15"/>
+ </type>
+ </leaf>
+ </case>
+ </choice>
+ </grouping>
</module>
import com.google.common.collect.ImmutableList;
import java.util.Collection;
import org.eclipse.jdt.annotation.NonNull;
+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;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
}
}
+ public abstract static class WithQNameArgument extends AbstractDeclaredStatement<QName> {
+ public abstract static class WithSubstatements extends WithQNameArgument {
+ private final @NonNull Object substatements;
+
+ protected WithSubstatements(final QName argument,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(argument);
+ this.substatements = maskList(substatements);
+ }
+
+ @Override
+ public final Collection<? extends DeclaredStatement<?>> declaredSubstatements() {
+ return unmaskList(substatements);
+ }
+ }
+
+ private final QName argument;
+
+ protected WithQNameArgument(final QName argument) {
+ this.argument = requireNonNull(argument);
+ }
+
+ @Override
+ public final @NonNull QName argument() {
+ return argument;
+ }
+
+ @Override
+ public final String rawArgument() {
+ return argument.getLocalName();
+ }
+ }
+
public abstract static class WithRawStringArgument extends WithRawArgument<String> {
public abstract static class WithSubstatements extends WithRawStringArgument {
private final @NonNull Object substatements;
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();
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+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.ContainerEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement;
}
@Override
- public final ContainerStatement createDeclared(final StmtContext<QName, ContainerStatement,?> ctx) {
- return new ContainerStatementImpl(ctx);
+ protected final ContainerStatement createDeclared(final StmtContext<QName, ContainerStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new RegularContainerStatement(ctx.coerceStatementArgument(), substatements);
+ }
+
+ @Override
+ protected final ContainerStatement createEmptyDeclared(final StmtContext<QName, ContainerStatement, ?> ctx) {
+ return new EmptyContainerStatement(ctx.coerceStatementArgument());
}
@Override
+++ /dev/null
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. 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.parser.rfc7950.stmt.container;
-
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-
-final class ContainerStatementImpl extends AbstractDeclaredStatement<QName> implements ContainerStatement {
- ContainerStatementImpl(final StmtContext<QName, ContainerStatement,?> context) {
- super(context);
- }
-}
--- /dev/null
+/*
+ * 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.parser.rfc7950.stmt.container;
+
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithQNameArgument;
+
+final class EmptyContainerStatement extends WithQNameArgument implements ContainerStatement {
+ EmptyContainerStatement(final QName argument) {
+ super(argument);
+ }
+}
--- /dev/null
+/*
+ * 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.parser.rfc7950.stmt.container;
+
+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.stmt.ContainerStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithQNameArgument.WithSubstatements;
+
+final class RegularContainerStatement extends WithSubstatements implements ContainerStatement {
+ RegularContainerStatement(final QName argument, final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(argument, substatements);
+ }
+}
/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+ * 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,
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithQNameArgument;
-final class LeafStatementImpl extends AbstractDeclaredStatement<QName> implements LeafStatement {
- LeafStatementImpl(final StmtContext<QName, LeafStatement, ?> context) {
- super(context);
+final class EmptyLeafStatement extends WithQNameArgument implements LeafStatement {
+ EmptyLeafStatement(final QName argument) {
+ super(argument);
}
}
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+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.DefaultEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.LeafEffectiveStatement;
}
@Override
- public LeafStatement createDeclared(final StmtContext<QName, LeafStatement, ?> ctx) {
- return new LeafStatementImpl(ctx);
+ protected SubstatementValidator getSubstatementValidator() {
+ return SUBSTATEMENT_VALIDATOR;
}
@Override
- protected SubstatementValidator getSubstatementValidator() {
- return SUBSTATEMENT_VALIDATOR;
+ protected LeafStatement createDeclared(final StmtContext<QName, LeafStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new RegularLeafStatement(ctx.coerceStatementArgument(), substatements);
+ }
+
+ @Override
+ protected LeafStatement createEmptyDeclared(final StmtContext<QName, LeafStatement, ?> ctx) {
+ return new EmptyLeafStatement(ctx.coerceStatementArgument());
}
@Override
--- /dev/null
+/*
+ * 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.parser.rfc7950.stmt.leaf;
+
+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.stmt.LeafStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithQNameArgument.WithSubstatements;
+
+final class RegularLeafStatement extends WithSubstatements implements LeafStatement {
+ RegularLeafStatement(final QName argument, final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(argument, substatements);
+ }
+}
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+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.DefaultEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.LeafListEffectiveStatement;
}
@Override
- public final LeafListStatement createDeclared(final StmtContext<QName, LeafListStatement, ?> ctx) {
- return new LeafListStatementImpl(ctx);
+ protected final LeafListStatement createDeclared(final StmtContext<QName, LeafListStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new RegularLeafListStatement(ctx.coerceStatementArgument(), substatements);
+ }
+
+ @Override
+ protected final LeafListStatement createEmptyDeclared(final StmtContext<QName, LeafListStatement, ?> ctx) {
+ return new EmptyLeafListStatement(ctx.coerceStatementArgument());
}
@Override
--- /dev/null
+/*
+ * 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.parser.rfc7950.stmt.leaf_list;
+
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithQNameArgument;
+
+final class EmptyLeafListStatement extends WithQNameArgument implements LeafListStatement {
+ EmptyLeafListStatement(final QName argument) {
+ super(argument);
+ }
+}
+++ /dev/null
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. 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.parser.rfc7950.stmt.leaf_list;
-
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-
-final class LeafListStatementImpl extends AbstractDeclaredStatement<QName> implements LeafListStatement {
- LeafListStatementImpl(final StmtContext<QName, LeafListStatement, ?> context) {
- super(context);
- }
-}
--- /dev/null
+/*
+ * 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.parser.rfc7950.stmt.leaf_list;
+
+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.stmt.LeafListStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithQNameArgument.WithSubstatements;
+
+final class RegularLeafListStatement extends WithSubstatements implements LeafListStatement {
+ RegularLeafListStatement(final QName argument, final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(argument, substatements);
+ }
+}
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+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.KeyEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ListEffectiveStatement;
}
@Override
- public final ListStatement createDeclared(final StmtContext<QName, ListStatement, ?> ctx) {
- return new ListStatementImpl(ctx);
+ protected ListStatement createDeclared(final StmtContext<QName, ListStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new RegularListStatement(ctx.coerceStatementArgument(), substatements);
+ }
+
+ @Override
+ protected ListStatement createEmptyDeclared(final StmtContext<QName, ListStatement, ?> ctx) {
+ return new EmptyListStatement(ctx.coerceStatementArgument());
}
@Override
/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+ * 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,
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithQNameArgument;
-final class ListStatementImpl extends AbstractDeclaredStatement<QName> implements ListStatement {
- ListStatementImpl(final StmtContext<QName, ListStatement, ?> context) {
- super(context);
+final class EmptyListStatement extends WithQNameArgument implements ListStatement {
+ EmptyListStatement(final QName argument) {
+ super(argument);
}
}
--- /dev/null
+/*
+ * 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.parser.rfc7950.stmt.list;
+
+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.stmt.ListStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithQNameArgument.WithSubstatements;
+
+final class RegularListStatement extends WithSubstatements implements ListStatement {
+ RegularListStatement(final QName argument, final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(argument, substatements);
+ }
+}