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