Миграция с Джерси Клиента с 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>
Когда добавляются отсутствующие свойства, все работает нормально. Но это должно поддерживать отсутствующий атрибут.
Спасибо за вашу помощь!