From: Robert Varga Date: Fri, 22 Oct 2021 15:11:25 +0000 (+0200) Subject: Use YangNames CharMatchers in parser X-Git-Tag: v2.0.6~44 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=282af8b849417bff77238dda38bd643615e1da08;p=netconf.git Use YangNames CharMatchers in parser We have common matchers available from yangtools, use those instead of brewing our own. Change-Id: I4099aab90e0abbf45bc5ba8248b1e0658921ee7e Signed-off-by: Robert Varga --- diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserConstants.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserConstants.java index e2de0ed8ce..cd326b32bc 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserConstants.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserConstants.java @@ -8,6 +8,7 @@ package org.opendaylight.restconf.nb.rfc8040.utils.parser; import com.google.common.base.CharMatcher; +import org.opendaylight.yangtools.yang.common.YangNames; /** * Various constants related to RFC3986 (URI) and RFC7950 (YANG) parsing in the context of RFC8040. @@ -18,12 +19,8 @@ final class ParserConstants { // FIXME: this space should not be here, but that was a day-0 bug and we have asserts on this + " "; - // First character of RFC7950 "identifier" rule - static final CharMatcher YANG_IDENTIFIER_START = - CharMatcher.inRange('A', 'Z').or(CharMatcher.inRange('a', 'z').or(CharMatcher.is('_'))).precomputed(); // Subsequent characters of RFC7950 "identifier" rule - static final CharMatcher YANG_IDENTIFIER_PART = - YANG_IDENTIFIER_START.or(CharMatcher.inRange('0', '9')).or(CharMatcher.anyOf("-.")).precomputed(); + static final CharMatcher YANG_IDENTIFIER_PART = YangNames.NOT_IDENTIFIER_PART.negate().precomputed(); private ParserConstants() { // Hidden on purpose diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserIdentifier.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserIdentifier.java index 5b550dd711..f6b6ad901a 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserIdentifier.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserIdentifier.java @@ -35,6 +35,7 @@ import org.opendaylight.yangtools.yang.common.ErrorTag; import org.opendaylight.yangtools.yang.common.ErrorType; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Revision; +import org.opendaylight.yangtools.yang.common.YangNames; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode; import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree; @@ -306,12 +307,12 @@ public final class ParserIdentifier { final String name = moduleName.next(); RestconfDocumentedException.throwIf( - name.isEmpty() || !ParserConstants.YANG_IDENTIFIER_START.matches(name.charAt(0)), + name.isEmpty() || !YangNames.IDENTIFIER_START.matches(name.charAt(0)), "Identifier must start with character from set 'a-zA-Z_", ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE); RestconfDocumentedException.throwIf(name.toUpperCase(Locale.ROOT).startsWith("XML"), "Identifier must NOT start with XML ignore case.", ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE); RestconfDocumentedException.throwIf( - !ParserConstants.YANG_IDENTIFIER_PART.matchesAllOf(name.substring(1)), + YangNames.NOT_IDENTIFIER_PART.matchesAnyOf(name.substring(1)), "Supplied name has not expected identifier format.", ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE); return name; diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/YangInstanceIdentifierDeserializer.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/YangInstanceIdentifierDeserializer.java index 8b9ccb8eb1..553f86da8c 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/YangInstanceIdentifierDeserializer.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/YangInstanceIdentifierDeserializer.java @@ -24,6 +24,7 @@ import org.opendaylight.restconf.nb.rfc8040.codecs.RestCodec; import org.opendaylight.yangtools.yang.common.ErrorTag; import org.opendaylight.yangtools.yang.common.ErrorType; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.YangNames; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; @@ -288,7 +289,7 @@ public final class YangInstanceIdentifierDeserializer { } private void checkValidIdentifierStart() { - checkValid(ParserConstants.YANG_IDENTIFIER_START.matches(currentChar()), ErrorTag.MALFORMED_MESSAGE, + checkValid(YangNames.IDENTIFIER_START.matches(currentChar()), ErrorTag.MALFORMED_MESSAGE, "Identifier must start with character from set 'a-zA-Z_'"); }