Ok another status update since some people obviously read my postings regarding it (Although I always have the impression no one does from the feedback in the list).

The next commit will happen probably tomorrow, I am working on it.
Two new features are enabled, which are the last two from my side probably which will hit the codebase pre 1.0.

(The Spring part is still pending but that is not my code...
Bernhard... hurry up!)

Whats new, I added a compiler output catching component, so that you can see the compiler errors instantly on your page you are editing.

I added some JSF2 facelet extension code, because the original codebase
did not have an error, but the tag attribute resolution was caching the method and once I replaced the component it caused an class exception because the method which was cached was triggered on an old version of the class while the instance already had a different class.

The solution is to make a Java 7 like InvokeVirtual (which I can simulate in my framework with some introspection code) on the new instance.

I would propose a fix in our codebase in the long run so that I can drop this extension, but for now lets leave it how it is, since I could use an official extension point it was a no brainer.

So far this works only on JSF2, and probably we will have to live with it because I am not sure if I have a similar extension point in the original facelets codebase. I also must say I am not very eager to fix it at all for 1.2.x because it will be legacy soon anyway.

Anyway this now introduces the possibility to write a JSF2 component from start to scratch in java or groovy without a single server restart if you dont have to introduce your own Tag Handler. (I was eating my own dogfood, I implemented the compiler output catching component with ext-scripting, hence I discovered this problem)

Thats it for now, I will do a few videos showing off the latest codebase next week, when I finally have more time again to work on things - opensource.


Werner




Werner Punz schrieb:
Hello everyone

Just a short status update where we are for the list.
I am currently working on changing the Groovy classloading from parse to the same compile mechanism we have in Java. The reason for this is speed gains at server startup, and also we get the extended dependency scanning we already have in java.

Here is what we currently have

http://people.apache.org/~werpu/images/ext-scripting-structure-fine.jpg

Additionally to that we also have now a Facelet extension which can be turned on which allows to load xhtml pages on the fly from your source director instead of the xhtml directory (gotta upate the image)

Additionally to that I added a small Resource Handler for JSF2 which does the same for JSF2 ressources as we do for Facelets.

An early draft of the documentation also can be found in the wiki under
http://wiki.apache.org/myfaces/Extensions/Scripting

So what is left to be done on my side.

For now I am still working on the Groovy compilation instead of using the parse mechanism, to get a better interception point for the bytecode level dependency scanner, I am almost done with it, a commit with a version doing this will happen mid next week. After that I will improve the bean reloading by trying only to reload the dependencies in case of a bean being tainted(currently all dynamic beans are reloaded). This should not be too hard to pull off.

After that Bernhard still wants to merge his Spring stuff in pre Alpha, so I will wait for him in this regard (his university courses of course have higher priority than our project here) and will use the time for bugfixing improving the documentation etc...

At one point after that I want to open the Alpha version vote.
My plan is to get at least the Alpha version out before the JSFDays,
so that we have one version people can start to use for testing and trying out when we will present the stuff first time there.

But as you can see we are very far along and a 1.0 version is nearing rapidly.

Plans after 1.0

It is still undecided which features go in, but there are some ideas:

Additional scripting languages (JRuby, Scala and Jython are high on the list since they provide native compilers)

Portlet support

Changing from a request based trigger for the compiler to an asynchronous compilation as discussed here, this will remove
some internal complexity we have

Internal structural fixes

Mojarra support, ok, this is somewhat low priority on my list, I cannot do it for licensing reasons, otherwise I would gain too much insight into the other implementation which some people in here might not really like. The question is anyway with JSR 292 around the table which might simplify a lot of things which I had to go through major hoops, especially in the classloader area, if they will not roll out something similar in the long run purely based on JSR 292. If not the Mojarra people can feel free to pick up my ideas and code, I always will give a helping hand to port things over post 1.0 :-)

But as I said this is just a handful of ideas floating around and it depends also on my personal time (I have a baby son currently learning walking, so Ext-Scripting is delegated to traveltime and midnight coding) and company time how much I can dedicate time into it, and hence I have to judge by importance and personal time I can dedicate into the project which features will make it in post 1.0.

As for people wanting to test it, you can basically use the current codebase for checking stuff out, (I hope it works, the current status got a few relatively untested fixes in). The next big commit will be next week, with the Groovy recompilation that one will again get a bigger testing time before commit. So if you can wait a handful of days just wait for the next commit on my side. If not feel free (and I hope it works :-) )



Werner



Reply via email to