Hi Fraser,

if you want to filter the DomRepresentation outside the RFQResource,
you can use the filter as shown in the sample code.
If you want the RFQResource to transform the DomRepresentation before
returning it, you can use directly the TransformRepresentation.

best regards,
Thierry Boileau

On Feb 18, 2008 2:35 PM, Fraser Goffin <[EMAIL PROTECTED]> wrote:
>
> Thierry Boileau <thboileau <at> gmail.com> writes:
>
> >
> > Hello Fraser,
> >
> > Here are some explanations about the Transformer filter with a sample code.
> >
> >         Application application = new Application(component.getContext()) {
> >             @Override
> >             public synchronized Restlet createRoot() {
> >                 Router router = new Router(getContext());
> >                 Representation xsltRepresentation = <your xslt
> > transformation as a StringRepresentation, or FileRepresentation,
> > etc.>;
> >                 Transformer transformer = new
> > Transformer(Transformer.MODE_RESPONSE, xsltRepresentation);
> >                 transformer.setNext(MyResource.class);
> >                 router.attach("/", transformer);
> >                 return router;
> >             }
> >         };
> >
> > As a filter, the Transformer filter applies on hierarchy of Restlet or
> > on a Resource (specified by the setNext() method). According to its
> > mode, (Transformer.MODE_REQUEST, or  Transformer.MODE_RESPONSE), the
> > filter applies an XSLT transformation on representations (conveyed by
> > the request or by the response). In the sample code provided above,
> > all representations returned by MyResource will be transformed with
> > the xsltRepresentation. With the MODE_REQUEST, the transformation
> > applies on all representation conveyed by the request (a POST request
> > for example).
> > Having said that,  I'm not sure to understand clearly your problem.
> > Could you tell us where do you retrieve your XML representations from
> > the eXist database. In the RFQResource#HandleGet method?
> >
> > best regards,
> > Thierry Boileau
> >
>
> > On Feb 17, 2008 4:12 PM, Fraser Goffin <goffinf <at> googlemail.com> wrote:
> > > version : Restlet 1.1
> > >
> > > Hi,
> > >
> > > I am pretty new to Restlet, and, although I have been through the tutorial
> > > examples and searched this forum, I can't find an answer to my question, 
> > > so
> > > perhaps one of you can help me.
> > >
> > > I am retrieving XML instances from an eXist database and before I hand
> them to
> > > the caller I want to transform the representation.
> > >
> > > I thought that I would need to use the Transformer (filter), but I can't
> quite
> > > figure out how to hook it up or what methods I should call, or how to pass
> it
> > > the XML source and stylesheet (I'm a relative Java novice too .
> > >
> > > To-date I have a working implementation which attaches a class which
> extends
> > > Resource for a couple of URL prototypes :-
> > >
> > > router.attach("/quotestore/rfq/{quoteref}", RFQResource.class);
> > > router.attach("/quotestore/rfq", RFQResource.class);
> > >
> > > and in RFQResource I implement handleGet/handlePost/... etc. This all 
> > > works
> > > fine.
> > >
> > > So, can anyone provide me with a simple example of how to introduce my
> > > transformation into this implementation.
> > >
> > > Many Thanks
> > >
> > > Fraser.
> > >
> > >
> > >
> > >
> >
> >
>
> Thanks Thierry I will give this a try.
>
> As far as getting the XML from eXist I do this (as you suspected) in the
> RFQResource.handleGet method (at present using a simple HTTP request - later
> on I might try eXist as embedded), something like this :-
>
>   String resourcePath
> = "http://localhost:8081/exist/rest/db/quotestore/rfq/1000123";;
>
> //               Prepare the request
>   Request request = new Request(Method.GET, resourcePath);
>
> //               Ask to the HTTP client connector to handle the call
>   Client client = new Client(Protocol.HTTP);
>   Response response = client.handle(request);
>
>   if (response.getStatus().isSuccess()) {
>     // Output the response entity as a DomRepresentation
>     domRep = response.getEntityAsDom();
>     ...
>
> Thanks
>
> Fraser.
>
>
>

Reply via email to