MyFaces goes JSF 2.0

Yesterday morning (German time), Simon Lessard created a JSF 2.0 branch for Apache MyFaces. This is great news, since the MyFaces team is now kinda early in the game. Simon already added new interfaces/APIs, proposed by the last early draft. We also have a bunch of open jira issues on JSF 2.0 in our JIRA.

So, go ahead, do a checkout and provide patches, suggestions or comments ;-)

Since this is EARLY development stage, the branch isn’t something I’d consider to be stable… For discussions, use the developers mailing list and use [JSF 2.0] as prefix of your subject.

Once the spec is kinda final, we should be in a good shape to not be that late, with a (certified) release.

JBoss’ WebBeans and TCK

By accident, I noticed this link on the Seam website. It talks about WebBeans. No, it doesn’t only talk about WebBeans and the relationship to Seam. It does much more… it contains a link to the source code… Not a big deal… But! I am really happy to see that WebBeans is developed under ASL 2.0, by JBoss/Red Hat.

Even better, the page says that the TCK (not yet there) will also be licensed under ASL 2.0. Which is really great news! As far as I know, the only TCK that is ASL 2.0 based is the one from JDO.

Well done, JBoss!

last.fm on my iPod touch

I am really happy, that I could get an iPod Hi-Fi for my home office (no, I bought it myself ;-) ).
With last.fm available for iPhone / iPod, it is really cool to listen to my favorite stations via iPod on that Hi-Fi thing. I love the sound! The software (last.fm for iPod) was a bit buggy in the past. Now, I guess early this week, they released version 1.0.2 and I have to say, it works!

Oh yeah, the last.fm software is for free, but I had to upgrade to the recent iPhone/iPod 2.0 software. Not a big deal at all…

Anyway, last.fm is (for me) much better than traditional radio. Well, for football (I mean soccer…) I still prefer a traditional radio station, if I am not watching it on pay-tv ;-)

Log, log, log

Most common pattern, when doing logging, is currently this:


if(logger.isLEVEL()
logger.LEVEL(.......);

Some could say, that these checks “blow” up the code… But what if the LEVEL(…) call itself would check the “isLEVEL()” ? The code would be a little bit cleaner, isn’t it ?


logger.LEVEL(.......);

Our internal logger does this, and I ran into the pitfall :-) But we still do (sometimes) check for the log_level, before calling logger.LEVEL(), like here:


if(logger.isLEVEL()
{
StringBuffer sb = .....;
....
logger.LEVEL(sb.toString(), theCaughtException);
}

These if statements are made just to avoid unneeded object creation or other more “heavy” tasks.

Issues I filed against JSF 2.0

Some important items, such as ajax or lowering the pain of creating components was already discussed on blog from Ed Burns or other JSF spec members.

I filed some tickets in the past against the JSF Spec (meaning API definition) as well.

Here is my (incomplete) list:

I want more interfaces on javax.faces.component:

https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=322

Why does Unified EL Spec say If A is String: return A. Otherwise, if A is null: return “”.

https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=323

I can understand why they added this guy in UIInput, but IMO this is wrong:
https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=327
(Please no EditableValueHolder2 ;-) )

Autocomplete was introduced on inputText, with the advent of JSF 1.2 (due to the rise of ajax),
but they forgot the html_form component:
https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=418

I am pretty sure some more methods are missing on ExternalContext:
https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=438
In Trinidad we have a ExternalContextUtil, where we add those bits that are missing…

Why not making subforms part of the standard (since jsf 2.0 already contains some new tags):
https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=441

These came up due to bugs, Gabrielle Crawford and I worked on (since our ADF Faces Framework has an optimized JSF lifecycle):

-https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=331

-https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=332

I hope these tickets (and some others) are addressed in the next generation of JSF 2.0 :-)
Some other cool things were already added, as Ryan showed in his blog. I am really looking forward for the JSF.next (and for Servlet 3.0 as well).

More on Servlet 3.0

Something I really want to do is adding a Servlet/Filter to the servlet context on startup or even before processing the http request. There are several reasons why such a dynamic deployment is great. One is for sure using platform specific features… like invoke/use/extend  comet API (with different servlets/filters), see

-Tomcat API

-Jetty API

as only two examples…

The Servlet Spec itself offers some nice Listeners (for e.g. ServletContextListener or ServletRequestListener) but, there is an important feature missing… Something like addFilter() or addServlet() on ServletContext. I did a look at the proposed APIs for Servlet 3.0 and found that these methods are now (well, once the spec is final) available. This is great news. Yes… Jetty is offering such a feature kinda since ever. Regarding the Servlet 3.0 spec I now wonder why they still keep the getServlet(s)(…) methods as deprecated… I guess it now makes sense to check if a Servlet is already deployed (or not)…

Well, anyway I am looking forward to the advent of Servlet 3.0 (and its adoption)!!

New Trinidad release

I did it again… There is now a new release of Apache MyFaces Trinidad available. For JSF 1.1 take the 1.0.9 version and the JSF 1.2 use the 1.2.9 version of Trinidad.

1.0.9 release notes are here.

1.2.9 release notes are here.

If you are using Trinidad it would be great if you add your company / client to this wiki page.

For Feedback, questions or bug reports the Trinidad community is a great resource!