package org.opendaylight.yangtools.yang.model.api.stmt;
import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
@Beta
public interface MaxElementsEffectiveStatement extends EffectiveStatement<String, MaxElementsStatement> {
-
+ @Override
+ default StatementDefinition statementDefinition() {
+ return YangStmtMapping.MAX_ELEMENTS;
+ }
}
import static com.google.common.base.Verify.verifyNotNull;
import org.eclipse.jdt.annotation.NonNull;
+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.StatementDefinition;
public interface MaxElementsStatement extends DeclaredStatement<String> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return YangStmtMapping.MAX_ELEMENTS;
+ }
+
default @NonNull String getValue() {
// FIXME: YANGTOOLS-908: verifyNotNull() should not be needed here
return verifyNotNull(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.max_elements;
+
+import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument;
+
+final class EmptyMaxElementsEffectiveStatement extends DefaultArgument<String, MaxElementsStatement>
+ implements MaxElementsEffectiveStatement {
+ EmptyMaxElementsEffectiveStatement(final MaxElementsStatement declared) {
+ super(declared);
+ }
+}
/*
- * 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,
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.max_elements;
import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithArgument;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-final class MaxElementsStatementImpl extends AbstractDeclaredStatement<String> implements MaxElementsStatement {
- MaxElementsStatementImpl(final StmtContext<String, MaxElementsStatement, ?> context) {
+final class EmptyMaxElementsStatement extends WithArgument<String> implements MaxElementsStatement {
+ EmptyMaxElementsStatement(final StmtContext<String, ?, ?> context) {
super(context);
}
}
*/
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.max_elements;
+import com.google.common.collect.ImmutableList;
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.MaxElementsEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStringStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
public final class MaxElementsStatementSupport
- extends AbstractStatementSupport<String, MaxElementsStatement, MaxElementsEffectiveStatement> {
+ extends BaseStringStatementSupport<MaxElementsStatement, MaxElementsEffectiveStatement> {
private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
YangStmtMapping.MAX_ELEMENTS)
.build();
private static final MaxElementsStatementSupport INSTANCE = new MaxElementsStatementSupport();
private MaxElementsStatementSupport() {
- super(YangStmtMapping.MAX_ELEMENTS, CopyPolicy.CONTEXT_INDEPENDENT);
+ super(YangStmtMapping.MAX_ELEMENTS);
}
public static MaxElementsStatementSupport getInstance() {
}
@Override
- public String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return value;
+ public String internArgument(final String rawArgument) {
+ return "unbounded".equals(rawArgument) ? "unbounded" : rawArgument;
}
@Override
- public MaxElementsStatement createDeclared(
- final StmtContext<String, MaxElementsStatement, ?> ctx) {
- return new MaxElementsStatementImpl(ctx);
+ protected SubstatementValidator getSubstatementValidator() {
+ return SUBSTATEMENT_VALIDATOR;
}
@Override
- public MaxElementsEffectiveStatement createEffective(
- final StmtContext<String, MaxElementsStatement, MaxElementsEffectiveStatement> ctx) {
- return new MaxElementsEffectiveStatementImpl(ctx);
+ protected MaxElementsStatement createDeclared(final StmtContext<String, MaxElementsStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new RegularMaxElementsStatement(ctx, substatements);
}
@Override
- protected SubstatementValidator getSubstatementValidator() {
- return SUBSTATEMENT_VALIDATOR;
+ protected MaxElementsStatement createEmptyDeclared(final StmtContext<String, MaxElementsStatement, ?> ctx) {
+ return new EmptyMaxElementsStatement(ctx);
}
@Override
- public String internArgument(final String rawArgument) {
- return "unbounded".equals(rawArgument) ? "unbounded" : rawArgument;
+ protected MaxElementsEffectiveStatement createEffective(
+ final StmtContext<String, MaxElementsStatement, MaxElementsEffectiveStatement> ctx,
+ final MaxElementsStatement declared,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new RegularMaxElementsEffectiveStatement(declared, substatements);
+ }
+
+ @Override
+ protected MaxElementsEffectiveStatement createEmptyEffective(
+ final StmtContext<String, MaxElementsStatement, MaxElementsEffectiveStatement> ctx,
+ final MaxElementsStatement declared) {
+ return new EmptyMaxElementsEffectiveStatement(declared);
}
-}
\ No newline at end of file
+}
--- /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.max_elements;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements;
+
+final class RegularMaxElementsEffectiveStatement extends WithSubstatements<String, MaxElementsStatement>
+ implements MaxElementsEffectiveStatement {
+ RegularMaxElementsEffectiveStatement(final MaxElementsStatement declared,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ super(declared, substatements);
+ }
+}
--- /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.max_elements;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithArgument.WithSubstatements;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+
+final class RegularMaxElementsStatement extends WithSubstatements<String> implements MaxElementsStatement {
+ RegularMaxElementsStatement(final StmtContext<String, ?, ?> context,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(context, substatements);
+ }
+}