Hey Francesco,

There is one major mistake in your Mapping file:

Castor does not know, which element name the DialPlan object should be 
associated with.

The following mapping works fine for me:

<?xml version="1.0"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
                           "http://castor.org/mapping.dtd";>
<mapping>
    <class name="xml.template.BaseCommand">
        <map-to xml="ccsmp-create" />
        <field name="sessionId" type="java.lang.String">
            <bind-xml name="session" node="attribute" />
        </field>
        <field name="dialplans" type="xml.template.DialPlan" 
collection="arraylist">
            <bind-xml name="DialPlan" />
        </field>
    </class>

    <class name="xml.template.DialPlan">
        <field name="entId" type="java.lang.String">
            <bind-xml name="ent-id" node="attribute" />
        </field>
        <field name="name" type="java.lang.String">
            <bind-xml name="name" node="attribute" />
        </field>
    </class>
</mapping>

The second mistake, I notices is located at the addDialplan method, which 
should be called 'addDialplans(...)'
This is, how I marshalled/unmarshalled the objects:

<code>
XMLContext context = new XMLContext();
Mapping mapping = new Mapping();
mapping.loadMapping(getClass().getResource("mapping.xml").toExternalForm());

this.context.addMapping(mapping);
Unmarshaller unmarshaller = context.createUnmarshaller();
unmarshaller.setClass(BaseCommand.class);

BaseCommand cmd = (BaseCommand) unmarshaller.unmarshal(new 
InputSource(getClass().getResource(SAMPLE_FILE).toExternalForm()));
</code>

You could also add the whole package.
Hope, it helped ;-)

Regards,
Lukas

fmarchioni schrieb:
> 
> Werner Guttmann wrote:
>> You are using one of the static unmarshal methods, which will ignore any
>>  mapping defined by you. Can you please switch to a non-static one, and
>> see whether it works ?
>>
> 
> Hi, thank you very much for your reply. using non-static methods I am able
> to retreive
> the Wrapper object (ccsmp-create) ...but I get an empty DialPlan....
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <ccsmp-create session="8u8989h789h9h8989"> <----This one I can find it
> <DialPlan ent-id="name" name="333"/>             <---- The hidden object is
> not  found !
> </ccsmp-create>
> 
> 
> This is how I coded it:
> 
> public class BaseCommand {
>    String sessionId;
> 
> public String getSessionId() {
>       return sessionId;
> }
> 
> public void setSessionId(String sessionId) {
>       this.sessionId = sessionId;
> }
> 
> public List  dialplans = new ArrayList();
> 
> public void addDialplan(DialPlan dialplan) {
>       dialplans.add(dialplan);
> }
> 
> public List getDialplans() {
>   return dialplans;
> }
> 
> -------------------------------------------------
> 
> public class DialPlan {
>   String entId;
>   String name;
>   // getter and setters here
> }
> 
> ---------------------------------------------->mapping.xml
> 
> <mapping>
> 
> <class name="BaseCommand">
>   <map-to xml="ccsmp-create" />
>     
>   <field name="sessionId" type="java.lang.String">
>      <bind-xml name="session" node="attribute"  />
>   </field>
>   
>   <field name="dialplans" type="DialPlan" collection="collection" />
> </class>
> 
>   
>     <class name="DialPlan">
>               
>     <field name="entId" type="java.lang.String">
>         <bind-xml name="ent-id" node="attribute"  />
>     </field>
>         <field name="name" type="java.lang.String">
>         <bind-xml name="name" node="attribute"  />
>     </field>
>   </class> 
>   
> </mapping>
> 
> 
> ---------------------------------------------------------->data.xml
> <?xml version="1.0" encoding="UTF-8"?>
> <ccsmp-create session="8u8989h789h9h8989">
> <DialPlan ent-id="name" name="333"/>
> </ccsmp-create>
> ------------------------------------------------------------->Client Java
> and I unmarshal it this way:
> 
> Mapping mapping = new Mapping();
> mapping.loadMapping("mapping.xml");
> 
> Unmarshaller un = new Unmarshaller(BaseCommand.class);
> un.setMapping( mapping );
> 
> FileReader in = new FileReader("data.xml");
> BaseCommand plan = (BaseCommand) un.unmarshal(in);
> in.close();
> 
> System.out.println(plan.getSessionId());  // This data is found
> List list = plan.getDialplans();                // No data found !
> 
> --------------------------
> Please help, I'm fighting with this since this morning :-(
> thanks a lot
> francesco


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

    http://xircles.codehaus.org/manage_email


Reply via email to