Hello,

Thank you for your reply.
I tried to use @XmlSeeAlso annotation as you mentioned but it doesn't work as I 
would like.
I get also a response for my question from Gen Mazza who said there is not a 
way to do that and 
 the only thing going over the wire would be a Person XML object (even if it is 
a subclass of it).

On 6 juin 2012, at 18:39, Daniel Kulp wrote:

> 
> If you add an @XmlSeeAlso annotation that points to the Student class, then 
> JAXB (and thus CXF) can pick up the Student class and it will appear the 
> schema and would properly be transfered on the wire with the appropriate 
> xsi:type attribute.
> 
> You can add it to the Person class (so the Person knows about it's 
> subclasses) or you can add it to the Service class
> 
> @XmlSeeAlso({Student.class})
> public class Service  {
>       public String print(Person p){
>               return p.info();
>       }
> }
> 
> And CXF will pick it up.
> 
> Dan
> 
> 
> 
> 
> On Tuesday, June 05, 2012 08:46:39 AM dallam wrote:
>> Hello,
>> 
>> I have the following simple java Class which I would like to publish as a
>> web service:
>> 
>> --------------------------------------------------------------------------
>> ------------ public class Service  {
>> 
>>      public String print(Person p){
>>              return p.info();
>>      }
>> 
>> }
>> --------------------------------------------------------------------------
>> ------------ I have also two classes, "Person" and its subclass "Student"
>> which define differently the "info()" method:
>> --------------------------------------------------------------------------
>> ---------- public class Person {
>> 
>>      private String name;
>> 
>>      public Person() {
>>              this.name = "diana";
>>      }
>> 
>>      public String info(){
>>              return "this is a person, his name is " + this.name;
>>      }
>> 
>>      public String getName(){
>>              return this.name;
>>      }
>> 
>>      public void setName(String name){
>>              this.name = name;
>>      }
>> }
>> --------------------------------------------------------------------------
>> ---------- public class Student extends Person{
>> 
>> private String school;
>> 
>>      public Student() {
>>                super();
>>              this.school="emn";
>>      }
>> 
>>      public String info(){
>>              return "this is a student, his name is " + this.getName() + " 
>> from 
> the
>> school of " + this.school;
>>      }
>> 
>>      public String getSchool(){
>>              return this.school;
>>      }
>> 
>>      public void setSchool(String school){
>>              this.school = school;
>>      }
>> 
>> }
>> --------------------------------------------------------------------------
>> -------------------------------------------
>> 
>> The problem is by using jaxws, I didn't find the way to build a client
>> which would like to call the print service with a student object. Only
>> "person" objects are accepted.
>> Is there a way to do that in cxf?
>> 
>> The same is for JaxRS by using annotations.
>> For example, if I have the following post method:
>> ---------------------------------------------------------
>> @POST
>>    @Path("/persons/")
>>    public Response addPerson(Person p) {  ... }
>> ---------------------------------------------------------
>> and I annotated the person class with:
>> @XmlRootElement(name = "Person")
>> 
>> and the Student class which extends Person is annotated with:
>> @XmlRootElement(name = "Student")
>> 
>> 
>> I can't send to the post method an XML with a "Student" root element
>> because only "Person" root element is accepted.
>> 
>> Is there an inheritance annotation in cxf to solve this problem? if not,
>> why this issue is not considered
>> in the implementation of the cxf framework?
>> 
>> 
>> Best regards,
>> 
>> Diana
>> 
>> 
>> 
>> --
>> View this message in context:
>> http://cxf.547215.n5.nabble.com/How-the-inheritance-in-java-is-supported-
>> in-SOAP-and-RESTful-services-by-using-cxf-tp5709127.html Sent from the
>> cxf-user mailing list archive at Nabble.com.
> -- 
> Daniel Kulp
> [email protected] - http://dankulp.com/blog
> Talend Community Coder - http://coders.talend.com
> 

Reply via email to