On the lastest cut of CVS, I'm trying to marshal/unmarshal a map, like in this post:
http://www.mail-archive.com/[email protected]/msg06205.html Marshalling works great. When I unmarshall, there is no data in my object. I tried a different approach and had problems there, too. I'll send the results of Approach #2 in a separate email. Thanks in advance for looking at this. ////////// mapping.xml ///////////////////////////////////////// <mapping> <class name="Parent"> <field name="children" type="Child" collection="map" get-name="getChildren" set-name="setChildren"> <bind-xml name="string" node="element"/> </field> </class> <class name="Child" auto-complete="true"> <map-to xml="Child"/> </class> </mapping> //////// Parent.java ///////////////////////////////////////// import java.util.Map; import java.util.HashMap; public class Parent { HashMap _children = new HashMap(); public void addChild(Child c) { _children.put(c.getKey(), c); } public Child getChild(Object key) { return (Child) _children.get(key); } public Map getChildren() { return _children; } public void setChildren(Map m) { _children = (HashMap)m; } } ///////////// Child.java ////////////////////////////////// public class Child { String firstName = null; Object key = null; public Child(){} public String getFirstName() { return firstName; } public void setFirstName(String strName) { firstName = strName; } public void setKey(Object objKey) { key = objKey; } public Object getKey() { return key; } public String toString() { return firstName; } } ///////////// HashTest.java ////////////////////////// import java.util.HashMap; import java.util.Iterator; import java.util.Collection; import java.util.Map; import java.io.StringWriter; import java.io.StringReader; import org.exolab.castor.mapping.Mapping; import org.exolab.castor.mapping.MappingException; import org.exolab.castor.xml.Unmarshaller; import org.exolab.castor.xml.Marshaller; import java.io.IOException; import java.io.FileReader; import java.io.OutputStreamWriter; import org.xml.sax.InputSource; public class HashTest { public static void main(String[] args) { Parent p = new Parent(); Child c = null; c = new Child(); c.setFirstName("Betty"); c.setKey("betty_key"); p.addChild( c); c = new Child(); c.setFirstName("Wilma"); c.setKey("wilma_key"); p.addChild( c ); c = new Child(); c.setFirstName("Fred"); c.setKey("fred_key"); p.addChild( c ); c = new Child(); c.setFirstName("Barney"); c.setKey("barney_key"); p.addChild( c ); testParent(p); Mapping mapping = new Mapping(); try { // 1. Load the mapping information from the file mapping.loadMapping( "mapping.xml" ); StringWriter sw = new StringWriter(); // 4. marshal the data with and print the XML in the console Marshaller marshaller = new Marshaller(sw); marshaller.setMapping(mapping); marshaller.marshal(p); System.out.println("Here is the data [" + sw.toString() + "]"); StringReader sr = new StringReader(sw.toString()); // 2. Unmarshal the data Unmarshaller unmar = new Unmarshaller(mapping); Parent newParent = (Parent)unmar.unmarshal(sr); /////////////////////////////////////////////////////// /////// /////// P R O B L E M /////// System.out.println("PROBLEM: Data didn't get unmarshalled!"); testParent(newParent); } catch (Exception e) { System.out.println(e); } } public static void testParent(Parent p) { Child c = p.getChild("fred_key"); System.out.println("just got first child"); System.out.println(" child: [" + c + "] [" + c.toString() + "]"); System.out.println("key: Fred_key child: [" + p.getChild("fred_key").toString() + "]"); Map kids = p.getChildren(); for(Iterator itr = kids.values().iterator(); itr.hasNext();) { Child kid = (Child)itr.next(); System.out.println("Here is a child [" + kid.toString() + "] key [" + kid.getKey() + "]"); } } } ----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to [EMAIL PROTECTED] with a subject of: unsubscribe castor-dev
