Canoo RIA Suite Logo

Release Notes

December, 2011


About Canoo RIA Suite ULC - Update 5

Canoo RIA Suite ULC includes the following new features:

Feature Description
ULCWorker: Widget to facilitate long running asynchronous tasks To spawn threads to handle long running and non-(GUI-)blocking (hence asynchronous) tasks is a delicate task to server-side programmers but still it has to be done from time to time.

So far the only support was ULCPollingTimer, which allows to poll for the asynchronous task's completeness.

With ULCWorker an API shall be provided that can take the same place in ULC programming as SwingWorker in Swing programming.

Support for property change events Using a custom event in ULC extensions is somewhat cumbersome. It is easier to use an already existing event like ActionEvent.

However none of the supported events offers the possibility to pass a single property value. This means that as soon as you have an event that contains a value you are forced to implement a custom event.

PropertyChangeEvents are events that hold a single value. See com.ulcjava.base.shared.event for more details.

Client proxies sent to server When we transport a server proxy (aka ULCProxy) from server to client, the serialization engine converts it into an Oid. But the same did not happen when a client proxy (aka UIProxy) were transported from client to server (see UBA-7066). This is now possible.

This change has been triggered by a critical bug in ULCLoad (see UBA-8508) and forces us to make some changes in the API. See migration notes for more details.

Please see the Canoo RIA Suite Update 4 release notes for previous release notes.

The sections Fixed Bugs and Implemented Feature Requests give an overview of the most important differences between Canoo RIA Suite ULC Update 4 and Canoo RIA Suite ULC Update 5.

To migrate from Canoo RIA Suite Update 4 to Canoo RIA Suite ULC Update 5, please see the migration notes.


Version Notes

Canoo RIA Suite ULC Update 5 requires the Java Runtime Environment (JRE) 1.5 or later on the server and on the client.

The deployment of a Canoo RIA Suite ULC application requires a JEE server that supports at least the Servlet 2.4 specification.


Packages, Modules, Parts and Release Structure

UltraLightClient is part of the Canoo RIA Suite. It consist of the ULC Core that includes all components required to successfully develop and deploy UltraLightClient applications. Additionally there are several extension packages that provide extended functionalities. The UltraLightClient modules, parts, packages, and the structure of the current release are described in the following sections.


Package ULC Core

ULC Core contains everything that was in previous version of ULC enhanced with the new features: extended visual Effects, Charts, Animations and export to Google App engine.


The UltraLightClient release is split into modules. Each module belongs to exactly one of five categories:

The category and module names are reflected in the directory structure of the release, e.g. environment/applet for the applet module that belongs to the environement category.

A module directory contains subdirectories with the following contents:



Each of these modules can contain up to four parts:

The part names are reflected in the filename of the jar files in the lib and src directory of the corresponding module, e.g. ulc-applet-client.jar and ulc-applet-client-src.jar for the classes and source stubs of the applet module that have to be deployed on the client side.


Package ULC Table Plus 1.0.4 (JIDE Grids v3.1.1)

ULC Table Plus integrates the JIDE grids library that provides a table with various extended features.


Package ULC Web Integration 1.0.3 (JxBrowser v2.9.1)

ULC Web-Integration integrates the JxBrowser library. With this package you can integrate any web page directly into your ULC Application.


Package ULC Enterprise Portal Integration 1.0.2

With this package you can integrate an ULC Application into your enterprise web applications or your enterprise portal server.


Package ULC Office Integration 1.0.1

This package bundles Apache POI and iText to produce PDF and MS Office documents integrated into your ULC Application.


Release Structure

<ULC_HOME> UltraLightClient home directory
Add-ons to the UltraLightClient base framework
   base UltraLightClient base framework
   all For convenience, all UltraLightClient classes
Server integrations including Servlet container integration and integration into local container for stand-alone (single JVM) ULC applications.
UltraLightClient documentation
Client environment integration for applet deployment, JNLP deployment, and standalone deployment.
   ext contains the libraries of installed packages
   license the jar file with the deployment license key
   previous_releasenotes Previous release notes
Sample applications with ready to run Jetty Servlet container
   thirdpartylicenses licenses of included third party libraries
license manager tool
   build.txt Contains the build number
   LicenseAgreement.pdf The license Agreement
   releasenotes.html This document


Fixed Bugs

PR Description Comments
UBA-1089 'Content-length' header missing  
UBA-7449 ULCDialog.setVisible(true/false) in same roundtrip will cause dialog to stay  
UBA-7826 ColumnBinding.columnName() has no effect  
UBA-8254 ClassCastException upon right-click on table in case the renderer component is not of type JComponent  
UBA-8278 Exception by substance L&F when displaying ULC application as applet  
UBA-8391 ULCComponents size is not respected when wrapped into a JXLayer  
UBA-8472 NPE when trying to remove a table / table tree row containing a cell being currently edited  
UBA-8479 ResourceMap.containsKey throws NPE if key is not found  
UBA-8480 Cell selection on ULCTableScrollPane does not work.  
UBA-8481 In ULCTableScrollPane hiding the last column and then showing it again changes its position.  
UBA-8483 ULCInternalFrame.setFrameIcon(null) still displays icon on the frame on the client side.  
UBA-8486 ULCFrame[] returned by ULCFrames.getFrames() may have null frames in it.  
UBA-8494 AbstractButton.doClick does not select checkbox/radio button  
UBA-8496 UITableModelAdapter throws an exception when fireTableStructureChanged is performed after the column count has changed on a table with row sorter  
UBA-8498 "No coder registered ..." exception when sending an empty IProxy array over the wire  
UBA-8502 'UISession.setExitOnLastSessionStop(false)' not respected in 'StandaloneTestEnvironmentAdapter' resp. 'JnlpTestEnvironmentAdapter'  
UBA-8505 The new splash screen seems to generate two sessions  
UBA-8508 UIProxy.getId is of type int instead of Oid  


Implemented Feature Requests

PR Description Comments
UBA-7066 Transporting proxy from client to server  
UBA-7073 ULC should provide base support for PropertyChangeEvents  
UBA-7827 Improve documentation of TableBinding.getBeanForRow() method  
UBA-7850 Facilitate use of a different test framework like JUnit4 or TestNG  
UBA-8200 ULCTableTree client proxy calls repaint() method 3 times on cell edit  
UBA-8232 Improve the documentation for Coders  
UBA-8240 HTMLUtilities should escape given text into HTML entities if needed  
UBA-8442 Add setRowHeight(int row, int rowHeight) API to ULCTable and ULC Table Plus also.  
UBA-8464 Update JxBrowser to version 2.9  
UBA-8467 It is not possible to extend ULCJideTable within ULCTableScrollPane  
UBA-8468 Column parameter does not seem to be considered in UITableTreeModelAdapter.tableTreeNodesChanged  
UBA-8476 Provide the ability of closing instances of ULCInternalFrame programmatically on server side.  
UBA-8478 Reintroduce a way to actively remove the roundtrip listener for a form  
UBA-8482 U4 is using the regular Jide libraries (without line numbers in stack trace)  
UBA-8484 Make FormModel.update(boolean) protected  
UBA-8487 AbstractFormBuilder/LayoutParameter should set a style on the Labels  
UBA-8488 Create a ULCWorker widget to facilitate long running asynchronous tasks  
UBA-8500 Allow the creation of action map hierarchies  
UBA-8503 When embedded behind a portal, the user has to login twice: the first time in the portal itself (WAM, SSO) and the second time in the ULC application  
UBA-8504 Add 'user-agent' to Error dialog  


Migration Notes

Known Problems and Limitations

You can find known problems and limitations in our issue database.

Product and company names herein may be trademarks of their respective owners.

Copyright (c) 2000-2015 Canoo Engineering AG