Hi Caleb/all,

On 6 Feb 2014 at 01:24:38, Caleb James DeLisle 
(c...@hyperboria.ca(mailto:c...@hyperboria.ca)) 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, vinc...@massol.net 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
devs@xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to