Sorry for sending again, I thought the pseudo code was a little garbled in the 
last message...

-----Original Message-----
From: Tim Clotworthy 
Sent: Tuesday, February 08, 2011 10:50 AM
To: 'users@cxf.apache.org'
Subject: RE: Serialize Custom Class with CXF via Reflection (or similar)

Thanks so much for the response. Maybe I should describe it from the 
perspective of a library user. Currently, the user is given a library that, 
given a particular consumer request, is returned a fixed-formatted response (in 
the form of some flavor of streamed XML-based structure). It is a fixed format 
in that the WS is only using the output format(s) (from the finite number of 
java output classes in the library) it knows how to serialize as part of a 
response.

This is too limited. I want to give the user the opportunity to do the 
following:
Class MyCustomProcessor implements CustomProcessor , where the interface 
contains 2 method definitions:

public void processInputMessage(String msg); /* the msg is provided to the user 
in a structure they are inherently familiar with, and therefore know how to 
"process". When they are through processing it, they have created some sort of 
structure, presumably as java objects (captured in MyCustomOutputObject after 
processing) */

public CustomOutputObject getProcessedMessage();/* the returned object 
(probably nested classes, but whatever) gets embedded in the response returned 
by the JAXRS method/subresource. Here though, the structure of the 
CustomOutputObject is unknown to the library at runtime. */


So, then user's custom processor might look like:

Class MyCustomProcessor implements CustomerProcessor {

private MyCustomOutputObject so; /* the returned custom output objects */

public void processInputMessage(String msg){
//TODO process message
} 

public CustomOutputObject getProcessedMessage() {
//TODO return custom object
}

}

My ideas were:

1) have CustomOutputObject be an abstract class (part of the library) that the 
user must extend (MyCustomOutputObject extends CustomOutputObject ) for their 
custom output classes. I was hoping to figure out a way via 
reflection/introspection or anything convenient,  to have the library assemble 
those custom output classes at runtime in way that JAXRS/JAXB (whatever) can 
figure out how to serialize as part of the response. I made progress on the 
above except that the WS apparently didn't know what to do with the 
MyCustomOutputObject (it was missing in the response).

2) rather than:

public CustomOutputObject getProcessedMessage(); 

, have a simpler

public String getProcessedMessage();

Here, the library just has to embed the String blindly in the response. I must 
say, I don't know how to do this in JAXRS, and would need to (i.e. how do you 
take a java container that the JAXRS/JAXB knows how to serialize a priori as 
XML and embed the XML string in it? -> if this was a conventional servlet, I 
would know what to do!).

So, I would like to be able to do 1) ( because some day would like to do all 
this outside a web environment with EJBs, etc.), but doing 2) would be FINE for 
now..

Too much information? Thanks for any response!



-----Original Message-----
From: Sergey Beryozkin [mailto:sberyoz...@gmail.com] 
Sent: Tuesday, February 08, 2011 5:13 AM
To: users@cxf.apache.org
Subject: Re: Serialize Custom Class with CXF via Reflection (or similar)

Hi

On Tue, Feb 8, 2011 at 2:40 AM, Tim Clotworthy <
tclotwor...@integratedsecure.com> wrote:

> Hello,
> I am involved with a project now where we are trying to provide a (JAX-RS)
> web services library that allows implementers to write their own classes for
> customizing the format of a web service response.
>
> I am trying to do something like the following:
>
> LibraryContainerClass
>
>   |
>   --- ContainedUserClass
>
> where the JAX-RS - based webservices library can serialize the contained
> user class (i.e. ContainedUserClass) without explicitly knowing its
> structure.
>
> Is LibraryContainerClass mapped to a JAX-RS root resource class which
returns ContainedUserClass instances on demand ?


> Not sure whether this would be a CXF-specific (Aegis?) capability, or a
> more general xml-tool (Aegis/jaxb/dom) capability but, as an example, is
> there some way to have the CXF capability use reflection to derive the
> structure needed by JAX-RS to serialize the output?
>
>
Usually, a custom JAX-RS MessageBodyWriter can serialize the data as needed.
CXF JAX-RS has JAXB and Aegis providers. The question is whether you'd like
to have a custom provider which can control the format of the output or not.
JAXBProvider can be customized a lot...


> I tried having an abstract class that the library user's output class must
> extend, but it didn't work.
>
>
Can you provide more info please ?

Cheers, Sergey


> Any response is appreciated (including even perhaps directing me to someone
> or something else). Thanks for any reply!
>

Reply via email to