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

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

Looking ahead: I see a chance for namespace collisions if I simply use the 
element names in the inTransformElementsMap.

For example if I have a payload such that an element with the same name exists 
in two different namespaces:
{
  c1:id
  d1:foo {
    d1:id
  }
}
How do I map that? Is there a way to specify that "foo.id" needs to include the 
d1 schema and thefore exclude the root "id" element? If so, can that syntax 
also be used when mapping "arrayKeys"? 

> 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