Hi guys,

I’ve committed a working version on a platform branch:
https://github.com/xwiki/xwiki-platform/commit/dbd746233254

This commit implements 3 JIRA issues:
- XWIKI-10024: Introduce ResourceAction in Resource API to represent an action
- XWIKI-4713: New Action module
- XWIKI-9375: Add integration for WebJars 

Once you have an XE using those changes you can build and install with EM the 
AngularJS Todo Application committed here and it’ll work magically:
https://github.com/xwiki-contrib/application-angular-todo

Let me know if you’re ok for me to commit my work on master for 6.0M1.

Thanks
-Vincent

On 6 Feb 2014 at 10:10:01, [email protected] 
([email protected](mailto:[email protected])) wrote:

> Hi Caleb/all,
>  
> On 6 Feb 2014 at 01:24:38, Caleb James DeLisle 
> ([email protected](mailto:[email protected])) wrote:
>  
> > I'm glad to see this moving again.
> > For those who weren't watching before, the story of actions was
> > that they were partially developed and we wanted smooth pluggable
> > support for portlet and servlet without losing any features of
> > either. I could not find a way to implement this and development
> > stalled.
> >
> > q1: Is portlet support still a requirement and if so, what is the
> > balance we want to strike between features which don't work for one
> > of the two paradigms or features which are missing completely to
> > keep the actions portable?
>  
> It’s never been a requirement of the action module itself. However, and maybe 
> this is what you mean, some Action implementations will be dependent on the 
> environment (to write to the servlet output stream for example). Said 
> differently:
> * xwiki-platform-action is a standalone module with just a dependency on 
> xwiki-platform-resource
> * the Action implementation components will be scattered in the various 
> modules that require them
> ** Right now all old type Actions are in oldcore so we'll need to decide if 
> we continue putting the new ones there or elsewhere).
> ** I’ll use a new action to add support for webjars (a “webjars” action) 
> which will be located in the new xwiki-platform-webjars module I’m working on.
>  
> Right now, my first step is to have the action framework committed and a 
> first action done in webjars.
>  
> A second step will be to try rewriting an existing XWikiAction to the new 
> framework. This is where we’ll start having the debate of whether to go 
> through the Container module or not and the consequences… :)
>  
> Does that sound alright to you?
>  
> > q2: What is the relationship between an action and a REST request?
> > I can imagine in an ideal world that skin/html could actually just
> > be a form in which a rest response would be transported.
>  
> Actions are independent of URLs. The way I’ve designed it so far is:
>  
> URL comes in —> ResourceFactory generates a Resource our of it —> 
> ActionManager finds the right Action to execute it.
>  
> Technically the ResourceFactory is just an interface and the ResourceFactory 
> implementation that accepts a URL and generates a Resource is located in the 
> xwiki-platform-url module, itself delegating to xwiki-platform-url-standard 
> which implements the “standard” URL scheme (and it’s possible to implement 
> other URL schemes and the scheme used is configurable in xwiki.properties).
>  
> I’ll need to do a nice diagram for all this to make it simpler to read and 
> post it on xwiki.org ;)
>  
> Thus, from the Action module POV, it can handle any type of Resource, be them 
> REST, Entity, Skin resources, Template resources, etc. It’s up to the URL 
> module to know how to generate a Resource object from all URLs.
>  
> > q3: Will this go through a period as an installable extension
> > before it lands in XE? To me this is a big deal because we need to
> > really start walking the walk regarding slick'n'slim and moving
> > things out of XWiki's "core”.
>  
> Well, right now we have the Struts Servlet and all our mappings in web.xml go 
> through it. I’d rather not invent a new mapping and have to change all the 
> URL parsing code. ATM having a new servlet would be the only way I know of 
> making it independent. However there are 2 additional issues:
> - issue 1: we need servlet 3.0 first to be able to install new Servlet just 
> by dropping a JAR in WEB-INF/lib
> - issue 2 (the most important one): servlet 3.0 are not dynamic so they 
> wouldn’t be able to be installed as XWiki extensions.
>  
> Thus the best answer is still to have a single XWiki Servlet and from then 
> on, only use XWiki components which makes everything else installable from EM.
>  
> I need to research it a bit more but maybe what we could do is this:
> - introduce a new servlet and make the current mapping go through it (instead 
> of the struts servlet)
> - handle new actions in this new servlet
> - whenever an action hasn’t been handled, forward to the struts servlet
>  
> I need to try this out.
>  
> > q4: Where do we want to draw the line between simplicity and
> > flexibility? When Servlets were devised flexibility was very popular
> > but today you see frameworks advertising their most simple interfaces
> > with "get started today" and tiny code snippets [1] [2].
> > Stated otherwise: do filters actually make sense at this point?
> > Personally I'd YAGNI the filters and shoot for simple.
>  
> Simple is Servlets for me. This is what everybody knows in the Java world and 
> can deploy to. It would do a lot of harm to not provide it IMO. Regarding 
> node.js I don’t see how we would run our Java code in it ;)
>  
> Servlet is really the simplest of the Java EE specs. I don’t feel that they 
> are too heavyweight. In any case, if in the future another technology arises 
> in the Java world we could easily switch if we make sure to go through our 
> Container code...
>  
> > These questions are food for thought but in general, I want to do
> > whatever I can to sign off on this because I don't want to paint
> > the bikeshed here, especially when I'm not writing the actual code.
>  
> Yep, let me push a first impl in a branch and we can talk more about the 
> details. I’m keen to ensure that my first design covers the maximum of use 
> cases and I’ll need your help to verify this!
>  
> Thanks Caleb
> -Vincent
>  
> > Thanks,
> > Caleb
> >
> >
> > [1] http://www.sinatrarb.com/
> > [2] http://nodejs.org/#column1
> >
> >
> >
> >
> > On 02/04/2014 09:11 AM, [email protected] wrote:
> > > Hi devs,
> > >
> > > I’m currently revisiting the action module, see 
> > > http://design.xwiki.org/xwiki/bin/view/Design/ActionModule
> > >
> > > Let me know what you think and if you have any other idea. I’m going to 
> > > continue exploring this over the coming couple of days and write a first 
> > > implementation that I’ll put in a branch in platform. Of course the 
> > > earlier you can provide feedback the less I’ll have to rewrite ;)
> > >
> > > Context: I’m ready to commit support for webjars (see 
> > > http://jira.xwiki.org/browse/XWIKI-9375) but I’d like to do it cleanly 
> > > without implementing it as a Servlet Filter or as an oldcore XWikiAction…
> > >
> > > Thanks!
> > > -Vincent
>  

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to