broadleaf:
translation:
common:
chunk-size: 500
Made the interface TranslationRepository
extend TrackableRsqlFilterExecutor
in order to use the RSQL service methods.
Fixed an NPE when attempting to map a translated value into an object within an embedded map collection where the untranslated object is null.
In particular, this was seen for Product Attributes when then Attribute was null in the default locale but had a translation added in a different locale.
The error message seen in the logs was java.lang.NullPointerException: Cannot invoke "Object.getClass()" because "projection" is null
The fix allows missing entries (e.g., an Attribute) in maps to be instantiated and populated for the sake of translations.
Added support for simple map fields to be translatable.
The translation path mapping has been updated to support both simple attributes maps, such as Map<String, Object>
, as well as already supported complex sub-object maps, such as Map<String, Attribute>
.
Multiple user translation creates for the same field can result in duplicates when deployed
Now detect duplicate creates for the same translation target at deployment and archive all but the latest
Fixed NPE thrown when rejecting promoted changes for creating translations
Improved extension accessibility for JpaCustomizedTranslationRepository
by making getManagedType()
protected instead of private
Fixed potential query parameter overflow by paging narrowed translation results
JpaTranslation
defaults inherited behavior to itself in the case it does not have an entityType
.
Added support for configuring the chunk size when fetching entity translations by entityType
and list of entityIds
.
This can be configured via the following property:
broadleaf:
translation:
common:
chunk-size: 500
As of Broadleaf Release Train 2.0.0-GA, all common libraries have been upgraded to Spring Boot 3.
This version includes all changes up to 1.7.3-GA
Added support to get a count of non-production translations matching entity and tenant
This is useful to determine if there are outstanding sandbox changes before an entity can be deleted. For example, this is used for checking if any outstanding sandbox changes exist for Product translations before the Product can be deleted.