UltraLightClient Logo

Release Notes

July 1, 2009


About UltraLightClient '08 Update 3

UltraLightClient '08 Update 3 includes the following new features:

Feature Description
New preload API for cell based components You can now preload cells to prevent lazy loading flickering in all cell based component: ULCList, ULCTable, ULCTableTree, ULCTree.


Enhancements in test framework You can now perform drag and drop operations with the test framework.

Test Framework Drag and Drop

Premium Support Fixes This release contains fixes and features that were reported to the premium support mailing list.

Premium Support

Please see the UltraLightClient '08 Update 2 release notes for previous release notes.

The sections Fixed Bugs and Implemented Feature Requests give an overview of the most important differences between UltraLightClient '08 Update 2 and UltraLightClient '08 Update 3.

To migrate from UltraLightClient '08 Update 2 to UltraLightClient '08 Update 3, please see the migration notes.


Version Notes

UltraLightClient requires the Java Runtime Environment (JRE) 1.4.2 or later on the server and on the client. Some addons (e.g. the application framework) require JRE 1.5 or later on the server-side.

To deploy an UltraLightClient application in a JEE server, the server needs to support either at least the Servlet 2.4 specification or at least the EJB 2.1 specification.


Modules, Parts and Release Structure

The UltraLightClient release includes all components required to successfully develop and deploy UltraLightClient applications. The UltraLightClient modules, parts, packages, and the structure of the current release are described in the following sections.



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.


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 EJB container integration and 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.
   license the jar file with the deployment license key
   previous_releasenotes Previous release notes
Sample applications with ready to run Tomcat Servlet container
   build.txt Contains the build number
   LicenseAgreement.pdf The license Agreement
   releasenotes.html This document


Fixed Bugs

PR Description Comments
UBA-7375 Drag and drop operations in test framework do not work  
UBA-7410 Test framework should be prepared for application termination / failure  
UBA-7579 In ULCTextField with DataType, losing focus after entering Chinese characters duplicates the characters.  
UBA-7580 Missing column selection event for ULCTableTree with expansion listener  
UBA-7604 AllPermissionsFileService's filtering mechanism shows files which do not have specified extension  
UBA-7639 Properties instances are wrong encoded  
UBA-7651 With Java 6, a ULCCheckBox Cell Editor in a ULCTable contained in a ULCInternalFrame cannot be selected for editing.  
UBA-7658 generated projects do not contain jnlp.jar  
UBA-7663 ULCTable with renderers throws an NPE when used along with Java Ferret from Java Access Bridge.  
UBA-7668 LayoutParameter.readOnly() has no effect for text areas  
UBA-7687 Expanding and collapsing of a ULCTableTree might result in a client side memory leak  
UBA-7690 On XP the genereate Bean View process might hang  
UBA-7692 ULCComboBox with a renderer and model change in popupMenuHasBecomeVisible event closes the popup prematurely.  
UBA-7702 Modifying the list model should not clear the current selection  
UBA-7706 ULCDateDataType with an error manager should return invalid input as default value  
UBA-7707 Generated empty project can not be launched as jnlp because of missing client lib  
UBA-7708 ULCTable with row sorter has a memory leak  
UBA-7710 ULCNumberDataType with a percent / per mil pattern does not round correctly  
UBA-7711 ResourceDownloader can not find an image located in a jar  
UBA-7726 Ctrl+Page up / Ctrl+page down do not work on a ULCTableTree in a ULCScrollPane  
UBA-7727 ULCList does not update selection on model changes when model is set in constructor  
UBA-7731 ULCWindow.pack() should set the window size to Dimension(0, 0)  
UBA-7734 ULCNumberDataType with a percent / per mil pattern does not work with editors like ULCTextField  
UBA-7748 It is not possible to serialize ULCSession from a test in the ULC Test Framework  
UBA-7749 Using ULC with Substance 5.1 (or higher) LAF and Java 6 results in EDT exception  
UBA-7751 PropertiesCoder throws an NPE in case a property value is a non String object  


Implemented Feature Requests

PR Description Comments
UBA-7162 Update embedded Servlet container that runs release sample  
UBA-7484 Provide a way to configure the Jetty server and the servlet Configuration in ServletTestEnvironmentAdapter New ServletTestEnvironmentAdapter API:
  • createServletHolder() / configureServletHolder()
  • createRootContext() / configureRootContext()
  • createServer() / configureServer()
UBA-7536 In ULC Test Framework doc give examples of how to write a test case for an already deployed application  
UBA-7649 Add API to eager load data to the client New ULCList API:
  • preloadAllCells()
  • preloadCells(int startRow, int endRow)
New ULCTable API:
  • preloadAllCells()
  • preloadCells(int startRow, int endRow, int[] columns)
New ULCTableTree API:
  • preloadAllCells()
  • preloadCells(int startRow, int endRow, int[] columns)
  • preloadCells(TreePath paths, int[] columns)
New ULCTree API:
  • preloadAllCells()
  • preloadCells(int startRow, int endRow)
  • preloadCells(TreePath paths)
UBA-7650 Easy deployment should pass request parameters as user parameters to the application e.g. to pass a foo parameter with value of bar you can use the following application URL:
UBA-7665 AbstractFormBuilder should allow to bind a property to a label New AbstractFormBuilder API:
  • addBoundLabel(String textPropertyName)
  • addBoundIcon(String iconPropertyName)
  • addBoundLabelWithIcon(String textPropertyName, String iconPropertyName)
UBA-7666 Properties in FormModel should override bean properties  
UBA-7684 Improve drag image / drag data handling for large data sets  
UBA-7689 Improve the detection of illegal proxy usage  
UBA-7695 Improve border handling of AbstractFormBuilder New AbstractFormBuilder API:
  • getVerticalGap()
  • getHorizontalGap()
  • getFormPaneBorder()
  • getTabbedPaneBorder()
UBA-7700 Generator should generate a meaningful web application display name  
UBA-7709 Wrong link to Base64CarrierStreamProvider in class description of ICarrierStreamProvider  
UBA-7713 JNLP files should contain the usual xml header  
UBA-7714 Projects created by the generator should have encoding UTF-8...  
UBA-7716 Improve expansion performance of large ULCTrees and ULCTableTrees  
UBA-7718 Improve AllPermissionsBrowserService for Linux platform  
UBA-7730 Update documentation of tutorial in ULC Application development Guide  
UBA-7747 Test framework might trigger too many events in case application under test loosing focus  


Migration Notes

Migrating an existing application

To integrate the new features into an existing application you can perform the following steps.

  1. Application configuration file
  2. Copy the files from <ULC_HOME>/base/configuration/ into the root source directory of your project. Open the ULCApplicationConfiguration.xml file and specify the application class name of your application. Provide all the configuration elements that you want to use, as for example the lookAndFeel, carrierStreamProvider or modelAdapterProvider. Add the servlet configuration for the client properties access to your web.xml:
    			delivers the client configuration data
  3. Libraries
  4. The number of libraries you need to cope with is reduced dramatically. You find then in the <ULC_HOME>/all/lib directory. For an overview of the libraries see Section 3.4 in the ULCApplicationDevelopmentGuide.
  5. Application framework
  6. To use the features of the application framework it is neccessary that your application class inherits from com.ulcjava.applicationframework.application.Application. Rename the start() method to startup(). You could also inherit from com.ulcjava.applicationframework.application.SingleFrameApplication and distribute the creation of the GUI into the different createStartup...() methods. Code that must be executed before the GUI is created goes into the initialize() method.
    Create a resources package beneath the package of the application class and create the <ApplicationClassName>.properties file.
  7. Easydeployment
  8. For the easydeployment feature to be working you must have the application configuration file and the application class must inherit from com.ulcjava.applicationframework.application.Application.
    • Copy the content of the WebContent directory that is in <ULC_HOME>/addon/generators/templates/projecttemplates/server/ to the projects web content directory.
    • Remove the PersistenceServletContextListener configuration entry from the web.xml
    • Replace the placeholder tokens in the web.xml :
      • @projectname@, an arbitrary name of your project.
      • @rootpackage@, the root package of your project (for example com.sample.ulc)
      • @rootpackagepath@, the root package as path formated (for example com/sample/ulc)
    • Rename the appletPage.jsp into @projectname@.jsp.
    • Copy the libraries for the servlet environment into the WEB-INF/lib directory. Copy the libraries of your project into the WEB-INF/lib directory, the libraries that are to be downloaded by the client must be (re)named to end with -client.jar.
      • ulc-all5-server.jar
      • ulc-all5-client.jar
      • commons-beanutils-1.8.0.jar
      • commons-collections-3.2.1.jar
      • commons-logging-1.1.1.jar
      • jstl.jar
      • jnlp-servlet.jar
      • jdk5tools.jar


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