Thanks, Werner. I appreciate the hard work you do that
keeps Castor improving. I was only stuck on the older
version because of my hacks and Jira issue #1313 not
being worked on, so I had no idea there was a fix in
place.  I will certainly try the latest version with
my mappings changed back to the simpler form that I
thought should work originally, and confirm it is all
working as expected now.

Bryan

--- Werner Guttmann <[EMAIL PROTECTED]> wrote:

> Bryan,
> 
> if you are stuck with Castor 0.9.9, most of the bug
> fixing and/or
> refactoring that has gone into (better) support for
> (nested) maps will
> not be available to you .. :-(. Are you in a
> position to explain briefly
> why you could not switch to e.g. Castor 1.1 or 1.1.1
> ?
> 
> I will have a look at CASTOR-1313 to get an idea
> what this is about ....
> 
> Werner
> 
> Bryan Helm wrote:
> > I had a lot of problems with this, and had to hack
> up
> > my version of Castor to get it to work (so now I
> am
> > stuck on an older version).  For version 0.9.9.1,
> I
> > added my own support following the pattern of the
> > existing support.  I had to implement new MapItem
> > classes for arrays or collections to be values of
> hash
> > maps. I did not submit my changes as a patch
> because I
> > don't think what I did was the right way to
> support
> > this - it was a quick-and-dirty fix.
> > 
> > See CASTOR-1313 for other related Map weaknesses
> when
> > the value is itself multivalued, e.g. a Map, List,
> or
> > array.  If somebody is revamping Map processing,
> it
> > would be nice to keep that in mind as well.
> > 
> > Bryan
> > 
> > --- Christopher Spoehr <[EMAIL PROTECTED]> wrote:
> > 
> >> Hello-
> >>
> >> I'm trying to marshal/unmarshal a HashMap of
> >> HashMaps (eventually it will be a HashMap of HMs,
> >> Vectors, and Arrays, but one step at a time.) The
> >> XML I'll eventually be working with will be given
> to
> >> me as one string - that's why I'm working with
> the
> >> string readers/writers.
> >>
> >> Using the Castor FAQ and the archives, I've
> gotten
> >> Castor to marshal and unmarshal the bean class
> >> holding the HM successfully for a single
> dimensional
> >> HashMap. For the nested HM, Castor marshals
> >> acceptably but gets hung up on the unmarshaling.
> Any
> >> tips would be appreciated. I'd seen in a previous
> >> thread that Stephen Bash has had some experience
> >> with this. Are you still out the Stephen?
> >>
> >> Holder Class:
> >>
> >> public class HashMapHolderBean {
> >>
> >>     private HashMap heldHashMap;
> >>     
> >>     public HashMapHolderBean()
> >>     {
> >>             heldHashMap = new HashMap();
> >>     }
> >>     
> >>     public HashMapHolderBean(HashMap inputHashMap)
> >>     {
> >>             heldHashMap = inputHashMap;
> >>     }
> >>     
> >>     public HashMap getHeldHashMap() {
> >>             return heldHashMap;
> >>     }
> >>
> >>     public void setHeldHashMap(HashMap map) {
> >>             heldHashMap = map;
> >>     }
> >> }
> >>
> >> HashMapHolderBeanMapping.xml:
> >> <?xml version="1.0" encoding="UTF-8"?>
> >> <mapping>
> >>     <class
> >>
> name="com.sbc.cctp.easl.web.artt.HashMapHolderBean"
> >> auto-complete="false">
> >>             <description>Default mapping for class
> >>
> >
>
com.sbc.cctp.easl.web.artt.HashMapHolderBean</description>
> >>             <map-to xml="hash-map-holder-bean" />
> >>             <field name="heldHashMap" collection="map">
> >>                     <bind-xml name="held-hash-map">
> >>                             <class
> >> name="org.exolab.castor.mapping.MapItem">
> >>                                     <field name="key" type="string">
> >>                                             <bind-xml name="key" 
> >> node="element"
> />
> >>                                     </field>
> >>                                     <field name="value"
> >> type="java.lang.Object">
> >>                                             <bind-xml name="value"
> node="element">
> >>                                                     <class
> >> name="org.exolab.castor.mapping.MapItem" />
> >>                                             </bind-xml>
> >>                                     </field>
> >>                             </class>
> >>                     </bind-xml>
> >>             </field>
> >>     </class>
> >> </mapping>
> >>
> >> Marshalling/Unmarshalling code:
> >>     private String testMarshalling()
> >>     {
> >>             HashMap mapHM = new HashMap();
> >>             mapHM.put("test","Hello World.");
> >>             mapHM.put("test2","Hello Universe");
> >>             
> >>             HashMap level2 = new HashMap();
> >>             level2.put("level2_1","I'm level two");
> >>             
> >>             mapHM.put("level2", level2);
> >>             
> >>             HashMapHolderBean hashMapHolder = new
> >> HashMapHolderBean(mapHM);
> >>             StringWriter stringWriter = new
> StringWriter();
> >>             
> >>             try
> >>             {
> >>                     
> >>                     //InputSource mappingSource = new
> InputSource(
> >> new StringReader(generateMapString()));
> >>                     InputSource mappingSource = new
> >>
> >
>
InputSource(ClassLoader.getSystemResource("HashMapHolderBeanMapping.xml").toString());
> >>                     Mapping mapping = new
> >>
> >
>
Mapping(AutomatedRegressionTestTool.class.getClassLoader());
> >>                     mapping.loadMapping(mappingSource);     
> >>                     
> >>                     Marshaller marshaller = new
> >> Marshaller(stringWriter);
> >>                     marshaller.setMapping(mapping);
> >>                     marshaller.marshal(hashMapHolder);
> >>             }
> >>             catch (Exception e)
> >>             {
> >>                     log.error("Marshalling Error",e);
> >>             }
> >>             
> >>             return stringWriter.getBuffer().toString();
> >>     }
> >>     
> >>     private HashMapHolderBean
> testUnMarshalling(String
> >> marshalled)
> >>     {
> >>             String sourceString = marshalled;
> >>             log.info("Marshalled length: " +
> >> marshalled.length());
> >>             log.info("Source length: " +
> >> sourceString.length());
> >>             log.info(sourceString);
> >>             
> >>             HashMapHolderBean hmhb = new
> >> HashMapHolderBean();
> >>             
> >>             try
> >>             {                       
> >>                     InputSource mappingSource = new
> >>
> >
>
InputSource(ClassLoader.getSystemResource("HashMapHolderBeanMapping.xml").toString());
> >>                     Mapping mapping = new
> >>
> >
>
Mapping(AutomatedRegressionTestTool.class.getClassLoader());
> >>                     mapping.loadMapping(mappingSource);
> >>                     
> >>                     Unmarshaller unm = new
> Unmarshaller(mapping);
> 
=== message truncated ===


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

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

    http://xircles.codehaus.org/manage_email

Reply via email to