Yeah, true enough. Although the 2 things I never "loved" with rails were resolving multiple action methods with all the different validations and before_ hooks, etc that you only wanted to run for one or two of the methods, and 2) empty active record models. But that's a different discussion :) I'll check out Vertigo and see if I can throw together some sort of hosted code. The problem with throwing plugins out there is I know I don't go near the ones that don't look active, so it's hard for me to expect someone else to.
On Fri, Feb 22, 2008 at 1:17 AM, Jeromy Evans < [EMAIL PROTECTED]> wrote: > Sounds good. If you can, I think you should share it. Host it at > googlecode, add it to the plugin registry and announce it on the users > list. There's plenty of S2 plugins hosted at googlecode, some that have > many downloads. If its popular and useful it'll soon be noticed. That's > how SmartURLs has migrated into the Convention plugin. > > The trouble with conventions, like one method per action vs multiple > methods per action, is that everyone has a different valid opinion. The > developer of the REST plugin chose to follow the conventions of > ruby-on-rails because its proven there. Your approach sounds good too > and I've also encountered the same issues regarding common behaviour for > methods (eg. for example, implement an Index interface and delegate when > appropriate). > > Brian P has also started an application stack including S2, conventions > and JPA on googlecode that's probably worth a look at : > http://code.google.com/p/vertigo-java/ > > I feel anything that increases the productivity of java developers is a > good thing, as is sharing what's been learnt. > > Blake Byrnes wrote: > > Hey Jeremy, > > Thanks for writing back. I was kind of starting to wonder if I wasn't > > supposed to be posting to this list :). > > > > I really like portions of the REST plugin, but I wanted to be able to > > leverage a lot of the interface and class level patterns in Struts (ie, > 1 > > class 1 action), so I ended up rewriting it to support class level > actions > > grouped by package (instead of method level). My packages now have a > > GetAction, ListAction, CreateAction, RemoveAction, and New Action. Once > I > > did that, I got a lot of freedom back to use the implementing patterns > to do > > specific things that should always happen in a list action or a remove > > action. I also built it to support nested namespaces (similar to > > codebehind, but allowing nested resource ids and params as well), and to > > allow an annotation called AutoPopulate to allow JPA retrieval of > objects > > between the Param id interceptor sandwich. I ended up with actions that > > hardly ever need configuration of any sort (inherited way to zero > config). > > > > The REST plugin does handle json and xml responses, but I was finding > that > > it didn't really work so well with hibernate objects. I also was mainly > > concerned with html fragments for Ajax requests and returning those. > You > > can do this in the REST plugin programatically using the HTTPHeaders > result, > > but I wanted something that guessed what I wanted by default, and let me > > override only when I needed to. Essentially, I wanted 1 method per > action, > > default, inherited results, and the ability to override programatically. > > > > So my overall goal was to have really simple actions that could be > reused by > > different content types and by ajax/regular html without much extra > > configuration or redundant request parameters. As far as I could tell > in > > the REST plugin, the http methods against a resource are delegated to > > methods, but there wasn't a distinguished "ajax" handling of results by > > method. > > > > I've sort of rearranged that plugin to what I needed. I'm not even sure > how > > to share back what I've got other than just posting them to a JIRA > ticket or > > a sandbox and letting people take a look. Let me know how/if you are > > interested and I can put them up somewhere. (Maybe this should just go > into > > another big plugin... my mini-framework also supports auto-back on post > and > > a bunch of other things...). > > > > Blake > > > > On Fri, Feb 22, 2008 at 12:18 AM, Jeromy Evans < > > [EMAIL PROTECTED]> wrote: > > > > > >> Blake Byrnes wrote: > >> > >>> I dealt with the ajax result discrepency (ie, if you make an ajax > >>> > >> request, > >> > >>> you generally want a different result, but probably want to share the > >>> > >> same > >> > >>> action) by writing a few things: > >>> 1) A sitemesh filter that ignores requests with the content header > >>> X-Requested-With=XMLHttpRequest > >>> > >>> > >> Nice idea. I'd been differentiating by extension (xhtml for ajax) which > >> has been getting out-of-hand. > >> > >>> 2) An Interceptor and interface for dealing with Ajax requests that > >>> > >> allows > >> > >>> you to specify a different result. The method is called > "beforeResult" > >>> allowing you to change it if necessary. > >>> 3) A way to ask for views: sharing actions creates extreme complexity > if > >>> > >> you > >> > >>> have multiple pages that have different results under different > contexts > >>> (ie, a get on a resource may return a specific html fragment if it is > >>> requested from a list view, which is different from what should happen > >>> > >> if > >> > >>> it's requested from a regular "get" view on the resource). > >>> > >>> > >> The REST plugin deals with similar issues through the RestActionMapper, > >> RestActionInvocation and ContentTypeHandler. > >> The first two for invoking the appropriate method and selecting a view > >> and the latter for handling other result types for the same action > (xml, > >> json etc). > >> I think the REST plugin takes an excellent approach to this problem but > >> you may be able to apply some lessons learnt to them as well. > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > >> > > > > > > ------------------------------------------------------------------------ > > > > No virus found in this incoming message. > > Checked by AVG Free Edition. > > Version: 7.5.516 / Virus Database: 269.20.9/1292 - Release Date: > 21/02/2008 4:09 PM > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >