CUBA Platform Release Notes

Version 6.3.6

Resolved Issues

Version 6.3.5

Resolved Issues

Version 6.3.4

Resolved Issues

Version 6.3.3

Resolved Issues

Known issue with upgrade: make sure that the old eclipselink-2.6.2.cuba9.jar is replaced with the new eclipselink-2.6.2.cuba11.jar in tomcat/shared/lib folder after deployment. When you upgrade a project in Studio, it completely rewrites the whole shared libs folder, and the problem does not appear. But if you pull already upgraded project from VCS into an existing working environment, the standard deploy procedure will not replace the JAR correctly and you need to do it manually, or just delete the whole folder and deploy again.

Version 6.3.2

Bug fixes:

  1. Database update fails if the project name contains dashes.
  2. Non-global search folders are accessible for other users.
  3. Do not suggest to use saved passwords in any PasswordField by default.
  4. IllegalArgumentException when logout while a screen with a timer is opened.

Version 6.3.1

Bug fixes, including:

  1. IllegalStateException while opening screen via screen links.
  2. Non-system user sometimes returned from LoginService.getSystemSession().
  3. Server stops updating counter of application folder after restart.
  4. REST API should reset SecurityContext after each request.
  5. JSON entity serialization shouldn't write values for @MetaProperty methods.
  6. After user logout, application locale is set to default not considering language of the browser.
  7. Expanding a tree table node can throw an unfetched attribute exception.

Version 6.3.0

This is the first public release of platform version 6.3. All significant changes from version 6.2 are listed below.

  1. Breaking changes
    1. The LoginWindow class of the web client has been removed. If you've customized the login window in your project, you have to rework it using the new mechanism of defining login window as a GUI screen. In order to do this, go to Screens section in Studio and click Create login window.
    2. A custom App class (if any) should be registered in web-spring.xml as a bean with the cuba_App name. The Studio migration procedure does this automatically.
    3. The getAppWindow() method of the App class is replaced with getTopLevelWindow().
    4. Database update scripts coming with the new platform version create a new user with 'anonymous' login. If the User entity is extended in your project, the DTYPE column of the SEC_USER table must be updated with the name of the extended entity, e.g. sample$ExtUser. The Studio migration procedure creates a special update script that runs after platform scripts and updates the new 'anonymous' user.
    5. Method getUuid() was removed from the Instance interface.
    6. BaseUuidEntity does not contain createdBy and createTs attributes anymore - they are extracted to the Creatable interface. If you have entities inherited directly from BaseUuidEntity, implement Creatable and add fields for these attribute. The Studio migration procedure does this automatically.
    7. The EmbeddableEntity base class now has the key of type Object instead of UUID.
    8. Signatures of entity listener methods have been changed. Before* listeners now have EntityManager as a parameter, After* listeners have Connection as a parameter. The Studio migration procedure refactors your listeners automatically.
    9. Methods of the Action interface working with KeyCombination have been renamed to getShortcutCombination() / setShortcutCombination().
    10. In AfterWindowClosedHandler used by create and edit actions, the action ID string parameter has been added.
    11. TablePrintFormAction, EditorPrintFormAction and RunReportAction now implement the Action.HasBeforeActionPerformedHandler interface instead of calling runnables before and after.
    12. FileUploadField has been completely reworked. To preserve old look and behavior, do the following:
      • rename caption attribute to uploadButtonCaption
      • rename icon attribute to uploadButtonIcon
      • rename description attribute to uploadButtonDescription
    13. The UploadComponentSupport has been renamed to UploadField.
    14. EntitySnapshotAPI.extractEntity() method return type has been changed to Entity. You may need to adjust your code accordingly.
    15. System user sessions (created by the LoginWorker.loginSystem() method) never expire.
    16. _local and _minimal views do not contain system attributes (createTs, updateTs, etc.) for performance reasons. Custom views contain system attributes only if the includeSystemProperties flag is specified.
    17. A middleware test container requires setting of application components. See example in the documentation.
  2. The term "base project" has been renamed to application component. Any CUBA application can now be used as a component of another application. In order to be used as a component, an application project should contain an app-component.xml descriptor and a special entry in the manifest of the global module JAR. Use Project properties > App component descriptor link in Studio to generate the descriptor and manifest entry for the current project automatically.
  3. An application can now connect to multiple data stores so its data model will contain entities mapped to data located in different databases. Studio allows you to set up additional data stores on the Project properties > Edit > Advanced tab.
  4. Improved support for non-CUBA databases.
    1. CUBA entities do not require system attributes uuid, createTs and createdBy. So a minimal entity can have just one system attribute: id.
    2. Identity and composite primary keys are now supported.
  5. Now it is possible to use a CUBA application anonymously. Before a user logs in, there is one user session with the fixed ID specified in the cuba.anonymousSessionId application property. The session is created for the user with the anonymous login, so you can define permissions for this user to restrict the anonymous usage rights. To benefit from this new functionality, create your own login window (go to the Screens section in Studio and click Create login window) and add datasources and visual components as for a regular screen.
  6. The new REST API Version 2 with resource URIs, HTTP verbs, OAuth2 authentication and improved JSON serialization.
  7. Single-Sign-On for CUBA applications.
  8. Query cache has been implemented as an addition to entity cache.
  9. Screen agent can be used to choose a screen template depending on the current user device and its display parameters.
  10. New visual components: Accordion, Calendar, ColorPicker, DatePicker, OptionsList, PopupView, SourceCodeEditor
  11. New properties and methods of visual components: Button.disableOnClick, DateField.rangeStart/rangeEnd, FileUploadField.dropZone, FileMultiUploadField.dropZone, FileMultiUploadField.fileSizeLimit, GroupBox.showAsPanel, LookupField.nullOptionVisible, SplitPanel.getSplitPosition(), SplitPanel.minSplitPosition/maxSplitPosition, Table.requestFocus(), Table.scrollTo(), TwinColumn.leftColumnCaption/rightColumnCaption
  12. TokenList.button attribute has been renamed to addButton, with backward compatibility.
  13. CheckBox, MaskedField and DateField now have concrete return types of the getValue() method.
  14. BeforeActionPerformedHandler can be used in standard actions to intercept the execution start.
  15. JSON format is used for storing entity snapshots. Snapshots previously saved in XML are deserialized with the old mechanism for backward compatibility.
  16. Fixed delay can be used in scheduled tasks.
  17. Improved UI for Administration > Server Log > Options > Control page.
  18. A link to the CUBA web site has been added to the default login screen implementation. You can hide it using the cuba.web.loginDialogPoweredByLinkVisible application property.
  19. [Charts and Maps] Native JSON from amCharts documentation can be directly used to configure charts.
  20. Upgraded dependencies:
  21. Over 100 other bug fixes and improvements.

Upgrading projects from 6.2 to 6.3

  1. Run automatic upgrade in Studio (version 2.3+ is required) by selecting the new platform version in Project properies > Components.
  2. Run update database scripts either in Studio by executing Run > Update database, or in command line by executing updateDb Gradle task.

Studio does not provide automatic migration of extension projects. If you have an application project and its extension, follow the steps below.

  1. Open the application project in Studio and migrate it to 6.3.0 as explained above.
  2. Click App component descriptor link on the Project properties tab and save the descriptor.
  3. Execute Run > Install app component main menu item.
  4. Close the application project in Studio.
  5. Open the extension project in Studio.
  6. Edit Project properties and change platform version to 6.3.0. Click Continue when Studio shows a dialog with message Can not remove app component. Confirm re-creating build scripts and migration.
  7. Close the extension project in Studio.
  8. Open build.gradle of the extension project in a text editor and do the following:
    1. Remove ext.baseProjectVersion = ... line.
    2. Remove lines containing mentions of your application artifacts from dependencies blocks of all modules, for example compile("$baseProjectVersion")
  9. Open the extension project in Studio.
  10. Edit Project properties, click plus button next to Custom components and select your application project in the Registered project drop-down list of the Custom application component dialog. Click OK in the dialog, then OK in the page. Confirm changing the scripts.
  11. Update database, then run the application server.

Upgrading projects from 6.3.0.RC2 to 6.3.0

The theme building mechanism was changed for the final release. However, the migration procedure is not executed when you upgrade from a release candidate to a final release. If you have already migrated your project to 6.3.0.RC2 and it has a theme extension, follow the steps below to upgrade to the final 6.3.0:

  1. Open the project in Studio 6.3.0.
  2. Edit Project properties and change platform version to 6.3.0. Click OK and confirm changes.
  3. Close the project.
  4. Open settings.gradle in a text editor and do the following:
    1. Define the app-web-themes module:
      include(':app-global', ':app-core', ':app-gui', ':app-web', ':app-web-themes')
    2. Specify the directory of the module by adding the line:
      project(':app-web-themes').projectDir = new File(settingsDir, 'modules/web/themes')
  5. Open build.gradle in a text editor and do the following:
    1. Define a variable for the module at the top of the script:
      def webThemesModule = project(':app-web-themes')
    2. Add the module configuration section:
      configure(webThemesModule) {
          apply(plugin: 'java')
          apply(plugin: 'maven')
          apply(plugin: 'cuba')
          appModuleType = 'web-themes'
          buildDir = file('../build/scss-themes')
          sourceSets {
              main {
                  java {
                      srcDir '.'
                  resources {
                      srcDir '.'
  6. Save the files and open the project in Studio. Now you will be able to build the project with the extended theme on 6.3.0.