Michael Lambert created CXF-5815:
------------------------------------
Summary: cxf not unmarshalling parent elements
Key: CXF-5815
URL: https://issues.apache.org/jira/browse/CXF-5815
Project: CXF
Issue Type: Bug
Components: JAXB Databinding
Affects Versions: 2.7.11
Environment: ubuntu 13.10, oracle java 1.7, tomcat 7.0
Reporter: Michael Lambert
Base class elements are not being unmarshaled when passed into jax-rs service.
For example if I pass:
{
"id": "12",
"name": "mike"
}
Where "id" comes from a base complexType:
<xsd:complexType name="entityType" abstract="true">
<xsd:sequence>
<xsd:element name="id" type="tns:textType"
minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
and "name" comes from a complexType derived from the base type:
<xsd:complexType name="userDataType">
<xsd:complexContent>
<xsd:extension base="common:entityType">
<xsd:sequence>
<xsd:element name="name"
type="xsd:string" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
The service method does not receive the "id" value when the object is
unmarshalled:
@POST
public void get(UserDataType user) {
assert user.getName() != null : "this passes";
assert user.getId() != null : "this fails";
}
The elements that belong to the derived class (and not the base class) are
passed properly (i.e. they are populated with data).
This happens only when I unmarshall json objects. It works fine with XML.
The project is on github
(https://github.com/MacFlecknoe/service-repository-sample). The schema with the
parent "entityType" is located at
https://github.com/MacFlecknoe/service-repository-sample/blob/master/schema/src/main/resources/schema/common/common-v1.xsd.
The schema which contains the derived type is located at:
https://github.com/MacFlecknoe/service-repository-sample/blob/master/schema/src/main/resources/schema/entity/user-v1.xsd.
The dto classes are generated in the project:
https://github.com/MacFlecknoe/service-repository-sample/tree/master/user-data/artifacts.
And the service itself (including the cxf configuration which is in beans.xml)
is located here:
https://github.com/MacFlecknoe/service-repository-sample/tree/master/user-data/service.
The marshaller is configured in
https://github.com/MacFlecknoe/service-repository-sample/blob/master/user-data/service/src/main/webapp/WEB-INF/beans.xml.
--
This message was sent by Atlassian JIRA
(v6.2#6252)