Description of problem: The following libraries have their module.xml files set to private: org.codehaus.jackson.jackson-core-asl org.codehaus.jackson.jackson-mapper-asl org.codehaus.jackson.jackson-jaxrs org.codehaus.jackson.jackson-xc After talking with Bill Burke, these should be public. While these modules are private, the use of them creates WARNings in the stack trace. As long as these are private there is a danger to devs using them. Version-Release number of selected component (if applicable): How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
This following quickstart uses this API, meaning customers may use it too. The sooner the API is made public, the better. https://github.com/jboss-developer/jboss-wfk-quickstarts/tree/2.6.x-develop/contacts-mobile-basic
Can you please provide some more details on the usual usecase of needing access to those libraries?
Sure, when adding a date (not a timestamp) in HTML/JavaScript and persisting it in a database over a REST API (we are using RESTEasy) the date gets turned into a timestamp and the date then gets shifted depending on the users timezone. To fix this we need to create a Jackson config Provider. This requires these classes. If we use external references then the Provider gets confused because there are now 2 of them and the fix does not work. So we either need these private modules made public or we need to use libraries from Maven Central. We can not mix the two. This can be seen in the code that Sande reference above.
To add to Joshua's comment, the typical use case is to access Jackson APIs like ObjectMapper in a Java EE application; this could be for various reasons like: * configuring the ObjectMapper for customizing serialization behavior like choosing the date format, omitting null properties in JSON etc., * adding custom JSON serializers and deserializers using Jackson APIs (JsonSerializer and JsonDeserializer); the MessageBodyReader and MessageBodyWriter APIs from JAX-RS 1.1 are limited in this case, since we still need to use a JSON library like Jackson to serialize to JSON). * and, if I recall correctly, referencing Jackson annotations like @JsonIgnore in a Java EE 6 app, requires adding the jackson-core-asl module to the deployment. All of these would require declaring a dependency on the Jackson modules - jackson-core-asl, jackson-mapper-asl. I'm not sure if the jackson-jaxrs and jackson-xc modules should be public, but I'd assume there would be usecases where users may write classes that extend the classes within them, in their apps.
we also asked Bill Burke and he wrote: <citation> jackson modules aren't private. If they are, then their module.xml definition should be changed. </citation>
This should be EAP source code changes. Assigning it to Stuart.
I created PR for WF and it is now merged into master. So could anybody ack it for EAP 6.3.x too?
Following discussions on the PM call, it was decided that these modules should not be made public. Instead users wanting to do things like in https://github.com/jboss-developer/jboss-wfk-quickstarts/blob/2.7.x-develop/contacts-mobile-basic/src/main/java/org/jboss/quickstarts/wfk/util/JacksonConfig.java will see the warning, but a KB entry will be created to outline in what cases this is ok. PR https://github.com/jbossas/jboss-eap/pull/1876 reverts the original https://github.com/jbossas/jboss-eap/pull/1815.
Closing, see comment #11
Bartosz Baranowski <bbaranow> updated the status of jira JBEAP-65 to Closed