У меня есть следующий метод в 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)