[jboss-jira] [JBoss JIRA] (WFLY-10616) ContextResolver doesn't work
R Searls (JIRA)
issues at jboss.org
Fri Jun 29 14:11:00 EDT 2018
[ https://issues.jboss.org/browse/WFLY-10616?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13599095#comment-13599095 ]
R Searls commented on WFLY-10616:
---------------------------------
There was a code change between wfly-12 and wfly-13 in order to be compliant
with the jax-rs 2.1 specification. *This is not a bug*. Resteasy provides
a means to designate use of Jackson in liu of JSON-P.
Here is the documentation provided in the Resteasy's doc, chapter, "JAX-RS 2.1 Additions".
{code:java}
RESTEasy supports both JSON-B and JSON-P. In accordance with the specification,
entity providers for JSON-B take precedence over those for JSON-P for all types
except JsonValue and its sub-types.
The support for JSON-B is provided by the JsonBindingProvider from resteasy-json-binding-provider module.
To satisfy JAX-RS 2.1 requirements, JsonBindingProvider takes precedence over the other providers for dealing with JSON payloads,
in particular the Jackson one. The JSON outputs (for the same input) from Jackson and JSON-B reference implementation can be slightly
different. As a consequence, in order to allow retaining backward compatibility, RESTEasy offers a resteasy.preferJacksonOverJsonB context property that can be set to true to disable JsonBindingProvider for the current deloyment.
WildFly 14 supports specifying the default value for the resteasy.preferJacksonOverJsonB context property by setting a system property with the same name. Moreover, if no value is set for the context and system properties, it scans JAX-RS deployments
for Jackson annotations and sets the property to true if any of those annotations is found.
{code}
I used the following cmd to set the flag
{code:java}
./bin/standalone.sh -Dresteasy.preferJacksonOverJsonB=true
{code}
Alternatively you can provide a web.xml file with the flag.
{code:java}
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>resteasy.preferJacksonOverJsonB</param-name>
<param-value>true</param-value>
</context-param>
</web-app>
{code}
> ContextResolver doesn't work
> ----------------------------
>
> Key: WFLY-10616
> URL: https://issues.jboss.org/browse/WFLY-10616
> Project: WildFly
> Issue Type: Bug
> Components: REST
> Affects Versions: 13.0.0.Final
> Reporter: George Trudeau
> Assignee: R Searls
> Fix For: 14.0.0.CR1
>
> Attachments: test.war
>
>
> I have a simple ContextResolver to set Date serialization format for my JAX-RS service, it works on 12.0.0.Final but it doesn't anymore on 13.0.0.Final :
> {code:java}
> @Provider
> public class DateResolver implements ContextResolver<ObjectMapper>
> {
> private final ObjectMapper mapper;
> public DateResolver()
> {
> mapper = new ObjectMapper();
> mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
> mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
> }
> @Override
> public ObjectMapper getContext(Class<?> type) { return mapper; }
> }
> {code}
> The {{getContext}} method isn't called on 13.0.0.Final.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the jboss-jira
mailing list