X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fstmt%2Frfc6020%2FUtils.java;h=3654785eb8e73800305c6d2a017a1dfc0a01063d;hb=4d8d405cb27c07e48a4d308766dafb66b372c25c;hp=2b63dafb9c662b9a2691e87f45de684a4c9fd835;hpb=3903d34ece7e98167a071e1c2bb9a89ef35790c6;p=yangtools.git 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 2b63dafb9c..3654785eb8 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 @@ -31,7 +31,6 @@ import org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; -import org.opendaylight.yangtools.yang.common.YangConstants; import org.opendaylight.yangtools.yang.model.api.Deviation; import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; @@ -53,7 +52,6 @@ import org.opendaylight.yangtools.yang.parser.spi.source.ModuleIdentifierToModul import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToModuleQName; import org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModule; import org.opendaylight.yangtools.yang.parser.spi.source.QNameToStatementDefinition; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.RootStatementContext; import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -138,18 +136,22 @@ public final class Utils { return identifier; } - public static String getPrefixFromArgument(final String prefixedLocalName) { - String[] namesParts = prefixedLocalName.split(":"); - if (namesParts.length == 2) { - return namesParts[0]; - } - return null; - } - - public static boolean isValidStatementDefinition(final PrefixToModule prefixes, final QNameToStatementDefinition stmtDef, - final QName identifier) { + /** + * + * Based on identifier read from source and collections of relevant prefixes and statement definitions mappings + * provided for actual phase, method resolves and returns valid QName for declared statement to be written. + * This applies to any declared statement, including unknown statements. + * + * @param prefixes - collection of all relevant prefix mappings supplied for actual parsing phase + * @param stmtDef - collection of all relevant statement definition mappings provided for actual parsing phase + * @param identifier - statement to parse from source + * @return valid QName for declared statement to be written + * + */ + public static QName getValidStatementDefinition(final PrefixToModule prefixes, final QNameToStatementDefinition + stmtDef, final QName identifier) { if (stmtDef.get(identifier) != null) { - return true; + return stmtDef.get(identifier).getStatementName(); } else { String prefixedLocalName = identifier.getLocalName(); String[] namesParts = prefixedLocalName.split(":"); @@ -158,16 +160,12 @@ public final class Utils { String prefix = namesParts[0]; String localName = namesParts[1]; if (prefixes != null && prefixes.get(prefix) != null - && stmtDef.get(QName.create(YangConstants.RFC6020_YIN_MODULE, localName)) != null) { - return true; - } else { - if (stmtDef.get(QName.create(YangConstants.RFC6020_YIN_MODULE, localName)) != null) { - return true; - } + && stmtDef.get(QName.create(prefixes.get(prefix), localName)) != null) { + return QName.create(prefixes.get(prefix), localName); } } } - return false; + return null; } static SchemaNodeIdentifier nodeIdentifierFromPath(final StmtContext ctx, final String path) { @@ -247,8 +245,8 @@ public final class Utils { ctx.getRoot().rawStatementArgument(), value); final QNameModule resultQNameModule; if (qNameModule.getRevision() == null) { - resultQNameModule = QNameModule.cachedReference( - QNameModule.create(qNameModule.getNamespace(), SimpleDateFormatUtil.DEFAULT_DATE_REV)); + resultQNameModule = QNameModule.create(qNameModule.getNamespace(), SimpleDateFormatUtil.DEFAULT_DATE_REV) + .intern(); } else { resultQNameModule = qNameModule; } @@ -289,8 +287,7 @@ public final class Utils { return qNameModule; } - return QNameModule.cachedReference( - QNameModule.create(qNameModule.getNamespace(), SimpleDateFormatUtil.DEFAULT_DATE_REV)); + return QNameModule.create(qNameModule.getNamespace(), SimpleDateFormatUtil.DEFAULT_DATE_REV).intern(); } @Nullable @@ -321,27 +318,17 @@ public final class Utils { } public static Status parseStatus(final String value) { - - Status status = null; switch (value) { case "current": - status = Status.CURRENT; - break; + return Status.CURRENT; case "deprecated": - status = Status.DEPRECATED; - break; + return Status.DEPRECATED; case "obsolete": - status = Status.OBSOLETE; - break; + return Status.OBSOLETE; default: - LOG.warn("Invalid 'status' statement: " + value); + LOG.warn("Invalid 'status' statement: {}", value); + return null; } - - return status; - } - - public static Date getLatestRevision(final RootStatementContext root) { - return getLatestRevision(root.declaredSubstatements()); } public static Date getLatestRevision(final Iterable> subStmts) {