Jörg Schaible <joerg.schaible@...> writes:

> 
> Jörg Schaible wrote:
> 
> > Hi Raj,
> > 
> > Raj wrote:
> > 
> >> Hi
> >> 
> >> Thanks for quick repsonses.
> >> 
> >> I have map below.
> >> 
> >> Map<String,Set<String>> desksDetails = new HashMap<String,
> >> Set<String>>();
> >> 
> >> Map key is "ABC"
> >> and value is Set holding usernames.
> >> 
> >> I want to covert this into xml like
> >> <desk name="ABC">
> >>         <user name="rpaynter"/>
> >>         <user name="yatesn"/>
> >>         <user name="gnishok"/>
> >>         <user name="bingminc"/>
> >>         <user name="nixmar"/>
> >>         <user name="tanyun"/>
> >>         <user name="choo"/>
> >> </desk>
> >> 
> >> I looked into NamedMapConverter but the map here is key,value as 
String.
> >> In my case value is collection.
> >> 
> >> Any pointer will be higly appreciated.
> > 
> > 
> > Did you try:
> > 
> >  new NamedMapConverter(xstream.getMapper(), "desk", "name", 
String.class,
> >    null, HashSet.class, true, false, xstream.getConverterLookup());
> > 
> > That should be written as:
> > 
> >  <map>
> >    <desk name="ABC">
> >       <string>rpaynter</string>
> >       <!-- rest omitted -->
> >    </entry>
> >  </map>
> > 
> > You will have to register an additional NamedCollectionConverter for
> > HashSet in general though to influence the inner set. However, that 
would
> > affect any HashSet in your object graph.
> > 
> > The only alternative is otherwise a gain a custom converter, probably
> > derived from the MapConverter.
> 
> Actually there's a third option by injecting a modified ConverterLookup:
> 
>   new NamedMapConverter(xstream.getMapper(), "desk", "name", String.class,
>     null, HashSet.class, true, false, new ConverterLookup() {
>      <at> Override
>     Converter lookupConverterForClass(Class type) {
>       if (type == HashSet.class) {
>         return new NamedCollectionConverter( ... );
>       } else
>         return xstream.getConverterLookup().lookupConverterForClass(type);
>     }
>   });
> 
> You get the idea ...
> 
> Cheers,
> Jörg
> 
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
> 
>     http://xircles.codehaus.org/manage_email
> 
> 


Hi

Actually i am using the custom converter.

so i am doing something like

public void marshal(Object source, HierarchicalStreamWriter writer,
                        MarshallingContext context) {
MCS mcs = (MCS) source;
//couple of the other customization here
if(mcs.getDesks()!=null)
context.convertAnother(mcs.getDesks(),new DeskCollectionConverter());

}

Now i want my DeskCollectionConverter to extend NamedCollectionConverter.

The 
NamedCollectionConverter constructor parameters are
NamedCollectionConverter(Class type, Mapper mapper, String itemName, Class 
itemType) 

How to pass these parameters ?

I am learning and soon will be perfect with XStream.

Regards
Raj



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

    http://xircles.codehaus.org/manage_email


Reply via email to