in src/main/java/com/epam/eco/commons/avro/avpath/PathParser.java [92:123]
private Expression<?> parseSelectElementsExp() {
StringBuilder selectCriteriaBuilder = new StringBuilder();
int ch;
while (!PathUtils.isSelectElementsEndCh(ch = read())) {
if (ch == -1) {
throw new PathParseException(
path,
String.format(
"no closing ']' symbol for select criteria '%s'",
selectCriteriaBuilder.toString()));
}
selectCriteriaBuilder.append((char)ch);
}
String selectCriteria = selectCriteriaBuilder.toString();
if (PathUtils.isSelectCriteriaMatchAll(selectCriteria)) {
return new SelectAllElements();
} else if (PathUtils.isSelectCriteriaByNullKey(selectCriteria)) {
return new SelectElementByKey(null);
} else if (PathUtils.isSelectCriteriaByNumericKey(selectCriteria)) {
Number key = PathUtils.parseSelectCriteriaAsNumericKey(selectCriteria);
return new SelectElementByKey(key);
} else if (PathUtils.isSelectCriteriaByLiteralKey(selectCriteria)) {
String key = PathUtils.parseSelectCriteriaAsLiteralKey(selectCriteria);
return new SelectElementByKey(key);
} else {
throw new PathParseException(
path,
String.format("select criteria '%s' is invalid", selectCriteria));
}
}