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