Как реализовать промежуточное ПО Джерси для пользовательской обработки тела запроса сущности JSON - PullRequest
0 голосов
/ 03 июля 2018

Я бы хотел регистрировать тела сущностей запросов JSON для всех запросов POST ко всем ресурсам в Dropwizard Моем приложении. Суть в том, что мне нужно разрешить тип запроса, сделать копию сущности и выполнить некоторое произвольное форматирование поля запроса до того, как сущность будет зарегистрирована. Я также не могу изменить Класс запроса или Класс Поля в любом случае (даже с Аннотациями).

Как использовать логику, которую Джерси и Джексон используют для разрешения типа класса Java POJO перед передачей запроса в Ресурс?

Должен ли я использовать Фильтры , Перехватчики или EventListener реализации?

// I need to create raw JSON for instances of this class where fields
// of type Location get specially formatted but only for logging.
// i.e doesn't affect normal structure of the request
class CustomRequest {
    // In the raw JSON i create this field's name should be converted
    // to 'origin_geo' and its value should be a float with the first
    // value being the longitude and the second element being the 
    // latitude.
    public Location origin;

    public String otherField;
}

interface Location {
    float getLongitude();
    float getLatitude();    
}

Чтобы другие приложения могли использовать промежуточное ПО, я хочу избежать необходимости создавать специальный код для каждого отдельного типа запроса. Я хочу что-то общее, способное распознавать поля типа Location для любой сущности и просто сериализовать сущность, но с модификацией этих полей типа Location.

Кто-нибудь знает правильный способ сделать это с игровыми фреймворками? Я полагаю, что Джерси может использовать рефлексию для разрешения типа, когда метод ресурса разрешается, просматривая параметры метода и выбирая первый параметр, который удовлетворяет некоторому набору условий. Я хотел бы избежать повторной реализации этого.

...