Hi Andriy
I'm really not sure what can be done with this approach but to try and
investigate how a custom ObjectMapper/etc can be registered with
Jackson*Jaxb*JaxrsProvider.
Perhaps a longer term strategy for supporting JSON-only services is to
start converting XML schemas into JSON schemas which can be referenced
from for ex Swagger docs ? If we have JSON schemas then we may even
consider updating a wadl2java to convert WADL in JSON to the code too
Cheers, Sergey
On 11/02/16 12:27, Andrei Shakirin wrote:
Hi,
I trying to find solution for the following problem:
1) We have JAX-RS CXF based service, WADL first. The service accepts only JSON.
2) XSD schema has one upper-case element:
<xs:element name="SKU" type="xs:string">
<xs:annotation>
<xs:appinfo>
<jaxb:property name="SKU"/>
</xs:appinfo>
<xs:documentation>articleID with ebay-suffix (articleId_suffix),
case-sensitive</xs:documentation>
</xs:annotation>
</xs:element>
The generated JAXB objects contains corresponded @XmlElement annotation:
@XmlElement(name = "SKU", namespace = "http://xxx/yyy/", required = true)
protected String sku;
3) Problem: if Jackson tries to unmarshal incoming request, it throws following
exception:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "SKU" (class xxx.AvailabilityRequestEntry),
not marked as ignorable (5 known properties: "locationID", "requestedQuantity", "trackingUUID",
"sku", "fulfillmentType"]) at [Source: org.apache.cxf.transport.http.AbstractHTTPDestination
It seems that Jackson doesn't take @XmlElement hint into account.
I tried to look for solution, the recommendation is using Jackson annotation
@JsonProperty("XXX"):
http://jackson-users.ning.com/forum/topics/problem-with-upper-case-letter
http://stackoverflow.com/questions/15303110/jackson-json-field-mapping-capitalization
But this is not really acceptable for generated JAXB code.
Is there any elegant solution for such case?
CXF version: 2.7.11
Jackson version: 2.7.1
Regards,
Andrei.