Im разоблачение служб REST с использованием среды Sprint MVC 4.0, и я стараюсь следовать спецификации Odata для параметров запроса, таких как $ filter, $ search и $ orderBy. Каждый из них содержит выражения, которые мне нужны для синтаксического анализа, построения абстрактных деревьев синтаксиса и проверки. Все они извлекаются как String.Использование Odata4j для создания абстрактного синтаксического дерева для выражений параметров запроса
Мне не нужны все конструкции, которые определены в OData грамматики (http://docs.oasis-open.org/odata/odata/v4.0/cos01/abnf/odata-abnf-construction-rules.txt), я просто выбрать те, которые имеют отношение к моим делам использований (очень мало на самом деле)
Я хотел бы получить совет о том, для синтаксического анализа и создания абстрактного дерева, и если Odata4j можно использовать в качестве библиотеки Utility для выполнения этой работы для меня? Я бы хотел, чтобы не перетащить кучу новых зависимостей в odata4j, так как я буду использовать только небольшую часть кода.
Том, это похоже на то, что я тоже ищу. У вас есть код, который вы можете использовать? –
Надеюсь, вы можете увидеть шаблон здесь и завершить его самостоятельно. Строка queryString = uri.substring (uri.indexOf ('?') + 1); for (Строковый сегмент: queryString.split ("&")) { \t Строка [] paramPair = segment.split ("="); \t Строковое имя = paramPair [0] .trim(); \t Строковое значение = paramPair [1] .trim(); \t if (name.equals (OPTION_SELECT)) { \t \t select = ОпцииQueryParser.parseВыбрать (значение); \t} else if (name.equals (OPTION_FILTER)) { \t \t filter = ОпцииQueryParser.parseFilter (значение); \t} else if (name.equals (... – Tom
Спасибо, Том. Да, это была легкая часть. Теперь я пытаюсь выполнить последнюю часть вашего ответа: пройдите фильтр AST, чтобы построить мой запрос. –