Timur KHALMUKHAMEDOV created XSTR-688:
-----------------------------------------
Summary: When unmarshal XML, xSream pass incorrect "definedIn" in
Mapper.shouldSerializeMember
Key: XSTR-688
URL: https://jira.codehaus.org/browse/XSTR-688
Project: XStream
Issue Type: Bug
Components: Converters
Affects Versions: 1.4.2
Reporter: Timur KHALMUKHAMEDOV
Assignee: Joerg Schaible
Priority: Blocker
Attachments: XStreamShouldSerializeMemberTest.java
When unmarshaling an XML the XStream verify if the field must be deserialized
using *Mapper.+shouldSerializeMember+*_(java.lang.Class definedIn,
java.lang.String fieldName)_
The verification done by
{color:blue}*com.thoughtworks.xstream.converters.reflection.+AbstractReflectionConverter+*.+doUnmarshal+_(final
Object result, final HierarchicalStreamReader reader, final
UnmarshallingContext context)_{color}
The problem is that the class passed in *+shouldSerializeMember+* as
"definedIn" parameter is incorrect.
+Example+:
{code:java}
class A{String a;}
class B extends A{String b;}
{code}
(!) when unmarshaling the instance of the +class B+ and verifying field
"+String a+" , xStream pass into shouldSerializeMember the +class B+ as
"*definedIn*" instead of +class A+.
---
The problem is in the class
*com.thoughtworks.xstream.converters.reflection.+AbstractReflectionConverter+*
at line 302.
I suggest to you to change this line:
bq. "|| !mapper.shouldSerializeMember({color:red}classDefiningField != null ?
classDefiningField : result.getClass(){color}, fieldName)) {"
by
bq. "||
!mapper.shouldSerializeMember({color:red}field.getDeclaringClass(){color},
fieldName)) {"
Failing unit test:
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
<hr/>
<p>
To unsubscribe from this list please visit:
</p>
<p>
<a
href="http://xircles.codehaus.org/manage_email">http://xircles.codehaus.org/manage_email</a>
</p>