Как игнорировать нераспознанные поля, используя JAX-RS Entity Provider? - PullRequest
0 голосов
/ 19 апреля 2020

У меня следующая проблема ... Существует следующий класс DTO на стороне REST-провайдера.

@JsonIgnoreProperties(ignoreUnknown = true)
public class ImportListInfoResultDTO extends TCResultDTO {

    @Schema(description = "")
    public ImportListInfoModelDTO importListInfo;

}

@JsonInclude(value = Include.ALWAYS)
@Schema(description = "")
public class ImportListInfoModelDTO {
    public String commodityCode;
    public String countryIsoCode;
    public Date validFrom;
    public Date validTo;
    public int isImportPermitNeeded;                    
    public int isImportLicenceNeeded;                   
    public int isMonitoringDocumentNeeded;              
    public int isCertificateOfOriginNeeded;         
    public int isDeclarationOfOriginNeeded;         
}

Те же DTO на стороне клиента. На стороне клиента я пытаюсь получить ответ JAX-RS со следующим кодом:

public ECTImportListInfo callRestService(ImportListInfoRequestDTO requestParam) {
    Response data = super.callService(getImportListInfo, requestParam, webTokenHeader);
    ImportListInfoResultDTO response = data.readEntity(ImportListInfoResultDTO.class);
    return valueOf(response.importListInfo);
}

Получаю следующее исключение:

Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "errorCause" (class de.aeb.xnsg.tariffcontent.dto.ImportListInfoResultDTO), not marked as ignorable (2 known properties: "resultMessages", "importListInfo"])
 at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 16] (through reference chain: de.aeb.xnsg.tariffcontent.dto.ImportListInfoResultDTO["errorCause"])

Проблема в том, что мои DTO-классы не имеет поля "errorCause". Возможно, это поле каким-то образом добавлено сервером. Когда я тестирую свою REST-Endpoint с помощью Postman или Sawgger, нет такого поля, как «errorCause» ... Что я пробовал до сих пор (без какого-либо успеха): добавление к DTO @JsonIgnoreProperties(ignoreUnknown = true) с обеих сторон. Добавление конфигурации в JerseyClient следующим образом:

final JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider().configure(
        DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
        false);
Client jerseyHttpClient = ClientBuilder.newClient(new ClientConfig(jacksonJsonProvider));

Буду благодарен за любые подсказки. Спасибо.

...