Хотелось бы узнать, есть ли простой способ добавить фильтры в Thrift API Scrooge на уровне сервиса или метода (например, для ведения журнала сериализованных запросов)?В настоящее время я нахожусь на Scrooge 18.6.0
, но могу обновить при необходимости.
Я уже могу добавить фильтры к своему сервису, но код уродлив, и мне будет трудно продать решение длямои коллеги.У меня возникают следующие проблемы:
- Нет готового способа фильтрации
MethodPerEndpoint
- Нет кода, сгенерированного для преобразования
ServicePerEndpoint
до MethodPerEndpoint
, только наоборот - IMO, расширяющий интерфейс
ServicePerEndpoint
, намного уродливее и менее понятен. - Даже при расширении
ServicePerEndpoint
базовая реализация имеетfiltered
метод, который просто выбрасывает и игнорирует предоставленный фильтр (очень загадочно!) - Существует сгенерированный
ServicePerEndpointImpl
, у которого есть рабочая реализация filtered
, но этот класс является закрытым для ServicePerEndpoint
объект, а также final
Все это означает, что в дополнение к расширению ServicePerEndpoint
, я заканчиваю тем, что добавляю шаблон для добавления необходимых фильтров к каждые метод индивидуально, или создать фильтруемый ServicePerEndpointImpl
из моего ServicePerEndpoint
с чем-то вроде:
//Companion object
object MyApi {
def apply(arg1, ...) {
val myApi = new MyApi(arg1, ...)
MyThriftService.ServicePerEndpoint(
method1 = myApi.method1,
...
methodX = myApi.methodX
)
}
}
Все это кажется очень ненужным.Есть ли более простой способ?