Hey Jim,
I am not an expert for castor XML, but have you tried something like
public class Foo {
......
public void setBar(Bar bar) {
if (this.bar != bar) {
this.bar = bar;
bar.setFoo(this);
}}
......
}
public class Bar {
.......
public void setFoo(Foo foo) {
if (this.foo != foo) {
this.foo = foo;
foo.setBar(this);
}}
.......
}
MfG
Ralf
----- Original Message -----
From: "Jim Otte" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, February 17, 2004 6:56 AM
Subject: [castor-dev] Obtaining refernceto Parent class-Castor limitation??
>
> Castor Gurus:
>
> I have the following xml to be unmarshalled:
>
> <foo>
> <id>42</id>
> <bar>
> <greeting>hello world</greeting>
> </bar>
> </foo>
>
> into the following classes:
>
>
> public class Foo {
> public Bar bar;
> public String id;
>
> public Bar getBar() {
> return bar;
> }
>
>
> public void setBar(Bar bar) {
> this.bar = bar;
> }
>
>
> public String getId() {
> return id;
> }
>
> public void setId(String id) {
> this.id = id;
> }
>
> }
>
>
> and
>
>
> public class Bar {
>
> public String greeting;
> public Foo foo;
>
>
> public String getGreeting() {
> return greeting;
> }
>
>
> public void setGreeting(String greeting) {
> this.greeting = greeting;
> }
>
>
> public Foo getFoo() {
> return foo;
> }
>
>
> public void setFoo(Foo foo) {
> this.foo = foo;
> }
>
> }
>
> where in Bar I would like a reference to the parent
> class Foo.
> I set up the mapping as such:
>
> <?xml version="1.0"?>
> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Object
> Mapping DTD Version 1.0//EN"
>
> "http://castor.exolab.org/mapping.dtd">
>
> <mapping>
>
> <class name="tudo.foobar.castor.domain.Foo">
> <map-to xml="foo"/>
>
> <field name="id"
> type="java.lang.String">
> <bind-xml name="id"
> node="element"/>
> </field>
>
> <field name="bar"
> type="tudo.foobar.castor.domain.Bar">
> <bind-xml name="bar"
> node="element"/>
> </field>
> </class>
>
> <class name="tudo.foobar.castor.domain.Bar">
> <map-to xml="bar"/>
>
> <field name="greeting"
> type="java.lang.String">
> <bind-xml name="greeting"
> node="element"/>
> </field>
>
> <field name="foo"
> type="tudo.foobar.castor.domain.Foo" >
> <bind-xml name="foo" />
> </field>
> </class>
>
> </mapping>
>
>
> and test it as such:
>
> private void execute(){
> Mapping mapping = new Mapping();
>
> try {
> // 1. Load the mapping information from the file
> mapping.loadMapping( "fooMap.xml" );
>
> // 2. Unmarshal the data
> Unmarshaller unmar = new Unmarshaller(mapping);
> Foo foo = (Foo)unmar.unmarshal(new InputSource(new
> FileReader("FooTest.xml")));
>
> // 3. Do some processing on the data
> System.out.println(foo.getBar().getGreeting());
> System.out.println(foo.getBar().getFoo().getId());
> } catch (Exception e) {
> System.out.println(e);
> return;
> }
> }
>
>
> and the result is:
>
> hello world
> java.lang.NullPointerException
>
> I have tried setting the location attribute to ".."
> but it does not seem to go "backwards". I have also
> tried handlers but can only get the current class- not
> the parent class.
>
> Does anyone know how to get a reference to the parent
> class of which another class is a member- as just
> described????
> I tried many sources but have come up with nothing- is
> this a Castor limitation?????
>
> Thaanks,
>
> Jim
>
>
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! Finance: Get your refund fast by filing online.
> http://taxes.yahoo.com/filing.html
>
> -----------------------------------------------------------
> If you wish to unsubscribe from this mailing, send mail to
> [EMAIL PROTECTED] with a subject of:
> unsubscribe castor-dev
>
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev