[ 
https://issues.apache.org/jira/browse/CXF-3722?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13290577#comment-13290577
 ] 

Greg Holmberg commented on CXF-3722:
------------------------------------

I tried to do something similar with JAX-RS and JAXB.  I found myself writing 
the same CRUD service code (create, get/query, update, delete) over and over 
again, for one POJO and then another.  The code was nearly identical in each 
case.  I thought, what a waste of time--I should write a generic CRUD service, 
and then instantiate it for each POJO.  For example:

@XmlType
public interface NamedObject {
    @XmlAttribute
    public String getName();
}

abstract class NamedObjectService<NamedObjectType extends NamedObject> {
    @PUT
    @Consumes("application/xml")
    public Response create(NamedObjectType object) { ... }
}

@XmlRootElement
public class MyPOJO implements NamedObject { ... }

@Path("/myservice")
public class MyService extends NamedObjectService<MyPOJO> { ... }


I wrote a proxy-based client (i.e. using the magic CGLib), and when I called 
MyService.create(), I got this exception:

Caused by: org.apache.cxf.jaxrs.client.ClientWebApplicationException: .No 
message body writer has been found for class : interface com.blah.NamedObject, 
ContentType : application/xml;charset=utf-8.
        at 
org.apache.cxf.jaxrs.client.AbstractClient.reportMessageHandlerProblem(AbstractClient.java:611)
        at 
org.apache.cxf.jaxrs.client.AbstractClient.writeBody(AbstractClient.java:409)
        at 
org.apache.cxf.jaxrs.client.ClientProxyImpl$BodyWriter.handleMessage(ClientProxyImpl.java:640)

So it didn't find the JAXB code to marshall MyPOJO.

It's a shame.  It would save me so much time if I didn't have to copy and paste 
this code for each CRUD service.

I don't know if this is an issue for JAX-RS or for JAXB, but would it be 
possible to support this in CXF?

Thanks,

Greg
                
> Generic interface and Implementation
> ------------------------------------
>
>                 Key: CXF-3722
>                 URL: https://issues.apache.org/jira/browse/CXF-3722
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 2.2
>         Environment: CXF 2.2.6
> JAVA 6 
> Windows XP
> Tomcat 6 
> Code First
>            Reporter: Deboschère Tony
>            Assignee: Daniel Kulp
>            Priority: Minor
>             Fix For: Invalid
>
>
> I ve createad a Generic interface, let say IGenericInterface<TYPE extends 
> MyAbstracTypeOne, TYPE2 extends MyAbstractTypeTwo>
> In this interface  are some méthode like : 
> public TYPE getTypeFromType2(TYPE2);
> In another interface I extends IGenericInterface
> and add some specific methods 
> ex : 
> @WebService
> ISpecificInterface extends IgenericInterface<MySubTypeOne, MySubTypeTwo> {
> @WebMethod
> public MySubTypeOne getTest();
> }
> When I implement ISpecificInterface in an implementation class, then add the 
> @Webservice @WebResult and other @WebParam  and launch my server 
> I do see a web service with two methods in the wsdl
> getTest and getTypeFromType2.
> But the second method returns xml corresponding to the abstractType 
> MyAbstracTypeOne and not MySubTypeOne
> PS : I launch the webservice serverside via : 
> Object webServiceImpl = webServiceClass.newInstance();
> Endpoint endpoint = Endpoint.create(webServiceImpl);
> endpoint.publish("/" + name);

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to