Джексон терпит неудачу с FAIL_ON_UNKNOWN_PROPERTIES - PullRequest
0 голосов
/ 05 июля 2018

Миграция с Джерси Клиента с 2.22 на 2.27 с провайдером Jackson Json, Джексон отказывает в неизвестных свойствах, даже при правильной настройке;

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

...

    javax.ws.rs.core.Response r = requestBuiler.post(Entity.form(formData));
    return r.readEntity(AccessTokenResponse.class);

Если какое-либо поле отсутствует в объекте, десериализация ответа дает сбой / см. Трассировку стека.

Я не хочу никаких комментариев в моем объекте. Это не было необходимо в предыдущих версиях.

трассировка стека

вызвано: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Нераспознанное поле "mobileNo" (класс ch.abraxas.oauth.egovsec.EGovUser), не помечен как игнорируемый (20 известно свойства: "needsApproval", "фамилия", "authType", "accountNonExpired", "externalId", "identifier", "accountNonLocked", "otherRoles", "cariId", "credentialsNonExpired", "username", «язык», «организации», «contextName», «имя», «электронная почта», "власти", "страна", "стационарный номер", "включен"]) в [Источник: (Org.glassfish.jersey.message.internal.ReaderInterceptorExecutor $ UnCloseableInputStream); строка: 1, столбец: 1933] (через цепочку ссылок: ch.abraxas.oauth.egovsec.client.AccessTokenResponse [ "пользователь"] -> ch.abraxas.oauth.egovsec.EGovUser [ "MobileNo"]) в com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from (UnrecognizedPropertyException.java:62) в com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty (DeserializationContext.java:834) ...

pom.xml

       <javaee.version>8.0</javaee.version>
       <jersey.version>2.27</jersey.version>
       <jackson.version>2.9.4</jackson.version>

       <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <scope>provided</scope>
    </dependency>

        <!-- Jersey stack -->
        <dependency>
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>${jersey.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.inject</groupId>
            <artifactId>jersey-hk2</artifactId>
            <version>${jersey.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-jaxb-annotations</artifactId>
            <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>${jackson.version}</version>
    </dependency>

Когда добавляются отсутствующие свойства, все работает нормально. Но это должно поддерживать отсутствующий атрибут.

Спасибо за вашу помощь!

...