cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Beryozkin (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-5815) cxf not unmarshalling parent elements
Date Tue, 24 Jun 2014 12:53:24 GMT

    [ https://issues.apache.org/jira/browse/CXF-5815?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14042063#comment-14042063
] 

Sergey Beryozkin commented on CXF-5815:
---------------------------------------

I've opened https://issues.apache.org/jira/browse/CXF-5820.
As a side note, I'm not sure mapping JSON sequences to beans generated from complex schema
representations is something that can be supported well. I'd rather use XML then :-). JSON
is better suited to cases where the consumers do not know anything about the namespaces.
That said, it does make sense to look at the actual issue of minimizing collisions during
the transformations.

Cheers

> 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
>         Attachments: EntityType.java, UserDataType.java, beans.xml, common-v1.xsd, schema-0.0.1-SNAPSHOT-sources.jar,
schema-0.0.1-SNAPSHOT.jar, user-data-artifacts-0.0.1-SNAPSHOT-sources.jar, user-data-artifacts-0.0.1-SNAPSHOT.jar,
user-data-service-0.0.1-SNAPSHOT-sources.jar, user-data-service-0.0.1-SNAPSHOT.war, user-v1.xsd
>
>
> 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)

Mime
View raw message