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

Michael Lambert commented on CXF-5815:
--------------------------------------

Turning off ignorenamespace and enabling namespaceMap within the JSONProvider 
worked. Unfortunately I dont see how this could ever work without passing 
namespaces. If I were to enable ignorenamespace and configure 
inTransformElements to add namepaces to elements I presume the marshaller would 
treat the added namespaces as part of the element name itself (as it was 
configured to ignore the very thing I am adding).

There is an additional complication with simply adding namespaces to the 
elements being passed in as well. If the json objects are to be used in 
orchestrations and different prefixes are expected for the same namespace in 
different REST services I will have to translate those prefixes before passing 
parts of the original message on. I will either have to 1: carefully govern 
those namespace prefixes to avoid overlap or 2: deal with the translation 
headaches.

Are my assumptions correct?

Thanks Sergey!

> 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)

Reply via email to