import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterators;
import com.google.common.collect.Maps;
-import java.util.AbstractMap.SimpleImmutableEntry;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Optional;
import java.util.Set;
import javax.xml.xpath.XPathExpressionException;
@Override
public YangXPathExpression parseExpression(final String xpath) throws XPathExpressionException {
- final Entry<YangVersion, YangExpr> result = parseExpr(xpath);
- return new AntlrYangXPathExpression.Base(mathMode, result.getKey(), result.getValue(), xpath);
+ final ParseExprResult result = parseExpr(xpath);
+ return new AntlrYangXPathExpression.Base(mathMode, result.minimumYangVersion, result.expression, xpath);
}
@Override
@Override
public YangXPathExpression.QualifiedBound parseExpression(final String xpath) throws XPathExpressionException {
- final Entry<YangVersion, YangExpr> result = parseExpr(xpath);
- return new AntlrYangXPathExpression.Qualified(mathMode, result.getKey(), result.getValue(), xpath,
+ final ParseExprResult result = parseExpr(xpath);
+ return new AntlrYangXPathExpression.Qualified(mathMode, result.minimumYangVersion, result.expression, xpath,
namespaceContext);
}
@Override
public YangXPathExpression.UnqualifiedBound parseExpression(final String xpath)
throws XPathExpressionException {
- final Entry<YangVersion, YangExpr> result = parseExpr(xpath);
+ final ParseExprResult result = parseExpr(xpath);
- return new AntlrYangXPathExpression.Unqualified(mathMode, result.getKey(), result.getValue(), xpath,
- namespaceContext, defaultNamespace);
+ return new AntlrYangXPathExpression.Unqualified(mathMode, result.minimumYangVersion, result.expression,
+ xpath, namespaceContext, defaultNamespace);
}
@Override
}
}
+ private static final class ParseExprResult {
+ final YangVersion minimumYangVersion;
+ final YangExpr expression;
+
+ ParseExprResult(final YangVersion minimumYangVersion, final YangExpr expression) {
+ this.minimumYangVersion = requireNonNull(minimumYangVersion);
+ this.expression = requireNonNull(expression);
+ }
+ }
+
private static final Map<String, YangBinaryOperator> BINARY_OPERATORS = Maps.uniqueIndex(
Arrays.asList(YangBinaryOperator.values()), YangBinaryOperator::toString);
private static final Map<String, YangXPathNodeType> NODE_TYPES = Maps.uniqueIndex(Arrays.asList(
}
@SuppressWarnings("checkstyle:illegalCatch")
- final Entry<YangVersion, YangExpr> parseExpr(final String xpath) throws XPathExpressionException {
+ final ParseExprResult parseExpr(final String xpath) throws XPathExpressionException {
// Create a parser and disconnect it from console error output
final xpathLexer lexer = new xpathLexer(CharStreams.fromString(xpath));
final xpathParser parser = new xpathParser(new CommonTokenStream(lexer));
} catch (RuntimeException e) {
throw new XPathExpressionException(e);
}
- return new SimpleImmutableEntry<>(minimumYangVersion, expr);
+ return new ParseExprResult(minimumYangVersion, expr);
}
/**
}
static class Qualified extends AntlrYangXPathExpression implements QualifiedBound {
- final YangNamespaceContext namespaceContext;
+ private final YangNamespaceContext namespaceContext;
Qualified(final YangXPathMathMode mathMode, final YangVersion yangVersion, final YangExpr rootExpr,
final String origStr, final YangNamespaceContext namespaceContext) {
this.namespaceContext = requireNonNull(namespaceContext);
}
- YangNamespaceContext getNamespaceContext() {
+ final YangNamespaceContext namespaceContext() {
return namespaceContext;
}
@Override
public Resolved interpretAsQName(final YangLiteralExpr expr) throws XPathExpressionException {
- return Utils.interpretAsQName(getNamespaceContext(), defaultNamespace, expr);
+ return Utils.interpretAsQName(namespaceContext(), defaultNamespace, expr);
}
}