Получить «оставшиеся» данные, которые не использовались jsonb на моем первом объекте? - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть следующий метод в REST API, который я разрабатываю:

@POST
@Consumes (MediaType.APPLICATION_JSON+ ";charset=utf-8")
@Produces (MediaType.APPLICATION_JSON + ";charset=utf-8")
public RunInstance startRun ( RunInstance runInstance ) 

Объект RunInstance работает как держатель для различных свойств, которые могут или не могут потребоваться до запуска длительной операции , Некоторые из его полей будут использоваться в качестве обратной связи позже, когда этот объект будет возвращен, когда клиенту потребуется обновить состояние операции:

public class RunInstance {
    private int ruleId; 
    @JsonbTransient private String ruleSubmitResult; 
    private String status; 
    private String errorMessage; 
    private String action;
    private int runId; 
    private java.time.LocalDateTime startDt ; 
    private java.time.LocalDateTime endDt ; 
    private int inputRows;
    private int currentLoop;
    ....

Теперь фактическая операция, которая будет выполнена, будет отличаться в зависимости от ruleId. Каждая операция имеет свои требования и может принимать разные параметры.

Если я сохраню подпись моего метода как

public RunInstance startRun ( RunInstance runInstance )

Это позволяет мне автоматически заполнять этот объект. Однако клиент также передаст некоторые параметры / json данные, которые относятся к каждой указанной операции c и будут различаться в зависимости от типа операции.

Я хочу вместо изменения сигнатуры метода что-то вроде

@POST
    @Consumes (MediaType.APPLICATION_JSON+ ";charset=utf-8")
    @Produces (MediaType.APPLICATION_JSON + ";charset=utf-8")
    public RunInstance startRun ( Map<String,String> bodyParams) 

, затем придется вручную извлекать параметры, связанные с заполнением моего объекта RunInstance, если я могу заполнить его автоматически, при этом также имея доступ к остальным параметрам (которые не используются в качестве значений для этот объект).

Однако, согласно этому посту, невозможно разместить два объекта: JAX-RS Опубликовать несколько объектов

Кто-нибудь знает что-нибудь достичь чего-то вроде этого? то есть как

public RunInstance startRun ( RunInstance runInstance , Map<String,String> remainingbodyParams)
...