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