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