private List<String> parseFunctionParameterNames(UriTokenizer tokenizer) throws UriParserException { List<String> names = new ArrayList<String>(); if (tokenizer.next(TokenKind.OPEN)) { do { ParserHelper.requireNext(tokenizer, TokenKind.ODataIdentifier); names.add(tokenizer.getText()); } while (tokenizer.next(TokenKind.COMMA)); ParserHelper.requireNext(tokenizer, TokenKind.CLOSE); } return names; }
private boolean nextBinaryValue() { if (nextConstantIgnoreCase("binary") && nextCharacter('\'')) { int lastGoodIndex = index; while (nextBase64() && nextBase64() && nextBase64() && nextBase64()) { lastGoodIndex += 4; } index = lastGoodIndex; if (nextBase64() && nextBase64() && (nextCharacter('A') || nextCharacter('E') || nextCharacter('I') || nextCharacter('M') || nextCharacter('Q') || nextCharacter('U') || nextCharacter('Y') || nextCharacter('c') || nextCharacter('g') || nextCharacter('k') || nextCharacter('o') || nextCharacter('s') || nextCharacter('w') || nextCharacter('0') || nextCharacter('4') || nextCharacter('8'))) { nextCharacter('='); } else { index = lastGoodIndex; if (nextBase64()) { if (nextCharacter('A') || nextCharacter('Q') || nextCharacter('g') || nextCharacter('w')) { nextConstant("=="); } else { return false; } } } return nextCharacter('\''); } return false; }
private boolean nextHours() { return nextCharacterRange('0', '1') && nextDigit() || nextCharacter('2') && nextCharacterRange('0', '3'); }
private boolean nextDateTimeOffsetValue() { return nextDateValue() && (nextCharacter('T') || nextCharacter('t')) && nextTimeOfDayValue() && (nextCharacter('Z') || nextCharacter('z') || nextSign() && nextHours() && nextCharacter(':') && nextMinutesOrSeconds()); }
private boolean nextEnumValue() { if (nextQualifiedName() && nextCharacter('\'')) { do { if (!(nextODataIdentifier() || nextIntegerValue(true))) { return false; } } while (nextCharacter(',')); return nextCharacter('\''); } return false; }
private boolean nextGeoPolygon(final boolean isGeography) { return nextGeoPrefix(isGeography) && nextCharacter('\'') && nextSrid() && nextCharacter(';') && nextPolygon() && nextCharacter('\''); }
found = nextConstant("$ref"); break; case VALUE: found = nextConstant("$value"); break; case COUNT: found = nextConstant("$count"); break; case CROSSJOIN: found = nextConstant("$crossjoin"); break; case ROOT: found = nextConstant("$root"); break; case IT: found = nextConstant("$it"); break; found = nextConstant("$apply"); break; case EXPAND: found = nextConstant("$expand"); break; case FILTER: found = nextConstant("$filter"); break; case LEVELS: found = nextConstant("$levels"); break;
public UriResource parsePathSegment(final String pathSegment, UriResource previous) throws UriParserException, UriValidationException { tokenizer = new UriTokenizer(pathSegment); // The order is important. // A qualified name should not be parsed as identifier and let the tokenizer halt at '.'. if (previous == null) { if (tokenizer.next(TokenKind.QualifiedName)) { throw new UriParserSemanticException("The initial segment must not be namespace-qualified.", UriParserSemanticException.MessageKeys.NAMESPACE_NOT_ALLOWED_AT_FIRST_ELEMENT, new FullQualifiedName(tokenizer.getText()).getNamespace()); } else if (tokenizer.next(TokenKind.ODataIdentifier)) { return leadingResourcePathSegment(); } } else { if (tokenizer.next(TokenKind.REF)) { return ref(previous); } else if (tokenizer.next(TokenKind.VALUE)) { return value(previous); } else if (tokenizer.next(TokenKind.COUNT)) { return count(previous); } else if (tokenizer.next(TokenKind.QualifiedName)) { return boundOperationOrTypeCast(previous); } else if (tokenizer.next(TokenKind.ODataIdentifier)) { return navigationOrProperty(previous); } } throw new UriParserSyntaxException("Unexpected start of resource-path segment.", UriParserSyntaxException.MessageKeys.SYNTAX); }
private boolean nextDateValue() { return nextYear() && nextCharacter('-') && (nextCharacter('0') && nextCharacterRange('1', '9') || nextCharacter('1') && nextCharacterRange('0', '2')) && nextCharacter('-') && (nextCharacter('0') && nextCharacterRange('1', '9') || nextCharacterRange('1', '2') && nextDigit() || nextCharacter('3') && nextCharacterRange('0', '1')); }
private boolean nextGeoLineString(final boolean isGeography) { return nextGeoPrefix(isGeography) && nextCharacter('\'') && nextSrid() && nextCharacter(';') && nextLineString() && nextCharacter('\''); }
private boolean nextGeoCollection(final boolean isGeography) { return nextGeoPrefix(isGeography) && nextCharacter('\'') && nextSrid() && nextCharacter(';') && nextCollection() && nextCharacter('\''); }
private boolean nextGeoMultiPolygon(final boolean isGeography) { return nextGeoPrefix(isGeography) && nextCharacter('\'') && nextSrid() && nextCharacter(';') && nextMultiPolygon() && nextCharacter('\''); }
private boolean nextGeoMultiPoint(final boolean isGeography) { return nextGeoPrefix(isGeography) && nextCharacter('\'') && nextSrid() && nextCharacter(';') && nextMultiPoint() && nextCharacter('\''); }
private boolean nextGeoMultiLineString(final boolean isGeography) { return nextGeoPrefix(isGeography) && nextCharacter('\'') && nextSrid() && nextCharacter(';') && nextMultiLineString() && nextCharacter('\''); }
private boolean nextGeoPoint(final boolean isGeography) { return nextGeoPrefix(isGeography) && nextCharacter('\'') && nextSrid() && nextCharacter(';') && nextPoint() && nextCharacter('\''); }
private boolean nextMultiPolygon() { if (nextConstantIgnoreCase("MultiPolygon") && nextCharacter('(') && nextPolygonData()) { while (nextCharacter(',')) { if (!nextPolygonData()) { return false; } } } return nextCharacter(')'); }
private boolean nextMultiPoint() { if (nextConstantIgnoreCase("MultiPoint") && nextCharacter('(') && nextPointData()) { while (nextCharacter(',')) { if (!nextPointData()) { return false; } } } return nextCharacter(')'); }
private boolean nextCollection() { if (nextConstantIgnoreCase("Collection") && nextCharacter('(') && nextGeo()) { while (nextCharacter(',')) { if (!nextGeo()) { return false; } } } return nextCharacter(')'); }
private boolean nextMultiLineString() { if (nextConstantIgnoreCase("MultiLineString") && nextCharacter('(') && nextLineStringData(false)) { while (nextCharacter(',')) { if (!nextLineStringData(false)) { return false; } } } return nextCharacter(')'); }
private void parseSingleNavigationExpr(UriInfoImpl uriInfo, final UriResourcePartTyped lastResource) throws UriParserException, UriValidationException { if (tokenizer.next(TokenKind.SLASH)) { final TokenKind tokenKind = ParserHelper.next(tokenizer, TokenKind.QualifiedName, TokenKind.ODataIdentifier); parseMemberExpression(tokenKind, uriInfo, lastResource, true); } }