CUBA Platform Changelog

Version 6.1.5

Improvements, including:

  1. Aggregatable columns re-calculate values from editable fields on the fly.
  2. FieldGroup now supports AUTO for fields width.
  3. Possible security issues with Kryo serialization have been prevented.

Bug fixes, including:

  1. Automatic DB update crashes with the "No existing modules found" exception if the Tomcat path contains "." or "()".
  2. BackgroundTask timer does not send events to server in BackgroundWorkProgressWindow.
  3. Issues with Rows Count in browsers when the number of entities is changing.
  4. Input prompt is shown for disabled and read-only text and lookup fields.
  5. The ComponentsHelper.getComponent() method doesn't search components in all inner containers.
  6. Drop-down list of substituted users isn't updated after deleting a user.
  7. Visual artifacts on modality curtain for error and warning notifications.
  8. Horizontal scroll doesn't work in Unexpected error dialog window in Chrome 49+.
  9. StackOverflowError is possible when changing parent in Access Group.

Version 6.1.4

Improvements and bug fixes, including:

  1. The new application property enables SSL connection to SMTP servers.
  2. CubaWarBuilding task does not add widgetset folder to WAR file if web-toolkit module is used.
  3. Clean task removes HSQLDB and Tomcat if Eclipse is used.
  4. Issue with security constraints for ManyToMany relationships on HSQLDB.
  5. Exception when removing entity with OneToOne relationship if not-owning side has OnDeleteInverse=UNLINK.
  6. Query parameters are not recognized in JOIN ON clause.
  7. Fields with BigDecimal datatype are formatted with a wrong locale if it is set via user properties.
  8. Cannot add a new logger via Server Log > Options.
  9. Remove old cuba.web.ExternalAuthentication property from
  10. Order of items in LookupField does not conform to order of items in enum.
  11. Issues when editing entities on 2nd level of composition.
  12. [Charts and Maps] Issues with GanttChart: GraphItemClickListener does not work; and others.

Version 6.1.2

Improvements and bug fixes, including:

  1. New properties of CubaWarBuilding task:
  2. Issues with default values of dynamic attributes.
  3. Usability of Assigned only checkbox in the Role editor screen.
  4. Test Constraint action in security constraints produces false error if Where Clause uses session attributes.
  5. Query parameters of UUID type are not converted to valid strings without dashes in JPQL queries for MySQL.
  6. Embedded component does not show images from FileDataProvider.

Version 6.1.1

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

  1. New licensing:
  2. The row-level security constraints have been improved. Now you can define constraints for create/update/delete actions and check constraints in memory for collection attributes. The constraints editor includes a visual tool for easy creation of JPQL and Groovy code fragments by selected entity attributes.
  3. Support for MySQL databases.
  4. The Administration > Application Properties screen allows you to view and edit values of application properties stored in the database.
  5. The following application properties have been renamed for better categorization (old names also work, so you don't have to change anything in your existing projects):
        cuba.reporting.* => reporting.*
        cuba.fts.* => fts.*
        cuba.charts.* => charts.** => cuba.amazonS3.* => cuba.entityLog.enabled
        cuba.web.ExternalAuthentication => cuba.web.externalAuthentication
        cuba.clusterMessageSendingThreadPoolSize => cuba.cluster.messageSendingThreadPoolSize
        cuba.reporting.entityTreeModelMaxDeep => reporting.entityTreeModelMaxDepth
        cuba.client.maxUploadSizeMb => cuba.maxUploadSizeMb
        cuba.systemInfoScriptsEnabled => cuba.gui.systemInfoScriptsEnabled
        cuba.manualScreenSettingsSaving => cuba.gui.manualScreenSettingsSaving
        cuba.showIconsForPopupMenuActions => cuba.gui.showIconsForPopupMenuActions
        cuba.gui.tableInsertShortcut => cuba.gui.tableShortcut.insert
        cuba.gui.tableAddShortcut => cuba.gui.tableShortcut.add
        cuba.gui.tableRemoveShortcut => cuba.gui.tableShortcut.remove
        cuba.gui.tableEditShortcut => cuba.gui.tableShortcut.edit
        cuba.reporting.parameterPrototype.queryLimit => reporting.parameterPrototypeQueryLimit
  6. Some application properties are now stored in the database, e.g. cuba.schedulingActive, fts.*, charts.*, cuba.amazonS3.*. You don't have to change anything in your existing projects, because your values set in files have priority over database-stored values.
  7. Application properties stored in the database and in files can be overridden by Java system properties with the same name. For example, this server command line option will ensure that automatic database update is on, regardless of what is set in
  8. REST API has been extracted to a separate module of the cuba base project. The web and portal modules use it as a dependency, so REST API can now be used in both modules. It is turned on by default in portal as previously. To turn it on in web, open your project in Studio and select Project properties > Edit > Advanced > REST API in web module, or add the following to web-dispatcher-spring.xml:
        <context:component-scan base-package="com.haulmont.cuba.restapi"/>
    If you use classes from the com.haulmont.cuba.portal.restapi package, change imports to com.haulmont.cuba.restapi. For example:
        import com.haulmont.cuba.restapi.Authentication;
  9. DataManager now checks user permissions only on the client tier. If you want to check permissions on middleware, you have the following options:
  10. Kryo serialization is used by default for better performance. To use the standard Java serialization, add the following application property to the middleware and client blocks:
        cuba.serialization.impl = com.haulmont.cuba.core.sys.serialization.StandardSerialization
  11. The API for managing dialog windows has been reworked. AbstractFrame.getDialogParams() and DialogParams are deprecated. Recommended methods:
  12. The new OptionsList visual component presents a list of options as a vertical scrollable list.
  13. The new Accordion visual component is a tab sheet with vertical placement of tabs.
  14. LookupField and all other implementors of the OptionsField interface can take the list of options from an enum, even if not connected to an entity property. See the OptionsField.setOptionsEnum() method.
  15. New Table attributes: columnHeaderVisible, showSelection.
  16. The new reversePosition attribute of SplitPanel allows you to specify a position from the opposite side.
  17. The new listener CloseWithCommitListener is notified when the screen is closed with commit action.
  18. The Persistence.callInTransaction() and Persistence.runInTransaction() methods can be used to run a piece of code as a lambda-expression in a new transaction with or without return value.
  19. The pessimistic locking API has been improved. See LockManagerAPI.lock(Entity), LockManagerAPI.unlock(Entity) methods.
  20. The new CustomCollectionDatasource, CustomGroupDatasource and CustomHierarchicalDatasource base classes should be used for creating custom datasource implementations.
  21. The non-persistent KeyValueEntity can be used to show arbitrary sets of named values in CUBA Generic UI. See also KeyValueCollectionDatasourceImpl, KeyValueGroupDatasourceImpl and KeyValueHierarchicalDatasourceImpl.
  22. The CubaJelasticDeploy Gradle task can be used for deployment to the Jelastic cloud.
  23. The uuid-ossp extension is not used for PostgreSQL, so superuser privileges are not needed anymore when creating the database.
  24. The database creation and update tasks in CUBA Gradle plugin have the connectionParams property. The value of this property is added to the database URL as is. For example:
        task createDb(dependsOn: assembleDbScripts, description: 'Creates local database', type: CubaDbCreation) {
            dbms = 'mssql'
            host = 'localhost'
            dbName = 'demo'
            connectionParams = ';instance=myinstance'
  25. The zipProject Gradle task is added to application projects by default. So now you can quickly make an archive of a demo project to attach to a topic on support forum or send by email.
  26. An API for exporting/importing entity graphs to JSON has been created. See the EntityImportExportService interface.
    Some UI screens allow users to export and import data: Roles, Access Groups, Entity Inspector. For example, if you want to copy a filter from one database to another, you can do it through export/import in the Entity Inspector screen.
  27. A user can select a default locale on the Help > Settings screen.
  28. The REST API query method can be invoked through HTTP POST too.
  29. A default logging configuration is provided in classpath. If you don't specify a logback.xml file to your server (for example, when deploying to the cloud), the console output will contain the reasonable level of details.
  30. Vaadin has been upgraded to 7.6.3.
  31. JGroups has been upgraded to 3.6.7.
  32. [Charts and Maps] Stock chart has been integrated.
  33. [Charts and Maps] The DataProvider and DataItem interfaces have been refactored.
  34. [Charts and Maps] Any object can be used for a chart data model. See the SimpleDataItem class.
  35. [Charts and Maps] AmCharts has been upgraded to 3.17.3.
  36. Over 100 other bug fixes and improvements.

Upgrading projects from 6.0 to 6.1

  1. Run automatic upgrade in Studio by selecting the new version in Project properies > Base projects > Platform version.
  2. Run update database scripts either in Studio by executing Run > Update database, or in command line by executing updateDb Gradle task.