From d25e1c05a0af0930ad1fa469d2edbd30b24a43dc Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 5 Jun 2017 18:50:10 +0200 Subject: [PATCH] Do not tolerate invalid status arguments Status must be one of current, deprecated, obsolete. Make sure we do not leak nulls when the model supplies an illegal string, but rather flag the offender. Change-Id: I3301eaf2f753fe74a24dfa30d8e74cbf3a571493 Signed-off-by: Robert Varga --- .../parser/stmt/rfc6020/StatusStatementImpl.java | 13 ++++++++++++- .../yangtools/yang/parser/stmt/rfc6020/Utils.java | 15 --------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/StatusStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/StatusStatementImpl.java index 336abefbf1..28f13c5221 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/StatusStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/StatusStatementImpl.java @@ -16,6 +16,7 @@ import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; +import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.StatusEffectiveStatementImpl; public class StatusStatementImpl extends AbstractDeclaredStatement @@ -39,7 +40,17 @@ public class StatusStatementImpl extends AbstractDeclaredStatement @Override public Status parseArgumentValue(final StmtContext ctx, final String value) { - return Utils.parseStatus(value); + switch (value) { + case "current": + return Status.CURRENT; + case "deprecated": + return Status.DEPRECATED; + case "obsolete": + return Status.OBSOLETE; + default: + throw new SourceException(ctx.getStatementSourceReference(), + "Invalid status '%s', must be one of 'current', 'deprecated' or 'obsolete'", value); + } } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java index abcce90d5d..13ec1ef7c1 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java @@ -44,7 +44,6 @@ import org.opendaylight.yangtools.yang.common.YangVersion; import org.opendaylight.yangtools.yang.model.api.DeviateKind; import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; -import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement; import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement; @@ -414,20 +413,6 @@ public final class Utils { } } - public static Status parseStatus(final String value) { - switch (value) { - case "current": - return Status.CURRENT; - case "deprecated": - return Status.DEPRECATED; - case "obsolete": - return Status.OBSOLETE; - default: - LOG.warn("Invalid 'status' statement: {}", value); - return null; - } - } - public static Date getLatestRevision(final Iterable> subStmts) { Date revision = null; for (final StmtContext subStmt : subStmts) { -- 2.36.6