Hi Erik,
It works fine if you comment out the first 4 lines of your testParent
method as such:
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() + "]");
}
}
--Keith
[EMAIL PROTECTED] wrote:
>
> 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
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev