I seems to have different result when i map an object-to-xml using an object instance
as compared to that of an interface.
The scenario is as such:
I have a Person class which implements an interface PersonIntf and when this object is
mapped into xml using the Person instance, i have the following result
<person age="21" name="John Smith">
<address street1="Street1" postalcode="12345"/>
</person>
but when i used the same Person object instance but now using the PersonIntf via the
XMLInspector.setClassNormalizer() i have the following result - the <address> element
info are all missing
<person age="21" name="John Smith">
<address street1="" postalcode=""/> <!-- street1 & postalcode not being mapped
-->
</person>
Did i missed something here? I suspect that the XMLIntrospector did not include the
super interface of PersonIntf => AddressIntf, am i right?
I have all my classes listed below, i am using the nightly build downloaded last night.
Any help will be greatly appreciated. Thanks in advance
===Address Interface Class ===
public interface AddressIntf {
public String getStreet1();
public int getPostalcode();
public void setStreet1(String st);
public void setPostalcode(int pc);
//convenience method
public void setAddress(String st, int pc);
}
===Person Interface Class===
public interface PersonIntf extends AddressIntf{
public String getName();
public int getAge();
public void setName(String name);
public void setAge(int age);
//derive attr
public AddressIntf getAddress();
}
===Person Class===
public class Person implements PersonIntf {
private String name;
private int age;
private Address address;
public Person() {address = new Address();}
public Person(String name, int age) {
this(name, age, null, 0);
}
public Person(String name, int age, String street1, int postalcode){
this.name = name;
this.age = age;
this.address = new Address(street1, postalcode);
}
public String getName() { return name;}
public void setName(String name) {this.name = name;}
public int getAge() {return age;}
public void setAge(int age) {this.age = age;}
public AddressIntf getAddress() {return address;}
public void setAddress(Address address) {this.address=address;}
public void setAddress(String st, int pc) {address.setAddress(st, pc);}
public String getStreet1(){ return address.getStreet1();}
public void setStreet1(String st){ address.setStreet1(st);}
public int getPostalcode(){ return address.getPostalcode();}
public void setPostalcode(int pc){address.setPostalcode(pc);}
public String toString() {return "PersonBean[name='" + name + "',age='" + age + ",
address[" + address +"']";}
private class Address implements AddressIntf {
private String street1;
private int postalcode;
/** Creates a new instance of Name */
public Address() {}
public Address(String street1, int postalcode){
this.street1=street1;
this.postalcode=postalcode;
}
public String getStreet1() {return street1;}
public void setStreet1(String street1) {this.street1 = street1;}
public int getPostalcode() {return postalcode;}
public void setPostalcode(int postalcode) {this.postalcode = postalcode;}
public void setAddress(String street1, int postalcode){
this.street1=street1;
this.postalcode=postalcode;
}
public String toString(){return "street1="+street1+", postalcode="+postalcode;}
}
}
__________________________________________________________________
New! Unlimited Netscape Internet Service.
Only $9.95 a month -- Sign up today at http://isp.netscape.com/register
Act now to get a personalized email address!
Netscape. Just the Net You Need.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]