Yeah, I noticed the warning about it on the Castor Reference guide after the
fact :).

Thanks Werner, and great job!



Werner Guttmann wrote:
> 
> Great. That's unfortunately a frequent error with the usage of Castor XML.
> 
> Regards
> Werner
> 
> darrickc wrote:
>> 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();
>>>
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
> 
>     http://xircles.codehaus.org/manage_email
> 
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Map-of-Maps-marshals-but-fails-to-unmarshal-tp21613747p21666712.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