-----Original Message----- From: Alexander Klimetschek [mailto:[email protected]] Sent: Friday, November 16, 2012 5:28 AM To: [email protected] Subject: Re: Adding dependencies
On 14.11.2012, at 19:06, Dan Klco <[email protected]> wrote: > > create a framework in Sling allow defining resource based servlets via > > annotating methods > That would break Sling's RESTful mantra "addresses resources, not scripts". > Servlets are scripts and do not define > resources - this is done through the > resource API as the first step in request handling, before the servlet is > selected based on the resource type. I think I may have not been clear. I am no proposing addressing scripts, but just simplifying the process of creating servlets. So you'd have a set of annotations which would be more specific to creating servlets than the current general-purpose annotations. Ideally, it would be very neat to see annotations which could be used on methods within a class similar to how you can do so in Spring: @Component(label = "Very Important Servlet", name = "com.me.SomeServlet") @Service(value = { Servlet.class }) @Properties({ @Property(name = "service.vendor", value = "My Company"), @Property(name = "service.description", value = "Servlet for serving resources") }) public class SomeServlet { @RequestMapping(resourceType = "app/components/type", extension="json", method = RequestMethod.POST) public void postData(HttpServletRequest request, HttpServletResponse response) { } @RequestMapping(resourceType = " app/components/type ", extension="json", method = RequestMethod.GET) public void getData(HttpServletRequest request, HttpServletResponse response) { } @RequestMapping(resourcePath="/bin/servlet") public void getAllData(HttpServletRequest request, HttpServletResponse response) { } } But honestly, even being able to have some more servlet specific annotations which would be error checked would be a help. Something more like: @Component(label = "Very Important Servlet", name = "com.me.SomeServlet") @Servlet(resourceType = "app/components/type", extension="json", method = RequestMethod.POST) @Properties({ @Property(name = "service.vendor", value = "My Company"), @Property(name = "service.description", value = "Servlet for serving resources") }) public class SomeServlet extends SlingAllMethodsServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) { } public void doPost(HttpServletRequest request, HttpServletResponse response) { } } > > and add support serializing responses > What do you think is missing here? > > and loading parameters from the request. > Same question here. You can have a service or helper that you use from within > your servlets to read parameters > the way you want. To generalize, you could have an abstract base servlet that > does that for you. > In general, it's not a good idea when web frameworks try to completely > abstract away the protocol (HTTP & REST-> style). Fair enough on both points, I do love the convenience, but yeah it does come with a cost in complexity. > Cheers, > Alex ----- No virus found in this message. Checked by AVG - www.avg.com Version: 2013.0.2793 / Virus Database: 2629/5896 - Release Date: 11/15/12
