Hi again,
 
I've just played with the annotations idea. I have to confess that used in this 
restricted way (only on methods), I'm starting to
like it. 
 
Here is how a sample resource would look like with the refactored API. Note 
that both extension names and full MIME type would be
supported. Extensions can be updated via the MetadataService.
import java.io.InputStream;

import org.restlet.ext.atom.Feed;

import org.restlet.resource.Accepts;

import org.restlet.resource.Removes;

import org.restlet.resource.Representation;

import org.restlet.resource.Represents;

import org.restlet.resource.ServerResource;

import org.restlet.resource.Stores;



public class TestResource extends ServerResource {



    @Represents("atom")

    public Feed getAsAtom() throws Exception {

        // ...

        return null;

    }



    @Represents("application/custom+xml")

    public Representation getAsXml() throws Exception {

        // ...

        return null;

    }



    @Accepts

    public void post(Representation entity) throws Exception {

        // ...

    }



    @Stores("atom")

    public void putAtom(Feed feed) throws Exception {

        // ...

    }



    @Stores("application/custom+xml")

    public void putXml(InputStream stream) throws Exception {

        // ...

    }



    @Removes

    public void delete() throws Exception {

        // ...

    }



}
What is nice is that we would keep the higher-level terminology that we have in 
Restlet 1.1 (accept, store, etc.) but make it
available in a more flexible and declarative way. 
 
The new ServerResource would only have lower-level methods, but with a more 
flexible signature than in Restlet 1.1:

*       void handle()
*       Representation handleGet()
        
*       Representation handleGet(Variant)
*       Representation handleHead()
*       Representation handlePost(Representation)
*       Representation handlePut(Representation)
*       Representation handleDelete()

I think we are getting somewhere this time. Looking forward to your feed-back.
 
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 : Jerome Louvel 
Envoye : vendredi 30 janvier 2009 12:29
A : discuss
Objet : Resource API refactoring (Was: media type adaptor)


Hi Tim,
 
While I'm still not convinced of the advantages of annotations used this way, 
you did put some doubts in my mind :)
 
Also, instead of small enhancements in Restlet 1.2 on this front, waiting for a 
redesign planned in Restlet 2.0, I think we should
aim at a full redesign right now.
 
I've reverted my previous changes to the Resource class in SVN trunk to keep 
all options open, and I have started some specs on the
wiki:
 
"Resource API refactoring"
http://wiki.restlet.org/developers/172-restlet/226-restlet.html
 
You will find a collection of requirements, an analysis and a high-level design 
start. Did I miss any important requirement? Does
anyone has design propositions?
 
Now is time for comment! 
 
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 : tpeie...@gmail.com [mailto:tpeie...@gmail.com] De la part de Tim Peierls
Envoye : mardi 27 janvier 2009 00:25
A : discuss@restlet.tigris.org
Objet : Re: media type adaptor


I have looked at JAX-RS (and I know that it makes heavy use of annotations), 
but this was not about JAX-RS. My comment was
specifically about the proposed use of a method-naming convention to convey 
meta-information in Restlet where it seems to me that an
annotation-based approach would be better.

Don't get me wrong: I very much like the simplicity of Restlet as it is, and I 
am not pushing for greater use of annotations in
general. It's just that this particular feature seems like a mistake as it 
stands.

--tim


On Mon, Jan 26, 2009 at 3:50 PM, Stephan Koops <stephan.ko...@web.de> wrote:


Hi Tim,

I didn't follow the ful discussion, but did you take a look to JAX-RS?

best regards
  Stephan

Tim Peierls schrieb:

>
>     So, if we are back using runtime annotations, there is no
>     particular type safety in play:
>
>         Representation representXml();
>
>     would be as good (and even more compact) as:
>
>        @Variant("xml")
>        Representation toXml();
>
>     or if you want to be more explicit about the mediatype:
>
>        @Variant("text/xml")
>        Representation toXml();
>
>


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

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

Reply via email to