Thursday, October 18, 2012

RichFaces 4.2.3.Final Release Announcement

RichFaces

RichFaces 4.2.3.Final has been released. This Final release is a re-tag of the 4.2.3.CR1 release as no blocking issues were found by either our QE team, nor by the community.

The RichFaces 4.2.3.Final release is purely a bug-fix release, with a focus on compatibility between RichFaces and the JBoss Portlet Bridge. I’ll refer you to the RichFaces 4.2.3.CR1 release blog for details of the release, with a special highlight paid to the contributions from the JBoss Portal Bridge team, and contributions from community members.

To try out this release: You can download the distribution directly, or for maven users, increment the RichFaces version in your pom.xml to 4.2.3.Final. For more information on setting up a RichFaces 4 application, refer to our getting started guide.

Release Notes:

To re-cap, the changes in the 4.2.3.Final release compared to the 4.2.2.Final release include:

Bug

  • [RF-10758] – Input fields in popupPanel lose focus
  • [RF-10980] – Impossible to set tabindex of input inside rich:popupPanel
  • [RF-11051] – a4j.version does not work
  • [RF-11104] – rich:inputNumberSlider slider position is affected by css position attribute of containing element
  • [RF-12113] – rich:inputNumberSpinner minValue and maxValue being ignored after second request
  • [RF-12114] – Richfaces 4.2 rich:autocomplete don't fire ajax on blur event
  • [RF-12221] – rich:orderingList: fix VDL-DOC of @listHeight, @maxListHeight, @minListHeight, @listWidth
  • [RF-12256] – DragAndDrop + position: absolute results in broken positioning
  • [RF-12273] – rich:fileUpload does not work in portlets because it does not utilize javax.faces.encodedURL for the XmlHttpRequest URL
  • [RF-12424] – Showcase contains Servlet specific code
  • [RF-12425] – Showcase fails to load SyntaxHighlighter scripts when Require.js is present
  • [RF-12476] – Resource Name in mapping for two menu images is incorrect

Enhancement

  • [RF-12343] – Problem when saving form with rich picklist inside composite component

This is very much a community driven release. Thanks guys, you rock!

Stay Tuned for 4.3.0.M2

The QA process for the 4.3.0.M2 release is about to begin, with a release as soon as QA is done. So stay tuned, as there is lots more great stuff to come!


Wednesday, October 10, 2012

RichFaces 4.2.3.CR1 Release Announcement

RichFaces

I am happy to announce that the first candidate release of RichFaces 4.2.3 (4.2.3.CR1) is now available. This is purely a bug-fix release, with a focus on compatibility between RichFaces and the JBoss Portlet Bridge.

To try out this release: You can download the distribution directly, or for maven users, increment the RichFaces version in your pom.xml to 4.2.3.CR1. For more information on setting up a RichFaces 4 application, refer to our getting started guide.

Portlet Bridge Fixes

RichFaces aims to be a container agnostic project, working in Servlet containers, Java EE implementations, and Portals, all from multiple vendors. Of course keeping up with bugs and fixes across all these deployment environments is a lot of work, so we naturally tend to focus our efforts on certain specific environments. As such, nothing makes us happier then receiving github pull requests addressing compatibility issues between RichFaces and one of these deployment containers.

This is precisely what Ken Finnigan of the Portal Bridge team has done, identifying and resolving a number of issues with RichFaces when running in a Portlet environment. Unfortunately a number of servlet specific references leaked through in some of our implementations, but Ken has done an excellent job rounding these up, and replacing them with the appropriate JSF abstraction, ensuring RichFaces components work equally well in servlet and portlet environments. Great job Ken!

Community Contributions

I’d also like to call out , Bernard Labno, Christian Kaltepoth, and Luca Nardelli for the bugs they fixed and submitted as github pull requests. RichFaces is a very much a community project, and it’s in part contributions like these that keep the project healthy and moving forward. Thanks guys — and keep those pull requests coming!

Release Notes:

Specific issues resolved with this release include:

Bug

  • [RF-10758] – Input fields in popupPanel lose focus
  • [RF-10980] – Impossible to set tabindex of input inside rich:popupPanel
  • [RF-11051] – a4j.version does not work
  • [RF-11104] – rich:inputNumberSlider slider position is affected by css position attribute of containing element
  • [RF-12113] – rich:inputNumberSpinner minValue and maxValue being ignored after second request
  • [RF-12114] – Richfaces 4.2 rich:autocomplete don't fire ajax on blur event
  • [RF-12221] – rich:orderingList: fix VDL-DOC of @listHeight, @maxListHeight, @minListHeight, @listWidth
  • [RF-12256] – DragAndDrop + position: absolute results in broken positioning
  • [RF-12273] – rich:fileUpload does not work in portlets because it does not utilize javax.faces.encodedURL for the XmlHttpRequest URL
  • [RF-12424] – Showcase contains Servlet specific code
  • [RF-12425] – Showcase fails to load SyntaxHighlighter scripts when Require.js is present
  • [RF-12476] – Resource Name in mapping for two menu images is incorrect

Enhancement

  • [RF-12343] – Problem when saving form with rich picklist inside composite component

What’s next?

Be sure to take this candidate release for a spin, and report back any regressions. We are expecting the 4.2.3.Final release to simply be a re-tag of the CR1 release, barring any unforeseen blockers.

In the mean time we are hard at work on our the 4.3 release train, and are working on having a 4.3.0.M2 release available hot-on-the-heels of this 4.2.3 release.


Tuesday, May 15, 2012

RichFaces 4.2.2.Final Release Announcement

RichFaces 4.2.2.Final is available, the second RichFaces 4.2 micro release. This release was originally intended to focus on changes required to better align with the upcoming JBoss AS 7.1.2 release. However we had some community members step forward with some fixes, and those contributions ended up turning this release into a reasonable bug fix release!

I would like to give a big shout out to Luca Nardelli, Adrian Gonzalez, and Jason Porter. These are RichFaces users who contributed back to the project with bug fixes and new features; improving the quality of the JSF component framework we all use to build applications on a daily basis. Three cheers for OSS, and our community contributors! If you would also like to get involved and contribute code to the project, check out our ContributorGettingStartedGuide wiki page!

To try out this release, you can download the distribution directly, or for maven users, increment the RichFaces version in your pom.xml to 4.2.2.Final. For more information on setting up a RichFaces 4 application, refer to our getting started guide.

What’s new with 4.2.2.Final?

The rich:tooltip has seen a number of improvements centered around changing the javascript implementation to use the RichFaces Javascript Service feature, and defer javascript loading until all components are rendered. Nice catch Luca! Specific issues resolved with this approach include:

  • [RF-10839] – tooltip: attachment using target not works if tooltip defined before the component to which it attaches.
  • [RF-11370] – rich:toolTip: targetted example causes NPE for some IDs
  • [RF-12198] – rich:tooltip does not work inside a4j:commandButton
  • [RF-12199] – rich:tooltip does not work inside h:graphicImage

For those migrating from RichFaces 3, Adrian has contributed improvements to the Xcss2Ecss conversion utility:

  • [RF-11994] – Xcss2EcssConverter error handling f:importResource
  • [RF-12010] – ecss hot reloading

A number of other fixes are seen with:

  • rich:dataTable and rich:extendedDataTable
  • validation and messages
  • dependency updates, matching changes in the upcoming JBoss AS 7.1.2 release

Lastly I’ll mention a simple feature, but one which I’m sure many will find useful. The a4j:log component has a new mode of operation, the console mode, allowing a4j:log messages to be output to the browser javascript error console.

What’s Next?

We’ll shortly begin our 4.3.0.M1 sprint which will focus on MyFaces compatibility issues and some CDK improvements in this first milestone. Concurrent to this, we will be working in the RichFaces Sandbox to deliver our next-generation component set. Should any of the above initiatives appeal to you, feel free to get involved, and help move the project forward!


Tuesday, April 17, 2012

RichFaces 4.2.1.Final Release Announcement

We’ve released RichFaces 4.2.1.Final – the first micro release for the 4.2 release train. Since the CR1 release we’ve primarily addressed bugs with the Richfaces showcase and the RichFaces archetypes. CR1 itself focused on bug fixes and stability improvements throughout the framework.

To try out this release, you can download the distribution directly, or for maven users, increment the RichFaces version in your pom.xml to 4.2.1.Final. For more information on setting up a RichFaces 4 application, refer to our getting started guide.

What’s in 4.2.1.Final?

One noteworthy issue to take note of:

  • [RF-11940] – Our ajax push component (a4j:push) was not receiving pushes from the server on Android devices. We identified a bug in the Atmosphere framework which powers our push technology, a bug which we fixed and pushed back upstream (OSS for the win!).

Be sure to check out the 4.2.1.CR1 release blog for a more complete picture of what we addressed with this micro release.

New with this release, we are once again deploying the showcase on new infrastructure. The OpenShift Express service has been unified with OpenShift Flex to deliver a single service now simply referred to as OpenShift (see this FAQ entry). The end result for us is a simplified deployment and management console, and an easier ability to host multiple applications.

Moving Forward

We’re currently focused on improving the JSF testing and RichFaces mobile stories. However we’ll shortly begin our 4.3.0.M1 sprint which will focus on MyFaces compatibility issues. Concurrent to all this, we will working in the RichFaces Sandbox to deliver our next-generation component set. Should any of the above initiatives appeal to you, feel free to get involved and help move the project forward!


Wednesday, April 4, 2012

RichFaces 4.2.1.CR1 Release Announcement

We’ve released RichFaces 4.2.1.CR1 – the first candidate release for the first 4.2 micro release. This release comes with initial support for rapid component development with the CDK and jRebel, and a new archetype demonstrating (among other things) a mobile RichFaces application,. For the most part however, this release focuses on bug-fixes and stability of the components and framework.

To try out this release, you can download the distribution directly, or for maven users, increment the RichFaces version in your pom.xml to 4.2.1.CR1. For more information on setting up a RichFaces 4 application, refer to our getting started guide.

Kitchensink Example

Since the 4.2.0.Final release, we’ve included a new sample application: the RichFaces kitchensink quickstart (also available as an archetype). This is example application demonstrates key pieces of the Java EE stack, with a JSF/RichFaces frontend. We have it currently deployed to openshift if you want to see it in action. Be sure to check out this example with your mobile phone, to see the kind of mobile application you can build with RichFaces (complete with client side validation, and ajax push!)

Rapid component Development

Another new initiative that made its way into this release is the work we’ve been doing to support rapid component development with the CDK and jRebel. We’ve included the necessary jRebel configuration in our component projects (RF-12090) to enable jRebel to hot reload the classes generated by the CDK. See Lukas’ blog post for details on how you can get this working seamlessly within eclipse with JBoss tools.

Highlighted release notes

Specific components addressed include the rich:extendedDataTable, rich:contextMenu, and a4j:push:

  • ExtendedDataTable
    • [RF-10754] – extendedDataTable: two or more components placed on the page causes horizontal scroll to disappear
    • [RF-11948] – rich:extendedDataTable create an onready event to trigger javascript interactions after the EDT has been initialized
  • a4j:push
    • [RF-12013] – Deadlock in push component
    • [RF-12072] – Push: add onsubscribed event
  • rich:contextMenu
    • [RF-11936] – rich:contextMenu activation is possible outside of tree nodes
    • [RF-11971] – rich:menuItem onclick return value ignored
    • [RF-12042] – Metamer: rich:contextMenu doesn’t disappear after clicking out of the menu in IE9 and Google Chrome
    • [RF-12043] – rich:contextMenu isn’t rendered correctly in IE 9 compatibility mode
    • [RF-11996] – rich:contextMenu on several rows in extendedDataTable

Overall, areas such as event handling, validation, messages, and browser compatibility were addressed:

  • Events
    • [RF-10941] – a4j:command* components misses default behavior event
    • [RF-12091] – rich:dataScroller scrollListener not documented
    • [RF-10968] – Tree: treeSelectionChangeListener and treeToggleListener do not work
    • [RF-12007] – AbstractPanelMenuGroup.getChangeExpandListener is not used
  • Validation/messages
    • [RF-7351] – Regression: “messages: globalOnly does not work properly”
    • [RF-11978] – Graph Validator – does not mark context to fail validation
  • Browser compatibility
    • [RF-12026] – Javascript error in AjaxRequests on FireFox “invalid ‘in’ operand event”
    • [RF-11884] – Multiple Errors with IE8/9

The RichFaces showcase saw some improvements, including some mobile specific fixes:

  • Showcase
    • [RF-11872] – Mobile Showcase and a4j:region demo: submit button doesn’t respond on the first click
    • [RF-11905] – shutdown of the JBoss AS with showcase deployed throws DB error
    • [RF-12048] – Showcase: Change the password for JMS guest connection
    • [RF-12051] – Showcase: simplified Push CDI sample which wouldn’t use subtopics

Lastly, a few fixes I couldn’t fit into any of the above categories:

  • Miscellaneous fixes
    • [RF-11977] – Multiple fileUpload controls on the same page do not work
    • [RF-12093] – ResourceServlet can’t handle resources outside of specific libraries
    • [RF-12052] – rich:TabPanel – HTML comments should be supported inside the tabPanel

Next steps

Our crack-QE team has uncovered some regression in the CR1 release with their extensive test suite. We’ll address these issues with the 4.2.1.Final release, but be sure to give the CR1 release a spin to check for any issues we may have overlooked. Of course, concurrent to this micro release, we’re hard at work on some brand new stuff for RichFaces 4.3 (see the relevant planning discussion for details).


Thursday, February 23, 2012

RichFaces 4.2.0.Final Release Announcement

Richfaces 4.2.0.Final is now available for download! A quick follow on to our 4.1 release, Richfaces 4.2 delivers some “missing” components migrated from RichFaces 3, and provides usability and API improvements for resource loading optimizations and the push API. Documentation was a huge effort for this release; we are delivering an updated and complete VDL taglib doc, along with our more well established Developer Guide, and Components Reference.

To try out this release, you can download the distribution directly, or for maven users, increment the RichFaces version in your pom.xml to 4.2.0.Final. For more information on setting up a RichFaces 4 application, refer to our getting started guide.

What’s new in Richfaces 4.2

For details on what’s new in 4.2, have a look at the 4.2.0.CR1 release announcement, where we cover:

  • New components (ported from RichFaces 3)
  • Push (a4j:push) API changes
  • Resource Loading improvements
  • Skinning changes
  • A number of miscellaneous fixes.

Additionally, Lukas Fryc, has a few blogs out with further details on the developer impact of some of these features:

Looking Ahead

It’s now time to buckle down and focus on 4.3/4.Future efforts. The themes we will be focusing on are narrowing down to:

  • Continued improvement of the RF 4 core components
    • Further feature migration from RichFaces 3 (as required)
    • Bug fixes, performance enhancements
  • A re-work of our testing infrastructure
    • Bridge the gap between what we do to test our framework, and what devs do testing their applications
  • A new set of components
    • Improving our turnaround time, by leveraging existing javascript “widgets”
  • CDK improvements
    • Further simplifying the process for creating new components, while improving the turnaround time of component development

If you are interested in these efforts, and in the details behind them, chime in (or just follow along) to our RichFaces 4.3/4.Next planning discussion.


Wednesday, February 8, 2012

RichFaces 4.2.0.CR1 Release Announcement

I’m excited to announce the availability of RichFaces 4.2.0.CR1, our release candidate for RichFaces 4.2.0. Hot on the heels of the RichFaces 4.1 release, Richfaces 4.2 delivers some “missing” components migrated from RichFaces 3, and offers usability and API improvements for those looking to take advantage of our resource loading optimizations, and push API. Not to forget a significant number of bug fixes, and overall usability improvements.

To try out this release, you can download the distribution directly, or for maven users, increment the RichFaces version in your pom.xml to 4.2.0.CR1. For more information on setting up a RichFaces 4 application, refer to our getting started guide.

Let’s begin our look at the RichFaces 4.2.0.CR1 release with a look at the new components: rich:contextMenu and rich:hotKey.

New Component – rich:contextMenu

The rich:contextMenu component provides hierarchical context menu system similar to those found in many desktop applications, and was widely sought after by our community with a significant number of votes in our issue tracker. I’d like to thank our loyal and persistent community for identifying the gaps in our RichFaces 3 → Richfaces 4 migration story, and assure you that we will continue to work diligently to ease the migration process.

The rich:contextMenu itself is built on top of the existing rich:dropDownMenu implementation, making it a natural fit into the RichFaces 4 component set. The rich:contextMenu has 3 modes of operation client, ajax, and server, and integrates with the row/node selection capabilities of the rich:extendedDataTable and rich:tree components. The RichFaces showcase includes examples of each of these features.

The RichFaces 3 feature of “macrosubstituion” (client side string replacement) for the contextMenu has been so far omitted from the feature, but is being racked via jira (RF-11842). Be sure to vote for this issue if you feel it’s important to include in a future Richfaces 4 release. Likewise, be sure to file any jira issues should you have additional use-cases we’ve overlooked.

New Component – rich:hotKey

The rich:hotKey component is another ported Richfaces 3 component we are making available with our 4.2.0.CR1 release. The rich:hotKey component allows one to register a “hot key” on the page (or on a particular component) to execute some logic when the registered key-combination is pressed. This is functionality is often sought after in “heads down” data entry style applications, but is also valuable in any use case where one wants to enable “mouse free” operations. Many thanks to Ilya Shaikovsky for the pull request porting this feature to Richfaces 4.

Improvements – a4j:push

The a4j:push component has seen some attention, improving it’s usability with this release. First and foremost is our decision to turn off JMS integration by default – as of RichFaces 4.2.0, JMS integration must be explicitly turned on (RF-11892). This breaking change was introduced to ease the on-boarding of new users with push technology, as the component now works in both Servlet and EE containers out-of-the-box. Those who want to leverage the benefit of JMS integration will now have to explicitly enable it with the contextParam in your web.xml:

<context-param>
    <param-name>org.richfaces.push.jms.enabled</param-name>
    <param-value>true</param-value>
</context-param>

Another usability improvement has been the introduction of on-demand topic creation (RF-11483). The significance of this change is that you no longer need to implement a ServletContextListener, initializing your topics at application startup time. Instead, topics will be created on first access. Similarly, the push component itself will be initialized on first use.

However, when using push outside of the FacesContext threads (JMS-end points, timers, etc.) you will need to continue initializing push on startup, so that the push feature has a reference to the right contexts when called from those external threads. To do so, enable the context-param org.richfaces.push.initializeOnStartup in your web.xml.

Lukas Fryc has a great blog post giving an introduction to using the 4.2 a4j:push technology. We’ll have the Developer Guide updated with a complete description of using this feature in time for the 4.2.0.Final release.

Resource Loading

With our 4.1 release, we introduced our resource loading optimisation feature. Unfortunately, we conflated the ideas of resource mapping, with resource minification/packaging. There are valid use cases to enable resource mapping, while requiring neither minification, nor packaging, such as providing your own patched version of jsf.js, or even replacing the packaged version of jQuery with your own.

To better reflect these use cases, we re-worked the context-params that enable the feature, renaming them to clarify their purpose, and introduced a resource mapping file (independent of the mapping file used with resource packaging – RF-11909). The 4.1 context-params map into the new 4.2 context-params as follows:

RichFaces 4.1 context-param RichFaces 4.2 context-param
org.richfaces.resourceMapping.enabled org.richfaces.resourceOptimization.enabled
org.richfaces.resourceMapping.compressedStages org.richfaces.resourceOptimization.compressionStages
org.richfaces.resourceMapping.packedStages org.richfaces.resourceOptimization.packagingStages

Note: The 4.1 context-params will work in 4.2, they will be removed in a subsequent release

The significance of this, it that application developers can now create a simple mapping file, overriding the individual entries of the default mapping file without having to re-execute the whole packaging/minification process.

Look forward to some forthcoming blog posts detailing how to make use of the Resource Loading optimisations in RichFaces. We’ll also have the docs updated in time for the 4.2.0.Final release.

Skinning Improvement – Rounded Corners

A pull request from a community member (Adrian Gonzalez) enables round corner support in the RichFaces skins (RF-11848). This feature takes advantage of the border-radius CSS 3 property, and so will only work with compatible browsers – with a safe fall back to square corners in browsers that don’t support this CSS property. The screenshot below demonstrates what the RichFaces showcase looks like, with round corner support enabled.

To enable round-corner support for your skin set the panelBorderRadius property of your skin to the desired border-radius value.

Note: panelBorderRadius is not used in any of the out-of-the box 4.2 themes

Miscellaneous fixes

A number of other notable improvements include:

  • jQuery upgraded to v1.7.1 (RF-11838)
    • Fixes the “event.layerX and event.layerY” deprecation warning in Google Chrome
  • RichFaces available via maven central (RFPL-1800)
    • No longer is it required to define the JBoss nexus repository in your settings.xml to consume richfaces maven artifacts
  • Mobile tweaks
  • Spring Webflow compatibility (RF-11806)
  • a4j:actionListener example in the showcase
    • omitted in our initial release of the showcase, an example of a4j:actionListener usage has been added to the 4.2 showcase
  • Build improvements
    • The dependency management across all the projects’ poms has been cleaned up and centralized

Moving forward

With RichFaces 4.2.0.CR1 in the hands of our community, we look forward to hearing your feedback on this release, particularly if we missed any regressions. Should 4.2.0.CR1 be well accepted by our community members, we will release RichFaces 4.2.0.Final as a simple respin of CR1. In the mean time we will work on getting our 4.2 docs finalized, including an effort to fill in the missing attribute descriptions of our tag library documentation (VDL doc).

Looking beyond 4.2, we will consolidate many of the great ideas brought forward in our “4.3 and beyond” planning discussion into a project roadmap, and start some prototyping to spearhead our new initiatives.