Hi all,
 
We have a similar plan in the tube!
 
"Faciliate Resource to Representation mapping"
http://restlet.tigris.org/issues/show_bug.cgi?id=303
 
The idea is to dynamically dispatch the represent(*), acceptRepresentation(*) 
and storeRepresentation(*) to the more specific
versions if available like:
 
    representXml(?) for an XML representation ("xml" being mapped in 
MetadataService like for file extensions)
    representJson(?) for a JSON representation
    ...
 
This would handle the dispatching automatically while still allowing a manual 
dispatching by overriding the generic represent(*)
method when more appropriate (and for backward compatibility).
 
How does it sound?
 
Best regards,
Jerome Louvel
--
Restlet ~ Founder and Lead developer ~  <http://www.restlet.org/> 
http://www.restlet.org
Noelios Technologies ~ Co-founder ~  <http://www.noelios.com/> 
http://www.noelios.com
 


  _____  

De : Cliff Binstock [mailto:cliff.binst...@coyotereporting.com] 
Envoye : mardi 13 janvier 2009 17:43
A : discuss@restlet.tigris.org
Objet : RE: media type adaptor



Taylor,

 

I have implemented a solution like this and I highly recommend it.  I actually 
have taken it one step further and bound the routes
(and the implementation) dynamically:  there is very little Java code, mostly 
just XML-based configuration.  In the cases where
configuration does not make sense, then I have subclasses that provide an 
implementation as your message implies.

 

I can tell you that you will want to pass in the request to the callback:  you 
don't always need it, but sometimes you need some
contextual information (see previous post about wanting the original route URI, 
for example).

 

Cliff Binstock
Coyote Reporting

  _____  

From: Taylor Cowan [mailto:taylor_co...@yahoo.com] 
Sent: Tuesday, January 13, 2009 7:12 AM
To: discuss@restlet.tigris.org
Subject: media type adaptor

 

I'm new to restlets and would like some feedback from the community on some 
experimentation.  Instead of if/else'ing through the
list of variant types and calling the appropriate logic, I'd like reslets to do 
that for me.

The example "MediaType" below is similar to the restlet version, except that 
each enumeration overrides a call back, for example,
the text/html type calls back to handleTextHTML().


    TEXT_HTML("text/html", "HTML document") {
        @Override
        public Representation callBack(VariantHandler arg0) {
            return arg0.handleTextHTML();
        }        
    },

The application developer then extends a resource from BaseResource, and 
implements the methods they'd like to handle.  (like the
AWT MouseEvent adaptors of old) The examples are not complete, I only 
implmented 4 media types.  The BaseResource gets the media
type, converts to the appropriate extended MediaType, and the invokes the 
callback.

    @Override
    public Representation represent(Variant variant) throws ResourceException {
        String mediaType = variant.getMediaType().getName();
        return MediaType.value(mediaType).callBack(this);
    }


So to handle HTML, the developer just does this:

    @Override
    public Representation handleTextHTML() {
       // here's where we respond to HTML clients.
    }



http://restlets.s3.amazonaws.com/VariantHandler.java
http://restlets.s3.amazonaws.com/BaseResource.java
http://restlets.s3.amazonaws.com/MediaType.java

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1024594

Reply via email to