X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Futil%2FXpathStringParsingPathArgumentBuilder.java;h=a2a21da1978a8e9feb7ed1cbd105b2f47a0ab328;hb=e7e0e48e6a79b08bb2c976ee3fd69582d84a7e4c;hp=5141d623ba9fa683f4cb787cbabc5e9ed51a4e52;hpb=74b132719136eadaee9989c6cc8db83c0f37af27;p=yangtools.git diff --git a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/XpathStringParsingPathArgumentBuilder.java b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/XpathStringParsingPathArgumentBuilder.java index 5141d623ba..a2a21da197 100644 --- a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/XpathStringParsingPathArgumentBuilder.java +++ b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/XpathStringParsingPathArgumentBuilder.java @@ -7,15 +7,16 @@ */ package org.opendaylight.yangtools.yang.data.util; +import static java.util.Objects.requireNonNull; + import com.google.common.base.CharMatcher; -import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import org.opendaylight.yangtools.concepts.Builder; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; @@ -23,15 +24,16 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum /** * Iterator which lazily parses {@link PathArgument} from string representation. * + *

* Note that invocation of {@link #hasNext()} or {@link #next()} may result in * throwing of {@link IllegalArgumentException} if underlying string representation * is not correctly serialized or does not represent instance identifier valid * for associated schema context. */ -class XpathStringParsingPathArgumentBuilder implements Builder> { +final class XpathStringParsingPathArgumentBuilder implements Builder> { /** - * Matcher matching WSP YANG ABNF token + * Matcher matching WSP YANG ABNF token. */ private static final CharMatcher WSP = CharMatcher.anyOf(" \t"); @@ -42,7 +44,7 @@ class XpathStringParsingPathArgumentBuilder implements Builder product = new ArrayList<>(); private final AbstractStringInstanceIdentifierCodec codec; private final String data; - private final List product = new ArrayList<>(); - private DataSchemaContextNode current; + private QNameModule lastModule; private int offset; XpathStringParsingPathArgumentBuilder(final AbstractStringInstanceIdentifierCodec codec, final String data) { - this.codec = Preconditions.checkNotNull(codec); - this.data = Preconditions.checkNotNull(data); + this.codec = requireNonNull(codec); + this.data = requireNonNull(data); this.current = codec.getDataContextTree().getRoot(); this.offset = 0; } @Override - public Collection build() { + public List build() { while (!allCharactersConsumed()) { product.add(computeNextArgument()); } @@ -83,7 +85,9 @@ class XpathStringParsingPathArgumentBuilder implements Builder * In case of error provides pointer to failed instance identifier, * offset on which failure occurred with explanation. * * @param condition Fails parsing if {@code condition} is false * @param errorMsg Error message which will be provided to user. - * @param attributes */ private void checkValid(final boolean condition, final String errorMsg, final Object... attributes) { if (!condition) { @@ -248,15 +245,14 @@ class XpathStringParsingPathArgumentBuilder implements Builder