Migrate nextIdentifierFromNextSequence() 27/83327/2
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 30 Jul 2019 23:57:55 +0000 (01:57 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 31 Jul 2019 00:48:51 +0000 (02:48 +0200)
This method is very simple and operates on state. Move it into
the state object, allowing us to eliminate some amount of verbosity.

Change-Id: I07dbb5a612a63d6dd7a1f428138a6750c91c1e3e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/YangInstanceIdentifierDeserializer.java

index 20c2b3ec310064e4e22504e603295dde7e3dacc0..5577aa181a83847949c9c8bb47c3287e79ebaf4f 100644 (file)
@@ -142,8 +142,8 @@ public final class YangInstanceIdentifierDeserializer {
                         RestconfError.ErrorType.PROTOCOL, RestconfError.ErrorTag.BAD_ELEMENT);
             }
 
-            final String value = findAndParsePercentEncoded(nextIdentifierFromNextSequence(
-                    ParserBuilderConstants.Deserializer.IDENTIFIER_PREDICATE, variables));
+            final String value = findAndParsePercentEncoded(variables.nextIdentifierFromNextSequence(
+                    ParserBuilderConstants.Deserializer.IDENTIFIER_PREDICATE));
             final Object valueByType = prepareValueByType(leafSchemaNode.get(), value, variables);
             values.put(key, valueByType);
 
@@ -241,8 +241,8 @@ public final class YangInstanceIdentifierDeserializer {
     private static QName prepareQName(final MainVarsWrapper variables) {
         variables.checkValid(ParserBuilderConstants.Deserializer.IDENTIFIER_FIRST_CHAR.matches(variables.currentChar()),
                 "Identifier must start with character from set 'a-zA-Z_'");
-        final String preparedPrefix = nextIdentifierFromNextSequence(
-                ParserBuilderConstants.Deserializer.IDENTIFIER, variables);
+        final String preparedPrefix = variables.nextIdentifierFromNextSequence(
+                ParserBuilderConstants.Deserializer.IDENTIFIER);
         final String prefix;
         final String localName;
 
@@ -261,7 +261,7 @@ public final class YangInstanceIdentifierDeserializer {
                 variables.checkValid(
                         ParserBuilderConstants.Deserializer.IDENTIFIER_FIRST_CHAR.matches(variables.currentChar()),
                         "Identifier must start with character from set 'a-zA-Z_'");
-                localName = nextIdentifierFromNextSequence(ParserBuilderConstants.Deserializer.IDENTIFIER, variables);
+                localName = variables.nextIdentifierFromNextSequence(ParserBuilderConstants.Deserializer.IDENTIFIER);
 
                 if (!variables.allCharsConsumed()
                         && variables.currentChar() == ParserBuilderConstants.Deserializer.EQUAL) {
@@ -276,23 +276,11 @@ public final class YangInstanceIdentifierDeserializer {
         }
     }
 
-    private static String nextIdentifierFromNextSequence(final CharMatcher matcher, final MainVarsWrapper variables) {
-        final int start = variables.getOffset();
-        nextSequenceEnd(matcher, variables);
-        return variables.getData().substring(start, variables.getOffset());
-    }
-
-    private static void nextSequenceEnd(final CharMatcher matcher, final MainVarsWrapper variables) {
-        while (!variables.allCharsConsumed() && matcher.matches(variables.currentChar())) {
-            variables.skipCurrentChar();
-        }
-    }
-
     private static void prepareNodeWithValue(final QName qname, final List<PathArgument> path,
             final MainVarsWrapper variables) {
         variables.skipCurrentChar();
-        final String value = nextIdentifierFromNextSequence(
-                ParserBuilderConstants.Deserializer.IDENTIFIER_PREDICATE, variables);
+        final String value = variables.nextIdentifierFromNextSequence(
+                ParserBuilderConstants.Deserializer.IDENTIFIER_PREDICATE);
 
         // exception if value attribute is missing
         RestconfValidationUtils.checkDocumentedError(
@@ -456,8 +444,12 @@ public final class YangInstanceIdentifierDeserializer {
             offset++;
         }
 
-        public String getData() {
-            return data;
+        String nextIdentifierFromNextSequence(final CharMatcher matcher) {
+            final int start = offset;
+            while (!allCharsConsumed() && matcher.matches(currentChar())) {
+                skipCurrentChar();
+            }
+            return data.substring(start, offset);
         }
 
         public DataSchemaContextNode<?> getCurrent() {