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