I figured out why the unmarshalling wasn't working. I was using this to
unmarshal...

unmarshaller.unmarshal( c, new StringReader( source ) 

Which is the static call which basically uses interpolation to figure out
how to unmarshal. When I took out the class type (non-static call) it
starting working.





darrickc wrote:
> 
> Using version 1.2
> 
> I am getting the UserRightsMessage object back from the unmarshal, but the
> userRights map of maps is empty... Here is my class and mapping file.
> 
> Note: UserPartitionRights is just a class with 3 booleans and appropriate
> getters/setters. 
> 
> 
>  public class UserRightsMessage extends Message
>     {
>             private Map<String, Map<String, UserRights>> usersRights;
>            
>             public UserRightsMessage()
>             {
>                     usersRights = new HashMap<String, Map<String,
> UserRights>>();
>             }
>            
>             public void setUsersRights(Map<String, Map<String,
> UserPartitionRights>> newUserRights)
>             {
>                     usersRights = newUserRights;
>             }
>            
>             public Map<String, Map<String, UserPartitionRights>>
> getUsersRights()
>             {
>                     return usersRights;
>             }
>     }
> 
> And my mapping xml file looks like this:
> 
>  <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
>                          "http://castor.org/mapping.dtd";>
> 
> <mapping>
> <class name="UserRightsMessage" auto-complete="true">
>       <field name="usersRights" collection="map">
>               <bind-xml name="usersRights">
>                       <class name="org.exolab.castor.mapping.MapItem">
>                               <field name="key" type="java.lang.String">
>                                       <bind-xml name="string1" 
> node="attribute"/>
>                               </field>
>                               <field name="value" collection="map">
>                                       <bind-xml name="nested">
>                                               <class 
> name="org.exolab.castor.mapping.MapItem">
>                                                       <field name="key" 
> type="java.lang.String">
>                                                               <bind-xml 
> name="PartitionName"/>
>                                                       </field>
>                                                       <field name="value" 
> type="UserPartitionRights">
>                                                               <bind-xml 
> name="UserPartitionRights"/>
>                                                       </field>
>                                               </class>
>                                       </bind-xml>
>                               </field>
>                       </class>
>               </bind-xml>
>       </field>
> </class>
> </mapping>
> 
> When I marshal the object I get (what looks to me to be) a proper XML
> representation of the class:
> 
> <UserRightsMessage>
>    <usersRights string1="user">
>      <nested>
>         <PartitionName>Partition A</PartitionName>
>             <UserPartitionRights change-status="true" see-status="true"
> change-sets="true"/>
>       </nested>
>    </usersRights>
> </UserRightsMessage>
> 
> But when I call unmarshal on this the HashMap within UserRightsMessage is
> empty. Here is how I'm creating my marshal and unmarshal objects:
> 
> mapping = new Mapping();
> mapping.loadMapping( filename );
> XMLContext context = new XMLContext();
> context.addMapping( mapping );
> 
> unmarshaller = context.createUnmarshaller();
> marshaller = context.createMarshaller();
> 

-- 
View this message in context: 
http://www.nabble.com/Map-of-Maps-marshals-but-fails-to-unmarshal-tp21613747p21630776.html
Sent from the Castor - User mailing list archive at Nabble.com.


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

    http://xircles.codehaus.org/manage_email


Reply via email to