StripesFramework / stripes

Stripes is a Java framework with the goal of making Servlet/JSP based web development in Java as easy, intuitive and straight-forward as it should be. It's stripey and it doesn't suck.
http://www.stripesframework.org/
171 stars 73 forks source link

Better REST support #69

Open iluvtr opened 7 years ago

iluvtr commented 7 years ago

Hi Stripes, here I make so suggestions in order to give a better REST support.

REST support uses naming patterns which is discouraged because typographical errors may result in silent failures and other points described by Bloch (http://jtechies.blogspot.pe/2012/07/item-35-prefer-annotations-to-naming.html). Now we have annotations. Look at JUnit, they are no more using naming patterns to test classes, they have @Test. Naming patterns seems like we're back in Java 1.4. Please let's use @POST, @GET, @DELETE,etc. Right now the annotations just doesn't work. These annotations should work even if the ActionBean is not marked with the RestActionBean annotation.

REST support by default, and with no chance for further customization, packages up all the validation errors in a defined way. It will be better if we leave the developer free to change it respecting ValidationErrorHandler. Look line 447 of DispatcherHelper.

REST support doesn't have an expressive way to return headers or error codes. It will be nice if we create a base class called HttpResolution where we can set headers, error codes, check ResponseEntity of Spring MVC or DefaultHttpHeaders of Struts2.

The new class JsonResolution is tightly coupled with Jackson because JsonBuilder uses Jackson directly. What if need Gson? We need a JsonBuilderFactory there.

The parsing of JSON body is tightly coupled with Jackson. I developed in my fork a pluggable content type request wrapper and a Gson implementation.

Thank you so much. I'm open to code these features.