Need help with a custom converter

classic Classic list List threaded Threaded
6 messages Options
X
Reply | Threaded
Open this post in threaded view
|

Need help with a custom converter

X
I'm getting this exception:
[exec]Causedby:com.thoughtworks.xstream.converters.ConversionException:Cannotdeserialize objectwithnewreadObject()/writeObject()methods [exec]----Debugginginformation ----[exec]class:com.sun.org.apache.xerces.internal.dom.AttributeMap[exec]required-type :com.sun.org.apache.xerces.internal.dom.AttributeMap[exec]converter-type :com.thoughtworks.xstream.converters.reflection.SerializableConverter[exec]path :/xxx.xxx.xxx.xxx.xxx.xxx.SignedDocument/template/template/com.sun.org.apache.xerces.internal.dom.NodeImpl/default/ownerNode/com.sun.org.apache.xerces.internal.dom.ElementImpl/default/attributes [exec]line number :1183[exec]class[1]:com.sun.org.apache.xerces.internal.dom.ElementImpl[exec]class[2]:xxx.xxx.xxx.xxx.xxx.xxx.MyTemplate[exec]converter-type[1]:com.thoughtworks.xstream.converters.reflection.ReflectionConverter[exec]class[3]:xxx.xxx.xxx.xxx.xxx.xxx.SignedDocument[exec]version :1.4.5[exec]-------------------------------

I know that the problem is that the xml file was created under JDK 6 and since we've updated to JDK 7, the reflection-based converter broke.  I did not write this code and have no experience with XStream though, so I am not sure how to create the custom converter.  The xml I'm trying to unmarshal from is a mess.  It's got an element named "template" of a certain class type that is a child of another element with the same "template" name but with a different class type.  And within the inner-"template" element are all these sub-elements called com.sun.org.apache.xerces.internal.dom.NodeImpl, com.sun.org.apache.xerces.internal.dom.ChildNode, com.sun.org.apache.xerces.internal.dom.ParentNode, com.sun.org.apache.xerces.internal.dom.ElementImpl.  I just don't even know where to start or what class I'm supposed to try to create a custom converter for.


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|

Re: Need help with a custom converter

Jörg Schaible-4
Hi,

X wrote:

> I'm getting this exception:
>
[exec]Causedby:com.thoughtworks.xstream.converters.ConversionException:Cannotdeserialize
> [objectwithnewreadObject()/writeObject()methods
> [[exec]----Debugginginformation
>
[----[exec]class:com.sun.org.apache.xerces.internal.dom.AttributeMap[exec]required-
type
> [:com.sun.org.apache.xerces.internal.dom.AttributeMap[exec]converter-type
>
[:com.thoughtworks.xstream.converters.reflection.SerializableConverter[exec]path
>
[:/xxx.xxx.xxx.xxx.xxx.xxx.SignedDocument/template/template/com.sun.org.apache.xerces.internal.dom.NodeImpl/default/ownerNode/com.sun.org.apache.xerces.internal.dom.ElementImpl/default/attributes
> [[exec]line number
>
[:1183[exec]class[1]:com.sun.org.apache.xerces.internal.dom.ElementImpl[exec]class[2]:xxx.xxx.xxx.xxx.xxx.xxx.MyTemplate[exec]converter-
type[1]:com.thoughtworks.xstream.converters.r
>  
eflection.ReflectionConverter[exec]class[3]:xxx.xxx.xxx.xxx.xxx.xxx.SignedDocument[exec]version

>  :1.4.5[exec]-------------------------------
>
> I know that the problem is that the xml file was created under JDK 6 and
> since we've updated to JDK 7, the reflection-based converter broke.  I did
> not write this code and have no experience with XStream though, so I am
> not sure how to create the custom converter.  The xml I'm trying to
> unmarshal from is a mess.  It's got an element named "template" of a
> certain class type that is a child of another element with the same
> "template" name but with a different class type.  And within the
> inner-"template" element are all these sub-elements called
> com.sun.org.apache.xerces.internal.dom.NodeImpl,
> com.sun.org.apache.xerces.internal.dom.ChildNode,
> com.sun.org.apache.xerces.internal.dom.ParentNode,
> com.sun.org.apache.xerces.internal.dom.ElementImpl.  I just don't even
> know where to start or what cl
>  ass I'm supposed to try to create a custom converter for.

This is really a nasty one. The problem is that the internal layout of the
AttributeMap has changed. Actually the change happened in the parent class
NamedNodeMapImpl. That one has now a method pair of readObject/writeObject
to mask the fact that it manages its nodes no longer in a Vector but an
arbitrary List implementation. The SerializableConverter detects this
situation and - because in those methods can happen "anything - it is no
longer able to deserialize.

Since those methods were not present in Java 6 and AttributeMap and its
super classes were all Serializable and did lack such a method pair, the
generated XML does actually not differ from the one that would have been
produced by the ReflectionConverter itself. So in this special case you can
get away registering a ReflectionConverter for AttributeMap:

============== %< ================
 xstream.register(
   new ReflectionConverter(
     xstream.getMapper(),
     xstream.getReflectionProvider(),
     AttributeMap.class));
============== %< ================

The Java code and the XML will be compatible for both Java versions.

However, in the long run, you should think about custom converters for all
those DOM types - or one for the root element of the DOM objects in your
classes (typically a Document) and write/recreate the XML structure using
the methods of XStream's reader/writer.

Cheers,
Jörg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


X
Reply | Threaded
Open this post in threaded view
|

Re: Need help with a custom converter

X
Thank you sooo much for your help! 




On Thursday, March 6, 2014 4:04 AM, Jörg Schaible <[hidden email]> wrote:
Hi,

X wrote:

> I'm getting this exception:
>
[exec]Causedby:com.thoughtworks.xstream.converters.ConversionException:Cannotdeserialize
> [objectwithnewreadObject()/writeObject()methods
> [[exec]----Debugginginformation
>
[----[exec]class:com.sun.org.apache.xerces.internal.dom.AttributeMap[exec]required-
type
> [:com.sun.org.apache.xerces.internal.dom.AttributeMap[exec]converter-type
>
[:com.thoughtworks.xstream.converters.reflection.SerializableConverter[exec]path
>
[:/xxx.xxx.xxx.xxx.xxx.xxx.SignedDocument/template/template/com.sun.org.apache.xerces.internal.dom.NodeImpl/default/ownerNode/com.sun.org.apache.xerces.internal.dom.ElementImpl/default/attributes
> [[exec]line number
>
[:1183[exec]class[1]:com.sun.org.apache.xerces.internal.dom.ElementImpl[exec]class[2]:xxx.xxx.xxx.xxx.xxx.xxx.MyTemplate[exec]converter-
type[1]:com.thoughtworks.xstream.converters.r

eflection.ReflectionConverter[exec]class[3]:xxx.xxx.xxx.xxx.xxx.xxx.SignedDocument[exec]version

>  :1.4.5[exec]-------------------------------
>
> I know that the problem is that the xml file was created under JDK 6 and
> since we've updated to JDK 7, the reflection-based converter broke.  I did
> not write this code and have no experience with XStream though, so I am
> not sure how to create the custom converter.  The xml I'm trying to
> unmarshal from is a mess.  It's got an element named "template" of a
> certain class type that is a child of another element with the same
> "template" name but with a different class type.  And within the
> inner-"template" element are all these sub-elements called
> com.sun.org.apache.xerces.internal.dom.NodeImpl,
> com.sun.org.apache.xerces.internal.dom.ChildNode,
> com.sun.org.apache.xerces.internal.dom.ParentNode,
> com.sun.org.apache.xerces.internal.dom.ElementImpl.  I just don't even
> know where to start or what cl
>  ass I'm supposed to try to create a custom converter for.

This is really a nasty one. The problem is that the internal layout of the
AttributeMap has changed. Actually the change happened in the parent class
NamedNodeMapImpl. That one has now a method pair of readObject/writeObject
to mask the fact that it manages its nodes no longer in a Vector but an
arbitrary List implementation. The SerializableConverter detects this
situation and - because in those methods can happen "anything - it is no
longer able to deserialize.

Since those methods were not present in Java 6 and AttributeMap and its
super classes were all Serializable and did lack such a method pair, the
generated XML does actually not differ from the one that would have been
produced by the ReflectionConverter itself. So in this special case you can
get away registering a ReflectionConverter for AttributeMap:

============== %< ================
xstream.register(
   new ReflectionConverter(
     xstream.getMapper(),
     xstream.getReflectionProvider(),
     AttributeMap.class));
============== %< ================

The Java code and the XML will be compatible for both Java versions.

However, in the long run, you should think about custom converters for all
those DOM types - or one for the root element of the DOM objects in your
classes (typically a Document) and write/recreate the XML structure using
the methods of XStream's reader/writer.

Cheers,
Jörg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


X
Reply | Threaded
Open this post in threaded view
|

Re: Need help with a custom converter

X
So I made the update and it seemed to work, I was able to bring up the object.  But with testing I noticed that all the objects that I unmarshalled and then were updated and reserialized with xstream would cause the following exception when I would try to unmarshall it again:


     [exec] Caused by: com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field
com.sun.org.apache.xerces.internal.dom.AttributeMap.com.sun.org.apache.xerces.internal.dom.NamedNodeMapImpl
     [exec] ---- Debugging information ----
     [exec] field               :
com.sun.org.apache.xerces.internal.dom.NamedNodeMapImpl
     [exec] class               :
com.sun.org.apache.xerces.internal.dom.AttributeMap
     [exec] required-type       : com.sun.org.apache.xerces.internal.dom.AttributeMap
     [exec] converter-type      :
com.thoughtworks.xstream.converters.reflection.ReflectionConverter
     [exec] path                :
/xxx.xxx.SignedDocument/template/template/com.sun.org.apache.xerces.internal.dom.NodeImpl/default/ownerNode/com.sun.org.apache.xerces.internal.dom.ElementImpl/default/attributes/com.sun.org.apache.xerces.internal.dom.NamedNodeMapImpl
     [exec] line number         : 566
     [exec] class[1]            :
com.sun.org.apache.xerces.internal.dom.ElementImpl
     [exec] converter-type[1]   :
com.thoughtworks.xstream.converters.reflection.SerializableConverter
     [exec] class[2]            :
xxx.xxx.MyTemplate
     [exec] class[3]            : xxx.xxx.SignedDocument
     [exec] version             : 1.4.7

Is there anything I can do about this?



On Thursday, March 6, 2014 8:39 AM, X <[hidden email]> wrote:
Thank you sooo much for your help! 




On Thursday, March 6, 2014 4:04 AM, Jörg Schaible <[hidden email]> wrote:
Hi,

X wrote:

> I'm getting this exception:
>
[exec]Causedby:com.thoughtworks.xstream.converters.ConversionException:Cannotdeserialize
> [objectwithnewreadObject()/writeObject()methods
> [[exec]----Debugginginformation
>
[----[exec]class:com.sun.org.apache.xerces.internal.dom.AttributeMap[exec]required-
type
> [:com.sun.org.apache.xerces.internal.dom.AttributeMap[exec]converter-type
>
[:com.thoughtworks.xstream.converters.reflection.SerializableConverter[exec]path
>
[:/xxx.xxx.xxx.xxx.xxx.xxx.SignedDocument/template/template/com.sun.org.apache.xerces.internal.dom.NodeImpl/default/ownerNode/com.sun.org.apache.xerces.internal.dom.ElementImpl/default/attributes
> [[exec]line number
>
[:1183[exec]class[1]:com.sun.org.apache.xerces.internal.dom.ElementImpl[exec]class[2]:xxx.xxx.xxx.xxx.xxx.xxx.MyTemplate[exec]converter-
type[1]:com.thoughtworks.xstream.converters.r

eflection.ReflectionConverter[exec]class[3]:xxx.xxx.xxx.xxx.xxx.xxx.SignedDocument[exec]version

>  :1.4.5[exec]-------------------------------
>
> I know that the problem is that the xml file was created under JDK 6 and
> since we've updated to JDK 7, the reflection-based converter broke.  I did
> not write this code and have no experience with XStream though, so I am
> not sure how to create the custom converter.  The xml I'm trying to
> unmarshal from is a mess.  It's got an element named "template" of a
> certain class type that is a child of another element with the same
> "template" name but with a different class type.  And within the
> inner-"template" element are all these sub-elements called
> com.sun.org.apache.xerces.internal.dom.NodeImpl,
> com.sun.org.apache.xerces.internal.dom.ChildNode,
> com.sun.org.apache.xerces.internal.dom.ParentNode,
> com.sun.org.apache.xerces.internal.dom.ElementImpl.  I just don't even
> know where to start or what cl
>  ass I'm supposed to try to create a custom converter for.

This is really a nasty one. The problem is that the internal layout of the
AttributeMap has changed. Actually the change happened in the parent class
NamedNodeMapImpl. That one has now a method pair of readObject/writeObject
to mask the fact that it manages its nodes no longer in a Vector but an
arbitrary List implementation. The SerializableConverter detects this
situation and - because in those methods can happen "anything - it is no
longer able to deserialize.

Since those methods were not present in Java 6 and AttributeMap and its
super classes were all Serializable and did lack such a method pair, the
generated XML does actually not differ from the one that would have been
produced by the ReflectionConverter itself. So in this special case you can
get away registering a ReflectionConverter for AttributeMap:

============== %< ================
xstream.register(
   new ReflectionConverter(
     xstream.getMapper(),
     xstream.getReflectionProvider(),
     AttributeMap.class));
============== %< ================

The Java code and the XML will be compatible for both Java versions.

However, in the long run, you should think about custom converters for all
those DOM types - or one for the root element of the DOM objects in your
classes (typically a Document) and write/recreate the XML structure using
the methods of XStream's reader/writer.

Cheers,
Jörg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|

Re: Re: Need help with a custom converter

Jörg Schaible-2
Hi,

to me this looks like you deserialize with that ReflectionConverter and
serialize without it ... this will not work. XStream must be setup in the
same way for both operations.

- Jörg




X wrote:

> So I made the update and it seemed to work, I was able to bring up the
> object.  But with testing I noticed that all the objects that I
> unmarshalled and then were updated and reserialized with xstream would
> cause the following exception when I would try to unmarshall it again:
>
>
> [exec] Caused by:
>
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException:
> No such field
>
com.sun.org.apache.xerces.internal.dom.AttributeMap.com.sun.org.apache.xerces.internal.dom.NamedNodeMapImpl
> [exec] ---- Debugging information ---- [exec] field               :
> com.sun.org.apache.xerces.internal.dom.NamedNodeMapImpl [exec] class      
>         : com.sun.org.apache.xerces.internal.dom.AttributeMap
> [exec] required-type       :
> com.sun.org.apache.xerces.internal.dom.AttributeMap [exec] converter-type
>     : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
> [exec] path                :
>
/xxx.xxx.SignedDocument/template/template/com.sun.org.apache.xerces.internal.dom.NodeImpl/default/ownerNode/com.sun.org.apache.xerces.internal.dom.ElementImpl/default/attributes/com.sun.org.apache.xerces.internal.dom.NamedNodeMapImpl

> [exec] line number         : 566
> [exec] class[1]            :
> com.sun.org.apache.xerces.internal.dom.ElementImpl
> [exec] converter-type[1]   :
> com.thoughtworks.xstream.converters.reflection.SerializableConverter
> [exec] class[2]            :
> xxx.xxx.MyTemplate
> [exec] class[3]            : xxx.xxx.SignedDocument
> [exec] version             : 1.4.7
>
> Is there anything I can do about this?
>
>
>
> On Thursday, March 6, 2014 8:39 AM, X
> <[hidden email]> wrote: Thank you sooo much
> for your help!
>
>
>
>
> On Thursday, March 6, 2014 4:04 AM, Jörg Schaible
> <[hidden email]> wrote: Hi,
>
> X wrote:
>
>> I'm getting this exception:
>>
>
[exec]Causedby:com.thoughtworks.xstream.converters.ConversionException:Cannotdeserialize
>> [objectwithnewreadObject()/writeObject()methods
>> [[exec]----Debugginginformation
>>
>
[----[exec]class:com.sun.org.apache.xerces.internal.dom.AttributeMap[exec]required-
> type
>> [:com.sun.org.apache.xerces.internal.dom.AttributeMap[exec]converter-type
>>
>
[:com.thoughtworks.xstream.converters.reflection.SerializableConverter[exec]path
>>
>
[:/xxx.xxx.xxx.xxx.xxx.xxx.SignedDocument/template/template/com.sun.org.apache.xerces.internal.dom.NodeImpl/default/ownerNode/com.sun.org.apache.xerces.internal.dom.ElementImpl/default/attributes
>> [[exec]line number
>>
>
[:1183[exec]class[1]:com.sun.org.apache.xerces.internal.dom.ElementImpl[exec]class[2]:xxx.xxx.xxx.xxx.xxx.xxx.MyTemplate[exec]converter-
> type[1]:com.thoughtworks.xstream.converters.r
>>
>
eflection.ReflectionConverter[exec]class[3]:xxx.xxx.xxx.xxx.xxx.xxx.SignedDocument[exec]version

>>:1.4.5[exec]-------------------------------
>>
>> I know that the problem is that the xml file was created under JDK 6 and
>> since we've updated to JDK 7, the reflection-based converter broke.  I
>> did not write this code and have no experience with XStream though, so I
>> am not sure how to create the custom converter.  The xml I'm trying to
>> unmarshal from is a mess.  It's got an element named "template" of a
>> certain class type that is a child of another element with the same
>> "template" name but with a different class type.  And within the
>> inner-"template" element are all these sub-elements called
>> com.sun.org.apache.xerces.internal.dom.NodeImpl,
>> com.sun.org.apache.xerces.internal.dom.ChildNode,
>> com.sun.org.apache.xerces.internal.dom.ParentNode,
>> com.sun.org.apache.xerces.internal.dom.ElementImpl.  I just don't even
>> know where to start or what cl
>>ass I'm supposed to try to create a custom converter for.
>
> This is really a nasty one. The problem is that the internal layout of the
> AttributeMap has changed. Actually the change happened in the parent class
> NamedNodeMapImpl. That one has now a method pair of readObject/writeObject
> to mask the fact that it manages its nodes no longer in a Vector but an
> arbitrary List implementation. The SerializableConverter detects this
> situation and - because in those methods can happen "anything - it is no
> longer able to deserialize.
>
> Since those methods were not present in Java 6 and AttributeMap and its
> super classes were all Serializable and did lack such a method pair, the
> generated XML does actually not differ from the one that would have been
> produced by the ReflectionConverter itself. So in this special case you
> can get away registering a ReflectionConverter for AttributeMap:
>
> ============== %< ================
> xstream.register(
> new ReflectionConverter(
> xstream.getMapper(),
> xstream.getReflectionProvider(),
> AttributeMap.class));
> ============== %< ================
>
> The Java code and the XML will be compatible for both Java versions.
>
> However, in the long run, you should think about custom converters for all
> those DOM types - or one for the root element of the DOM objects in your
> classes (typically a Document) and write/recreate the XML structure using
> the methods of XStream's reader/writer.
>
> Cheers,
> Jörg
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
> http://xircles.codehaus.org/manage_email
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
> http://xircles.codehaus.org/manage_email
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>     http://xircles.codehaus.org/manage_email



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


X
Reply | Threaded
Open this post in threaded view
|

Re: Re: Need help with a custom converter

X
I understand now.  Thanks for all your help!





On Thursday, March 6, 2014 11:49 AM, Jörg Schaible <[hidden email]> wrote:
Hi,

to me this looks like you deserialize with that ReflectionConverter and
serialize without it ... this will not work. XStream must be setup in the
same way for both operations.

- Jörg




X wrote:

> So I made the update and it seemed to work, I was able to bring up the
> object.  But with testing I noticed that all the objects that I
> unmarshalled and then were updated and reserialized with xstream would
> cause the following exception when I would try to unmarshall it again:
>
>
> [exec] Caused by:
>
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException:
> No such field
>
com.sun.org.apache.xerces.internal.dom.AttributeMap.com.sun.org.apache.xerces.internal.dom.NamedNodeMapImpl
> [exec] ---- Debugging information ---- [exec] field               :
> com.sun.org.apache.xerces.internal.dom.NamedNodeMapImpl [exec] class     
>         : com.sun.org.apache.xerces.internal.dom.AttributeMap
> [exec] required-type       :
> com.sun.org.apache.xerces.internal.dom.AttributeMap [exec] converter-type
>     : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
> [exec] path                :
>
/xxx.xxx.SignedDocument/template/template/com.sun.org.apache.xerces.internal.dom.NodeImpl/default/ownerNode/com.sun.org.apache.xerces.internal.dom.ElementImpl/default/attributes/com.sun.org.apache.xerces.internal.dom.NamedNodeMapImpl

> [exec] line number         : 566
> [exec] class[1]            :
> com.sun.org.apache.xerces.internal.dom.ElementImpl
> [exec] converter-type[1]   :
> com.thoughtworks.xstream.converters.reflection.SerializableConverter
> [exec] class[2]            :
> xxx.xxx.MyTemplate
> [exec] class[3]            : xxx.xxx.SignedDocument
> [exec] version             : 1.4.7
>
> Is there anything I can do about this?
>
>
>
> On Thursday, March 6, 2014 8:39 AM, X
> <[hidden email]> wrote: Thank you sooo much
> for your help!
>
>
>
>
> On Thursday, March 6, 2014 4:04 AM, Jörg Schaible
> <[hidden email]> wrote: Hi,
>
> X wrote:
>
>> I'm getting this exception:
>>
>
[exec]Causedby:com.thoughtworks.xstream.converters.ConversionException:Cannotdeserialize
>> [objectwithnewreadObject()/writeObject()methods
>> [[exec]----Debugginginformation
>>
>
[----[exec]class:com.sun.org.apache.xerces.internal.dom.AttributeMap[exec]required-
> type
>> [:com.sun.org.apache.xerces.internal.dom.AttributeMap[exec]converter-type
>>
>
[:com.thoughtworks.xstream.converters.reflection.SerializableConverter[exec]path
>>
>
[:/xxx.xxx.xxx.xxx.xxx.xxx.SignedDocument/template/template/com.sun.org.apache.xerces.internal.dom.NodeImpl/default/ownerNode/com.sun.org.apache.xerces.internal.dom.ElementImpl/default/attributes
>> [[exec]line number
>>
>
[:1183[exec]class[1]:com.sun.org.apache.xerces.internal.dom.ElementImpl[exec]class[2]:xxx.xxx.xxx.xxx.xxx.xxx.MyTemplate[exec]converter-
> type[1]:com.thoughtworks.xstream.converters.r
>>
>
eflection.ReflectionConverter[exec]class[3]:xxx.xxx.xxx.xxx.xxx.xxx.SignedDocument[exec]version

>>:1.4.5[exec]-------------------------------
>>
>> I know that the problem is that the xml file was created under JDK 6 and
>> since we've updated to JDK 7, the reflection-based converter broke.  I
>> did not write this code and have no experience with XStream though, so I
>> am not sure how to create the custom converter.  The xml I'm trying to
>> unmarshal from is a mess.  It's got an element named "template" of a
>> certain class type that is a child of another element with the same
>> "template" name but with a different class type.  And within the
>> inner-"template" element are all these sub-elements called
>> com.sun.org.apache.xerces.internal.dom.NodeImpl,
>> com.sun.org.apache.xerces.internal.dom.ChildNode,
>> com.sun.org.apache.xerces.internal.dom.ParentNode,
>> com.sun.org.apache.xerces.internal.dom.ElementImpl.  I just don't even
>> know where to start or what cl
>>ass I'm supposed to try to create a custom converter for.
>
> This is really a nasty one. The problem is that the internal layout of the
> AttributeMap has changed. Actually the change happened in the parent class
> NamedNodeMapImpl. That one has now a method pair of readObject/writeObject
> to mask the fact that it manages its nodes no longer in a Vector but an
> arbitrary List implementation. The SerializableConverter detects this
> situation and - because in those methods can happen "anything - it is no
> longer able to deserialize.
>
> Since those methods were not present in Java 6 and AttributeMap and its
> super classes were all Serializable and did lack such a method pair, the
> generated XML does actually not differ from the one that would have been
> produced by the ReflectionConverter itself. So in this special case you
> can get away registering a ReflectionConverter for AttributeMap:
>
> ============== %< ================
> xstream.register(
> new ReflectionConverter(
> xstream.getMapper(),
> xstream.getReflectionProvider(),
> AttributeMap.class));
> ============== %< ================
>
> The Java code and the XML will be compatible for both Java versions.
>
> However, in the long run, you should think about custom converters for all
> those DOM types - or one for the root element of the DOM objects in your
> classes (typically a Document) and write/recreate the XML structure using
> the methods of XStream's reader/writer.
>
> Cheers,
> Jörg
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
> http://xircles.codehaus.org/manage_email
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
> http://xircles.codehaus.org/manage_email
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>    http://xircles.codehaus.org/manage_email



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email