CUBA Platform Changelog
Version 6.2.8
Bug fixes, including:
- Records move down in table linked to a NestedDatasource on opening an editor.
LookupField
starts to close uncontrollably after a few fast clicks.
OptionsGroup
resets value on setOptionsDatasource()
.
- Unable to import folders if the application is deployed in single WAR.
- The
permittedExtensions
attribute of FileUploadField
is case-sensitive.
- Combination of
defaultMode="fts"
and "default filter" doesn't work properly in Filter
.
- Incorrect _minimal view in case of deep nesting.
- [BPM] NPE when completing a task that was claimed before.
- [Charts and Maps] Default settings for
SerialChart
are not applied for GanttChart
.
Improvements:
- Ability to use application properties for shortcuts of declarative actions, for example:
<action id="apply" caption="msg://applyFilter" invoke="filterApply"
shortcut="${cuba.gui.filterApplyShortcut}"/>
- Added Ctrl-Enter shortcut to
BulkEditor
.
Version 6.2.7
Bug fixes, including:
- ClassCastException on deletion of entity which has a collection attribute and cascade deletion is set for both collection and inverse attributes.
- XLS report does not work if application is deployed in single WAR beause of extra poi-3.9 included.
- ClassCastException occurs when importing a report if the application is deployed in single WAR.
- Incorrect insert script for
sys$CategoryAttr
is shown in System Information window.
- Wrong number of instances in
LookupPickerField
after scrolling.
Version 6.2.6
Improvements, including:
- Localized labels and tooltips in
RichTextArea
panel.
- [BPM] The
getProcInstance()
method has been added to ProcActionsFrame
.
Bug fixes, including:
- Multiple joins in a datasource query filter don't work.
- JPQL delete query is transformed incorrectly.
- Delete policy and entity listeners may not be executed if some listener loads additional entities from the database.
- Database update command line utility based on the
DbUpdaterUtil
class does not work.
ClassCastException
when opening Application Properties screen if application is deployed to single WAR.
- On the Application Properties screen, changed value of property is reverted after clicking Refresh.
- [Charts and Maps] Unable to add titles for charts.
- [Charts and Maps] Google Maps display warnings or doesn't work in some environments.
If you use maps, change the following application properties in your project:
- Rename
charts.map.freeApiKey
property to charts.map.apiKey
.
- Remove
charts.map.businessApiKey
and charts.map.useBusinessApiKey
properties.
Version 6.2.5
Improvements, including:
- Dynamic attributes: ability to set field width for all types and number of rows for the String type.
- [Reporting] Run Reports screen in dialog mode now has a specific size and is resizable.
Bug fixes, including:
- When copying access groups, constraints are copied incorrectly.
- Uploading files to Amazon S3 does not work in case of remote service invocations.
- Entity listeners are not invoked on implicit flush when executing a query.
DataManager.getCount()
does not work correctly if there are security constraints checked in memory.
- JPQL query with "not exists" and base entity name is transformed incorrectly.
- Error if a JPQL query contains
@enum
macro in brackets.
- Column caption is set instead of description when setting description for
Table.Column
in a screen controller.
TabSheet.getTabs()
returns a collection without specific order.
Version 6.2.3
Improvements, including:
LookupField
drop-down list scrolling usability on touchpad and touch devices.
- Add
afterLookupCloseHandler
and afterLookupSelectionHandler
to TokenList
for singleMode="false"
.
- Log user session expiration and removal.
Bug fixes, including:
- Screen links do not work properly, if the application is deployed to the ROOT context of a server.
Embedded
web content does not respond to keyboard and mouse.
TabSheet
listener for lazy tab is called before call to tab's frame controller init()
method.
- Fix title case of platform screens in English locale.
- [Reporting] Parameter name is validated instead of parameter alias.
Version 6.2.2
Improvements, including:
AddAction
now supports AfterAddHandler
, ExcludeAction
invokes AfterRemoveHandler
.
- Ability to add a column to
Table
programmatically.
- [Reporting] Option to not override existing report roles when importing report.
Bug fixes, including:
- Paging in tables does not work when using in-memory security constraints.
- Incorrect displaying of popups in tables.
- Table settings button sometimes covers sort direction icon.
- Transparent text in
LookupField
if it is enabled by its parent.
- Wrong SQL script is generated in the System information > Script for insert for boolean attribute on MS SQL.
- Exception when pressing Download button on the Server Log screen second time.
- NPE when specifying incompatible type in aggregatable tables.
- StackOverflowError in
ScheduledExecution.toString()
.
- Tomcat throws
ClientAbortException
on browser disconnect.
- Warning from Atmosphere framework in the server log on stock Tomcat. To fix the problem in an existing project, do the following in
modules/web/web/WEB-INF/web.xml
:
- Add listener:
<listener>
<listener-class>com.vaadin.server.communication.JSR356WebsocketInitializer</listener-class>
</listener>
- Add
async-supported
element to CubaHttpFilter
:
<filter>
<filter-name>CubaHttpFilter</filter-name>
<filter-class>com.haulmont.cuba.web.sys.CubaHttpFilter</filter-class>
<async-supported>true</async-supported>
</filter>
- [Charts] Incremental add/remove operation after/before refresh can lead to duplicated items in a chart.
- [Reporting] Lookup screens for report input parameters are broken.
- [Reporting] ClassCastException in Show Charts screen when displaying a chart report.
Version 6.2.1
Improvements, including:
- Remember last used language on login window of the web client.
- Show progress of uploading of WAR files to Jelastic.
Bug fixes, including:
UnsupportedOperationException
when using RuntimePropertiesFrame
.
- Multiple WAR building task fails.
- [BPM] Wrong order of the database update scripts for stencilset table and index creation.
Version 6.2.0
This is the first public release of platform version 6.2. All significant changes from version 6.1 are listed below.
- Breaking changes:
- Renamed classes:
Convertor
> Converter
JSONConvertor
> JSONConverter
XMLConvertor2
> XMLConverter2
- The
beforeActionPerformedHandler
and afterActionPerformedHandler
properties of standard list actions (CreateAction
, EditAction
, etc.) have been removed. The new beforeRefreshHandler
and afterRefreshHandler
properties have been added to RefreshAction
.
- Support for entity cache. See documentation for details.
- When loading entities through
EntityManager
, all local attributes are loaded regardless of what is specified in a view. The view affects only reference attributes. It eliminates all problems with accessing attributes in entity listeners and in arbitrary business logic executed inside a transaction.
- Support for MySQL v.5.6. Previously only v.5.7 was supported.
- Non-default database schema can be used on PostgreSQL and Microsoft SQL Server. See documentation for details.
- Middleware cluster improvements:
- Load on cluster communication from transferring user sessions has been greatly reduced.
- The
app-core.cuba:type=ClusterManager
JMX bean can display the number and size of sent/recieved messages and the shared state size.
- You can limit the cluster messages queue using the
cuba.cluster.messageSendingQueueCapacity
application property.
web.xml
version is now 3.0.
- The background tasks mechanism uses HTTP push instead of polling.
- The platform now prevents the access to the state of UI components from a non-UI thread:
IllegalConcurrentAccessException
is thrown in this case. The UIAccessor
interface can be used to circumvent this restriction and update the state of UI components from a background thread.
- Protection from brute-force password cracking. See documentation for details.
- The platform now contains a mechanism for gathering runtime statistics of screens opening: see Administration > Screen Profiler. So you can quickly determine, what screens for what users are opened too slowly. The profiler displays the time spent on server, network latency and client (web browser) rendering time for each opened screen.
- Application properties stored in the database are temporarily cached in Web Client and Web Portal blocks for reducing the middleware invocations. The cached values are refreshed once in a minute. It means that when you change a property at runtime, it will be available to the Web Client and Web Portal blocks not immediately, but not later than in 1 minute.
- Some UI issues on touch devices have been fixed.
- Main window tabs can be moved by using drag-and-drop.
- Almost all visual components now have
icon
attribute.
- Menu items can have
stylename
attribute. See documentation for details.
Component
interface now has unwrap()
and unwrapComposition()
for obtaining underlying Vaadin or Swing components.
- Export to Excel can display aggregation results and counts of grouped records.
Table
component correctly handles aggregation for editable columns.
- Filter custom conditions can include special symbols using
escape 'char'
expression. See documentation for details.
- The
Embedded
component in Web Client can display files located inside VAADIN
folder. See setRelativeSource()
method.
- The
setFocusable()
method of buttons (Button
, LinkButton
, PopupButton
, RelatedEntities
) can be used to bypass the component when a user traverses a screen by the TAB key.
- The
pageLength
attribute of the LookupField
and LookupPickerField
components allows you to redefine the number of options on one page of the drop-down list, specified in the cuba.gui.lookupFieldPageLength
application property.
- The
permittedExtensions
attribute of the FileUploadField
and FileMultiUploadField
components can be used to set permitted extensions of uploaded files. If the attribute is set, users will not be able to upload files with not permitted extensions.
- CORS settings can be set for REST API. See documentation for details.
- Thymeleaf template engine is now supported in the
portal
module in addition to FreeMarker.
- Standard Java serialization is used by default. See cuba.serialization.impl application property.
- [BPM] Custom stencils in BPM designer. See documentation for details.
- [BPM]
ProcActionsFrame
initialization has been simplified. See BPM quick start for details.
- Upgraded dependencies:
- Tomcat 8.0.35
- Spring Framework 4.2.5.RELEASE
- Spring Security 4.0.4.RELEASE
- JavaEE API 7.0
- Vaadin 7.6.6
- HttpClient 4.5.2
- Jsoup 1.8.3
- [BPM] Activiti 5.20.0
- [Charts and Maps] AmCharts 3.20.3
- Over 100 other bug fixes and improvements.
Upgrading projects from 6.1 to 6.2
- Run automatic upgrade in Studio (version 2.2+ is required) by selecting the new version in Project properies > Base projects > Platform version.
- Run update database scripts either in Studio by executing Run > Update database, or in command
line by executing
updateDb
Gradle task.