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.
|
| Premium Support Fixes | This release contains fixes and features that were reported
to the premium support mailing list.
|
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.
Modules
The UltraLightClient release is split into modules. Each module belongs to exactly one of five categories:
- All
All UltraLightClient classes.
For convenience, contains all other modules (except samples). - Base
The UltraLightClient core.
Always needed, for development and deployment. - Container
Server-side integrations into containers, e.g. Servlet, EJB.
Only needed for server deployment. - Environment
Client-side integrations into environments, e.g. Applet, JNLP.
Only needed for client deployment. - Addon
Utilities and extensions, e.g. application framework, test framework, QTP integration.
Only needed on demand. - Sample
Samples demonstrating the usage of UltraLightClient, e.g. Hello, ULCSet, OnlineShop.
Not needed during development or deployment.
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:
- lib
Jar files that contain the module classes.
For sample and add-on modules the required libraries. - resource
Only for sample modules: the required resources, e.g. images, property files - src
Either complete source code or source stubs.
The source stubs are used to enable code completions in IDEs. - webapp
Only for sample modules: ready to deploy web application, i.e. war files
Parts
Each of these modules can contain up to four parts:
- Client
Contains classes to be deployed on the client side.
Runs inside the sandbox. - Trusted
Contains classes to be deployed on the client side.
Does not run inside the sandbox. The additional permissions required depend on the module. - Server
Contains classes to be deployed on the server side. - Development
Contains all classes needed during development, i.e. the client, trusted, and server parts plus some additional development classes.
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 |
| addon applicationframework generators testframework qtpintegration |
Add-ons to the UltraLightClient base framework |
| base | UltraLightClient base framework |
| all | For convenience, all UltraLightClient classes |
| container ejb servlet local |
Server integrations including EJB container integration and Servlet container integration and integration into local container for stand-alone (single JVM) ULC applications. |
| doc addon ULCQTPIntegrationGuide.pdf ULCTestFrameworkGuide.pdf apidoc ULCArchitectureGuide.pdf ULCApplicationDevelopmentGuide.pdf ULCDeploymentGuide.pdf ULCEssentialsGuide.pdf ULCExtensionGuide.pdf ULCInstallGuide.pdf ULCReferenceGuide.pdf ULCTestFramework.pdf ULCWhitePaper.pdf |
UltraLightClient documentation |
| environment applet jnlp standalone |
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 hello onlineshop pie teammembers tomcat trusted ulcdndset ulcset |
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:
|
| 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:
|
| 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:http://www.canoo.com/ulc/demos/teammembers_applet.jsp?foo=bar |
| UBA-7665 | AbstractFormBuilder should allow to bind a property to a label | New AbstractFormBuilder API:
|
| 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:
|
| 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.
- Application configuration file 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:
- Libraries 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.
- Application framework 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.
- Easydeployment 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
<servlet> <description> delivers the client configuration data </description> <servlet-name>ConfigPropertiesDownloader</servlet-name> <servlet-class> com.ulcjava.container.servlet.server.servlets.ConfigPropertiesDownloader </servlet-class> </servlet> <servlet-mapping> <servlet-name>ConfigPropertiesDownloader</servlet-name> <url-pattern>/clientconfig.properties</url-pattern> </servlet-mapping>
Create a resources package beneath the package of the application class and create the <ApplicationClassName>.properties file.
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.


