Reference Manual for Gracelets - 2.0.0.RC2SourceForge.net Logo
4.1 - Changes : Since Last Version

Changes since 2.0.0.RC2 are listed below [August 27th 2009]

Many things have been improved, fixed and refined. Gracelets now uses SLF4J for its logging facade. Gracelets will now be downloadable as a maven artifact thanks to Sourceforge.NET's recent FRS changes. Mainly stability testing has been done so no real new features should be added till the next 2.1 release.

Changes since 2.0.0-beta 3 are listed below

The core and other projects have moved to a Maven 2 setup. If you want to start building the latest code and you use eclipse this will be a brease. See Get Involved! for more information on the SVN repository setup.
This is somewhat of an overhaul of internals and clean separation between core functionality and implementation specific details. The API and implementation are now separated.

There are also significant changes to web.xml configuration. This should pave the way for more flexibility and there should be very few changes, if any, in the future to Gracelets web.xml configuration. Also there is absolutely no need to specify any settings in the faces-config.xml for Gracelets. Click here for more information on these changes.

Also many bugs have been fixed (thanks in many ways to user feed back) and thus is more stable and getting ever closer to a stable release.

FIX (#2494081): Reloadable Gracelet Component Libraries should now work find in any container.

FIX (#2490073): You should have no more problems with using a custom extension (anything other than .jsf) since all hard-coded areas have been made to determine the current extension being used for exception reporting and the like.

FIX (#2478989): Closure bindings are now working correctly when the using code needs to know the type of the target field.

FIX (#2470067): Gracelet EL Resolver is now working properly.


Changes since 2.0.0-beta are listed below

This is a major overhaul of the gracelets internals. Conversation management, script binding resolving, variable contexts (scopes) have all been abstracted. There is no longer any direct dependancy on JBoss Seam. There is however an optional module now available which will cause the Gracelets system to use the JBoss Seam Scopes (conversation, session, application, etc.,) and components for variable resolution.

One important change is that even when using the optional JBoss Seam extension, all factories defined (see documentation for a clearer explanation) have nothing absolutely to do with JBoss Seam. Whether you use JBoss Seam or not you now have access to the Factory model, making a closure a scoped based factory. These factories are now completely managed by an extensible framework inside Gracelets for allowing closures (and even other types) to be factories.

These changes will make it now possible and relatively easy to integrate with other environments. And Gracelets can actually be used without any other component framework, although it is obvious that Gracelets does not provide as many solutions as, for example, JBoss Seam, so it will most likely be the case to use it with one. But it is not absolutely necesary to do so now.

The entire api has been refined to be extensible and easy to integrate with other environments. Also the JPA extension does not ship with gracelets itself, but is also an optional extension that is available as a separate download. This allows the actual core of Gracelets to be more compact and smaller and not impose solutions that may not be needed for the different environments in which it is used.

Also the tools (like XHTML2Gracelet, Static Content Generator) and such have also been separated from the gracelets core. These tools are available as a separate download, although they will continue to ship with gracelets server.

The wicket extension and library and the metawidget library are now separate component libraries downloadable apart from gracelets core system.

The documentation has been updated to reflect these significant changes and also to explain more clearly how to extend the gracelets core system and to integrate it with another environment.

FEATURE (#2285427): Gracelet Component Libraries can now easily define a renderkit which will automatically be used when using components from the library in which it is defined.

FEATURE (#2226839): As mentioned above, conversation and variable context/scopes have now been abstracted, and gracelets comes with default implementations of said scopes and a simple conversation management implementation.

CHANGE: Gracelets scanner will no longer find modules based off the file "seam.properties", rather you must now put a file called "gracelets.properties" in any jar that you want Gracelets to scan in order to find extensions, libraries, controllers and the like.

Changes since 1.3.0 Milestone 1 are listed below

LICENSE: Gracelets is now offered under the Apache License 2.0 (ASL 2.0) in addition to the LPGL. You can choose which license you wish to be governed by when using Gracelets.

FEATURE (#2292677): Via a control panel in utility view (/gracelet.util/gracelet/control.[jsf extension]) you can force a scan for detecting new controllers/libraries you have added after the web application was deployed.

FEATURE CHANGE (#2226943): The default alias for the Core JSF library will now be the letter "f" instead of "j". "j" will be back supported by default but will be removed in Gracelets 2.0. See feature ID 2226943 comments for more details.

FIX (#2294161): When using the sub pages component of the Gracelet Component Library (alias: "g") and using the link access (subPage=) in the url it will now set the value binding instead of replacing the component value and forcing the link to stick to that sub page.

FIX (#2291998): When a gracelet controll fails initialization for whatever reason it will no longer bomb the web application. You can also use the new re-scan feature to fix/reload such a controller if because of failure it failed full registration.

FIX (#2379089): Gracelet views that are in directories that start with a number will now compile fine.


Changes since 1.3.0 are listed below

LICENSE: Gracelets is now being distributed under the LGPL v3.0.

GENERAL: Many many minor fixes and optimizations have been made.

FIX: The JBoss EJB3 Persistence extension had serious issues with flushing entity changes to the database. This has been fixed.

CHANGE: The Hibernate extension has been removed, since its sort of redundant having the JPA extension. Thus if you want to use hibernate, you need to simply use the JPA implementation of it.

CHANGE: The old debug report page that came up has been replaced by a simplified exception report page (which is now more cross-browser friendly).

NEW: Class files can be used in place of groovy source files. This means you can have precompiled views. Gracelet Utilities can use this to precompile themselves and also they can be placed in their own package that is a sub package of gracelet.util.

CLEANUP: Alot of code has been cleaned up to make it leaner and quicker.


Changes since 1.3.0 RC are listed below

FIX:A bug introduced in 1.2.8 which would cause issues with views having the same filename even though in different directories inside servers like JBoss has been fixed. It would cause strange results since it would inter-mix closure expressions for said views.

NEW:For TagHandlers in Gracelet component libraries, you now have an attribute on the ctx map passed call atthtml, which contains all the attributes that are valid html attributes according to the W3C spec for HTML 4.1.

NEW:You can now inline media content like never before. No need for costly Servlets or session storing, you simply do something like the following example and the link that is created/returned can be used to reference your closure based media content generator:
Toggle Line Numbers
1 xh.img(src: resource.link("image/png") { parentPath."imageFile.png".readBytes(); }) 
As long as you return a byte[] array or an InputStream and specify the content type as the first parameter, you can use this for just about anything (i.e., chart generation, image manipulation, video streaming, etc.,).

UPDATE:The wicket integration is going along well (still no ajax support though), but you can now use facelets/gracelets directly with wicket, in that a gracelet or facelet page/template can be used as the markup for a wicket page. See Integration : Wicket for updates.