CUBA Platform Changelog


Version 5.4.9

Bug fixes, including:

  1. Chart loaders and XSD.
  2. Report does not use selected view for band.
  3. @OnDeleteInverse in a mapped superclass doesn't work.
  4. Setting style to LinkButton removes its 'link' style.
  5. Exception in Filter if it is contained in a frame opened via the openFrame() method.

Version 5.4.6

  1. @SystemLevel annotation now has propagate attribute which is false by default. It means that System Level feature is propagated only to extending subclasses (derived entities with the @Extend annotation). If propagate is true, all subclasses of the entity become System Level.
  2. Entity's detached flag is set to true only after all BeforeDetachEntityListeners have been executed.
  3. Editable Table now correctly shows indicators for required fields.
  4. Improved stability and performance of timers in web client.
  5. Fixed EmailValidator.
  6. Fixed always disabled Edit button in Entity Inspector.
  7. Fixed SocketException handling in web client.
  8. Commit of a parent DsContext now calls CommitListeners of all child contexts.
  9. Fixed optimistic lock exception when repeatedly editing a dynamic attribute without closing the editor screen.
  10. Fixed CSS style for h2 style name in Halo theme.
  11. Various fixes in the Filter component.
  12. Various fixes in Workflow.

Version 5.4.4

  1. The cuba.gui.genericFilterControlsLayout application property was added to enable the filter layout configuration.
  2. If DateField has the dateFormat attribute with the msg:// prefix, the format value will be retrieved from the screen's message pack. Previously the main message pack was used.
  3. The timeFormat attribute was added to the TimeField component.
  4. A service interface can now be extended with new methods.
  5. The show/hide button was added to FoldersPane splitter in Halo.
  6. The focused style was added for the Link component in Halo.
  7. Bug fixes.

Version 5.4.3

  1. The PopupButton component now supports keyboard.
  2. The Link component can contain an icon.
  3. The filter selection popup can be opened by the Shift-Backspace keyboard shortcut. This combination can be changed in the cuba.gui.filterSelectShortcut application property.
  4. If the cuba.manualScreenSettingsSaving application property is set to true, screens will not save their settings automatically on close. In this mode, a user can save or reset settings using the context menu which appears on clicking a screen tab or a dialog window caption.
  5. The timeFormat attribute was added to the TimeField component. It can contain either a format value, or a message pack key.
  6. The setCursorPosition() method was added to TextField and TextArea components.
  7. Bug fixes.

Version 5.4.2

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

  1. Time zones support. A user can view and edit timestamp values in a time zone different from server's time zone.
  2. Update database now runs init scripts for newly added base projects. This means that if you added a base project, you do not need to re-create the database and lose all your data. Regular update now checks if all required tables exist, and if not, runs appropriate init scripts.
  3. New DataManager infrastructure interface provides CRUD functionality on both middle and client tiers. DataWorker is deprecated; DataService became an internal mechanism and should not be used in the application code.
  4. DatatypeFormatter bean was added for convenient locale-dependent formatting of common data types.
  5. REST API changes:
  6. Filter component is completely reworked:
  7. The new BaseAction class is now recommended to use instead of AbstractAction.
  8. New attributes were added to FieldGroup field and Table column: In a table, link attribute can also be set to true for a column of a simple type. In this case, the link opens the main entity editor. This can be used to simplify navigation: users can open the editor screen by clicking on some key attribute of the entity.
  9. inputPrompt attribute was added for the TextField, LookupField, LookupPickerField and SearchPickerField components. It sets a string which is displayed in the field when its value is empty.
  10. setItemClickAction() method was added for the Tree component. It sets an Action to be invoked when a user double-clicks a tree item.
  11. If a table has selected rows, its ExcelAction allows to export only selected rows to Excel.
  12. Any component, implementing the Field interface (TextField, etc.), now allows to set its value programmatically by the setValue() method even if the editable property is false.
  13. HTML-type notifications and messages handling was changed: carriage returns are not converted to <br> automatically.
  14. cuba.web.availableAppThemes application property is not used anymore. The information about themes is obtained only from the cuba.themeConfig property.
  15. Data type validation at the moment of screen closing was fixed. Now if a user clicks a button or presses a shortcut key right after changing a field value, and this value does not conform to the field data type, the click is ignored. Previously if a user entered a new invalid value and then immediately pressed the Commit button, the screen closed instantly leaving the old correct value in the field. So the user had no chance to notice that the new value has not been applied.
  16. ClientConfiguration interface was added, extending Configuration on the client tier. This interface defines getConfigCached() method to obtain config proxies caching DB-stored properties to minimize server invocations. The standard getConfig() method returns non-caching proxies. The platform uses getConfigCached() when injects configs into screen controllers and getConfig() for injection into regular Spring beans. If you use ClientConfiguration to obtain a config, you can choose which proxy you need: caching or non-caching.
  17. ExportFormat class now allows to create new instances for handling arbitrary file types. Previously the class was an enumeration.
  18. cuba.web.allowHandleBrowserHistoryBack application property is now true by default, which means that the platform replaces the standard browser "Back" button behavior with calling AppWindow.onHistoryBackPerformed() method.
  19. cuba.gui.loginToClient specific permission restricts ability to login to web and desktop clients. This can be useful if some users should be able to login to a web portal but not to the internal web or desktop client.
  20. CubaThreadPoolTaskScheduler now starts scheduled methods only after AppContext is initialized and all AppContext.Listeners are notified. Therefore, you do not need to add AppContext.isStarted() check at the beginning of the invoked methods.
  21. Upgraded dependencies:
  22. Over 150 other bug fixes and improvements.

Upgrading projects from 5.3 to 5.4