Hi Luiz,

Felipe wrote:

> Good morning everyone,
> 
> I need help on something:
> 
> I'm trying to unmarshall from a huge XML into ValueObjects, but I keep
> getting erros, and I'm trying like crazy to make this work, but it has
> been a little hard. I've been using XStream for years and it always worked
> fine, but now I'm getting slapped in the face.
> 
> This huge ValueObject contains lots of primitive and complex types inside
> it, and it's complex types contains Collections of TreeSet's.
> 
> I've been managed to marshall and unmarshall Collections of ArrayLists
> well, but now with this Collections of TreeSets I just can't make it work.
> 
> Errors I've been getting:
> 
> java.lang.InstantiationError: java.util.Collection
> 
> Things I've tried:
> xStream.addDefaultImplementation(Collection.class,
> MyTypeThatContainsTheCollection);

This does not make sense. Here you've told XStream that it should use a 
MyTypeThatContainsTheCollection anywhere it would normally look out for a 
Collection. Somehow I doubt that MyTypeThatContainsTheCollection *is* a 
Collection at all.

> xStream.addImplicitCollection(MyTypeThatContainsTheCollection, fieldName);

Here you have told XStream that the Collection stored in "fieldName" is 
implicit i.e. all its elements are siblings to any other field of 
MyTypeThatContainsTheCollection.

> xStream.alias("collectionFieldName", ArrayList.class);

You have told XStream now, that it should use the name "collectionFieldName" 
for the type name ArrayList. However, since ArrayList is the default 
implementation of a List and a list's alias is "list", the alias for 
ArrayList is hardly used at all.

> Whats is the thing about XStream and Collections of TreeSet?
> I'm afraid I can't explain well where my problem is, but I do not know
> anymore. I've been trying this work for more than one week, without
> success. What should I know about XStream and Collection/TreeSet. Why I
> can make it work well with Collection of ArrayList?

It depends on the declaration of the field "fieldName" in 
MyTypeThatContainsTheCollection. The default implementation of that 
declaration determines the real type of the deserialized collection.

> I've been researching google exaustively, and I alaways see examples of
> converters, but I just can't figure it out. Should this be the solution
> for my problem? Should I implement a converter?

Well, without knowing your real Java declarations nor the XML, I cannot say 
a lot more. Did you at least use the XStream to serialize your object model? 
Only if that XML output matches the format of the XML you want to read, you 
have at least a chance. Setting up an XStream solely by looking at the input 
is very, very, error-prone any annoying, as you have already learned. Do it 
always the other way round.

Cheers,
Jörg



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

    http://xircles.codehaus.org/manage_email


Reply via email to