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 MinElementsEffectiveStatement extends EffectiveStatement<Integer, MinElementsStatement> {
-
+ @Override
+ default StatementDefinition statementDefinition() {
+ return YangStmtMapping.MIN_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 MinElementsStatement extends DeclaredStatement<Integer> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return YangStmtMapping.MIN_ELEMENTS;
+ }
+
default @NonNull Integer getValue() {
// FIXME: YANGTOOLS-908: verifyNotNull() should not be needed here
return verifyNotNull(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.min_elements;
+
+import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument;
+
+final class EmptyMinElementsEffectiveStatement extends DefaultArgument<Integer, MinElementsStatement>
+ implements MinElementsEffectiveStatement {
+ EmptyMinElementsEffectiveStatement(final MinElementsStatement declared) {
+ super(declared);
+ }
+}
--- /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.min_elements;
+
+import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.ArgumentToString;
+
+final class EmptyMinElementsStatement extends ArgumentToString<Integer> implements MinElementsStatement {
+ EmptyMinElementsStatement(final Integer argument) {
+ super(argument);
+ }
+}
*/
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.min_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.MinElementsEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseInternedStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
+import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
public final class MinElementsStatementSupport
- extends AbstractStatementSupport<Integer, MinElementsStatement, MinElementsEffectiveStatement> {
+ extends BaseInternedStatementSupport<Integer, MinElementsStatement, MinElementsEffectiveStatement> {
private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
YangStmtMapping.MIN_ELEMENTS)
.build();
@Override
public Integer parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Integer.parseInt(value);
+ try {
+ return Integer.valueOf(value);
+ } catch (NumberFormatException e) {
+ throw new SourceException("Invalid min-elements argument", ctx.getStatementSourceReference(), e);
+ }
}
@Override
- public MinElementsStatement createDeclared(final StmtContext<Integer, MinElementsStatement, ?> ctx) {
- return new MinElementsStatementImpl(ctx);
+ protected SubstatementValidator getSubstatementValidator() {
+ return SUBSTATEMENT_VALIDATOR;
}
@Override
- public MinElementsEffectiveStatement createEffective(
- final StmtContext<Integer, MinElementsStatement, MinElementsEffectiveStatement> ctx) {
- return new MinElementsEffectiveStatementImpl(ctx);
+ protected MinElementsStatement createDeclared(final Integer argument,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new RegularMinElementsStatement(argument, substatements);
}
@Override
- protected SubstatementValidator getSubstatementValidator() {
- return SUBSTATEMENT_VALIDATOR;
+ protected MinElementsStatement createEmptyDeclared(final Integer argument) {
+ return new EmptyMinElementsStatement(argument);
+ }
+
+ @Override
+ protected MinElementsEffectiveStatement createEffective(
+ final StmtContext<Integer, MinElementsStatement, MinElementsEffectiveStatement> ctx,
+ final MinElementsStatement declared,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new RegularMinElementsEffectiveStatement(declared, substatements);
+ }
+
+ @Override
+ protected MinElementsEffectiveStatement createEmptyEffective(final MinElementsStatement declared) {
+ return new EmptyMinElementsEffectiveStatement(declared);
}
}
\ No newline at end of file
--- /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.min_elements;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements;
+
+final class RegularMinElementsEffectiveStatement extends WithSubstatements<Integer, MinElementsStatement>
+ implements MinElementsEffectiveStatement {
+ RegularMinElementsEffectiveStatement(final MinElementsStatement declared,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ super(declared, substatements);
+ }
+}
--- /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.min_elements;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.ArgumentToString.WithSubstatements;
+
+final class RegularMinElementsStatement extends WithSubstatements<Integer> implements MinElementsStatement {
+ RegularMinElementsStatement(final Integer argument,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(argument, substatements);
+ }
+}