Hi,
As has probably been discussed numerous times on this list, XSPs are deprecated (or at least perceived to be, I won't get into the philosophical discussion ) and flowscript + JXTemplates are the new deal. As I (as well as others) have said in the past, I don't think that this is an adequate solution. In a previous email, I stated three issues that I think stop the flowscript + JXTemplate from adequately replacing XSPs. I will repeat them here:

1. It leads to an explosion in pipelines. Instead of one pipeline, you now have 2 (at least) instead of the one you get with XSPs. 2. There is so much that isn't easily ported to a JXTemplates + flowscript environment. For example, there is no analogy to xsp:element. 3. No analogous functionality to the esql logicsheet. You basically have to create your own and for simple queries, this can quickly become a hassle.

I will add one more issue:

4. No replacement for xsp-action.

I have fixed the issue of there being no jx:element (though, I suspect there are other things that XSPs give that Flowscript + JXtemplates do not give us), and I am not going to even try to tackle issue (3). However, I would like to take a stab at issue (4) and propose a solution for issue (1).

Firstly, the replacement for xsp-action. I was thinking about a Javascript Action. The basic idea is that you pass in as the src a javascript file. This javascript file will contain a code that returns an object, this object contains a set of variables that the action then makes available to the sitemap (similar to flow attributes). I think the basic idea is sound. I am thinking some of the code that is available in the forms block [1] could be employed here. I am not too sure how you stop people from doing silly things (such as allowing people to define objects and functions rather than primitives) but I suspect that flowscript deals with this issue.

Now that I bought up Flowscript, I guess I should answer why I feel Flowscript does not replace XSP-action. In my case, I have an XSP action that checks the database for a particular record. If this record exists, it gets a column, which contains a directory for a set of XSLT, this location is then used to select a particular XSLT for a transformation. This action is used everywhere, the idea of replicating this functionality in Flowscript sounds very messy. Also, I don't believe Cocoon makes for a great Java framework and I believe that your average user shouldn't have to know the gory details of Cocoon to do simple things.

Please tell me if all of this sounds naive.

I will leave up to a vote as to whether this change should go through. If we have a majority, I am happy to work on this action if someone is willing to give me some guidance.

As for (1), I will reiterate what I said in a previous email[2]:

I was wondering if anyone has thought of creating an extension to JXTemplates to support a new style of template. One where you can specify a javascript/Java/Ruby/whatever at the top and the presentation after that. For example, something like this:

<Template>
<Flow>
  <Javascript>
    return({content : "123"});
  </Javascript>
 </Flow>
 <Presentation>
   <some_content>
     <jx:out value="${content}"/>
   </some_content>
 </Presentation>
</Template>

This would return:

<some_content>123</some_content>

Is this possible? In some cases, I think this will be a neat solution as you still have a clear separation between logic and presentation, but you don't need to open three separate files to see what is going on. Also, I don't see this as a replacement for flowscript, just another tool in the toolbox that is Cocoon.

Considering the lack of a response to this functionality, I suspect that it isn't doable or it is viewed as undesirable. If it is either of these, can I please get an explanation? I suspect is a fairly big task and it is probably something (at this point in time) I am not capable of doing. That said, if no one has an objection to the functionality and I can get some guidance, I am happy to look at implementing it.

Cheers,

Kamal.

[1]http://svn.apache.org/repos/asf/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/util/JavaScriptHelper.java
[2]http://www.mail-archive.com/dev@cocoon.apache.org/msg56455.html

Reply via email to