GlobalLink Connect Cloud for CoreMedia Content Cloud v2512.0.0-1
Approve CMCC v13.2512.0.0.
Summaryโ
- Adapted and approved the connector for use with CoreMedia Content Cloud v13.2512.0.0.
- Updated
com.translations.globallink:gcc-restclientto version 3.1.9. - Introduced Error Prone and NullAway checks and annotations to the code base.
Upgrade Information ๐โ
Java 21 & Maven 3.9.11โ
Aligned with the CMCC v13.2512.0.0 update, we updated the Java version to 21 and Maven version to 3.9.11. You may need to update your development environment accordingly. Where applicable, we adapted the code base to be compliant with Java 21.
Workflow Definitionโ
There is no need to upload the workflow definition again or to trigger
the cm workflowconverter.
GCC REST Java Clientโ
Regarding the update of the GCC REST Java Client API, no adaptations are required within the given code base. You may, though, need to be aware of the changes for your custom adaptations, like if you integrated context upload.
Static Code Analysis Checksโ
The Maven build profile strict-checks has been renamed to gcc-strict-checks
for clear scoping and to avoid collisions with potential other profiles that
ship with the CoreMedia Blueprint. Different to strict-checks the profile is
now disabled by default, as the checks not only increase build time but also
require adapting your code base to be compliant with the checks.
Where required by static code analysis checks, the code base has been adapted.
Studio Client Adaptationsโ
The CoreMedia GCC integration is now aligned with the changes in the Studio Client public API that shipped with CMCC v13.2512.0.0. You may need to adapt your custom Studio Client code base to the changes accordingly.
Improvements โจโ
Enhanced Documentationโ
The documentation now contains an extra hint in context of the Redelivered state, how to manually upload XLIFF via Content App.
GCC REST Java Client Updateโ
The GCC REST Client Java has been updated to version 3.1.9. While no adaptations are required within the given code base, the changes may be interesting for your custom adaptations, like if you integrated context upload.
Add Configuration Option for GCC REST Java Client Retriesโ
GCC REST Java Client introduced more robustness on HTTP-level communication.
This includes internal retries, like when the service is unavailable. While
in general the CoreMedia GCC integration provides its own means of retrying failed
operations (including fallback to user tasks on repeated failure), you may
want to opt-in to the internal retries of the GCC REST Java Client, which can be
configured with the new configuration properties
maxRetriesOnServiceUnavailable and maxRetriesOnRequestErrors.
For easier maintenance, the configuration of GCConfig has been extracted into
a separate class GCConfigUtil (and removed from DefaultGCExchangeFactory).
Added Localization for XLIFF Import Failuresโ
To better assist editors working on workflows where the XLIFF import may fail,
we added a localized error message that is shown in the UI when the import
fails. This includes messages for generally broken XML reported as
INVALID_XLIFF as well as localized strings that exceed the maximum allowed
length in the content type model, which is reported as STRING_TOO_LONG.
Updated Icons to New Icon Designโ
Aligned the GlobalLink workflow icons with the updated icon design that ships with CMCC v13.2512.0.0. See the release note for CMS-28088 for reference.
Removed Invalid ExtJS Referenceโ
Package @coremedia-labs/studio-client.ext.gcc-studio-client has been
renamed to @coremedia-labs/studio-client.gcc-studio-client and the invalid
reference to ExtJS has been removed.
NodeJS and PNPM Updatesโ
Aligned with the CMCC v13.2512.0.0 update, we updated NodeJS to version 24.x and PNPM to version 10.24.x. See the release note for CMS-28547 for reference.
Use PNPM Catalog Protocolโ
Aligned with the CMCC v13.2512.0.0 update, we changed all package dependencies
to packages that are not inside the workspace to catalog:.
See the release notee for CMC-27980 for reference.
Adapted ESLint Configurationโ
Aligned with the CMCC v13.2512.0.0 update, we adapted the ESLint configuration
to refer to the new independently released ESLint configuration. Replaced
.eslintrc.js with eslint.config.js.
See the release note for CMS-27991 for reference.
Adapted to Studio Client Public API Changesโ
Aligned with the CMCC v13.2512.0.0 update, we adapted the code base to the changes in the Studio Client public API. This includes:
- Changing reference of
WorkflowLocalizationtoWorkflowLocalizationConfig.
Introduced Error Prone and NullAway Checks and Annotationsโ
To further improve support for JSpecify nullability annotations, build-time
nullability checks based on the Error Prone static code analysis tool and the
NullAway plugin have been introduced. These checks are not active by default,
but can be activated with the Maven profile gcc-strict-checks. When activated,
the build will fail if any warnings are reported by the checks. To fix reported
warnings, you may need to adapt your code base and add nullability annotations
where required.
The old profile strict-checks that was active by default and could be
deactivated with -DskipChecks is now removed, as we want to make the use of
static code analysis checks an explicit decision.
Code Adaptations: Note that as we enabled the full ruleset of Error Prone checks, there were some code adaptations required to fix warnings reported by the checks. The most common fixes were:
- Extend nullability annotations, especially in the context of generics, where required by NullAway to be able to verify null-safety.
- Reducing the visibility of methods and fields when inconsistent with the class visibility.
- Removed (or explicitly declared) system-dependent dependencies, such as the default ZoneId.
- Better ensured immutability to enumerations and records.
- Added Error Prone annotations where requested like:
@Immutable@FormatMethodand@FormatStringfor format strings and their parameters.
Required New API: The Settings record field properties had an
imbalanced nullability annotation for read and write access (allowing null
for write access but not for read access, as null values got removed at
construction time).
To fix this, we introduced a new API Settings.ofSanitized() that in its
signature allows null values for the properties field, but removes them at
construction time.
Suppress Warnings: If you want to suppress warnings reported by the checks, you can use the
@SuppressWarningsannotation with the appropriate check name, like@SuppressWarnings("NullAway")to suppress NullAway warnings for a specific method or class.
The now irrelevant script check-jspecify-dev.sh has been removed.
Minor Changes ๐งนโ
Screenshots in Documentationโ
Screenshots in the documentation have been updated to reflect the new icons and UI changes.
Cancelation vs. Cancellationโ
Fixed terms from "Cancelation" to "Cancellation" in the documentation and code base for consistency and correctness. Regarding API only the Mock Facade API was adapted. This also applies to the scenario keys.
Hardened Cancellation Test in DefaultGCExchangeFacadeContractTestโ
We adapted our recommended test to provide base confidence that the CoreMedia GCC integration is aligned with the GCC REST Java Client. This affects the cancellation test due to observed flakiness in the test by adding some grace period before triggering the cancellation.
Extended Mock Scenarios for XLIFF Import Failuresโ
To better test handling of invalid XLIFF, new test scenarios have been added:
translation-does-not-exist: A target content is not available anymore to receive the translation update.translate-empty-transunit-target: The XLIFF contains an empty target element, while the source element was not (and thus, we expect a translation).translate-invalid-content-id: The XLIFF contains a content ID that cannot be parsed.translate-string-too-long: The XLIFF contains a translation for a string that exceeds the maximum allowed length in the content type model. (Existed before, but was undocumented.)
Adapted Main README.mdโ
- Updated badges to better reflect the current state and added a prominent link to the documentation in the header section.
- Fixed a broken link in the CoreMedia Labs section.
Adapted .gitignoreโ
- Added exclusion for
*.argsfiles, which are generated by the Error Prone static code analysis checks.
Behind the Scenes โโ
As this is an open source project, meant to be adapted and extended by our customers, it is important that you also know about changes that do not directly affect the functionality but are visible in the code base and may affect your custom adaptations.
Documented Dependency Overridesโ
For the website/ module, mangaging dependency overrides is documented in
DEPENDENCY_OVERRIDES.md.
A new script validate:overrides has been added to validate that all overrides
are still relevant.
GitHub Workflow: pages-deploy.xmlโ
- Hardened GitHub pages deployment, so that it is always only applied from
the
mainbranch and not from any other branches or pull requests. - Updated NodeJS to 24.x
- Updated PNPM to 10.24.x
- Updated GitHub actions to the latest versions.
GitHub Workflow: pages-test-deploy.xmlโ
- Updated NodeJS to 24.x
- Updated PNPM to 10.24.x
- Updated GitHub actions to the latest versions.
GitHub Workflow: validate-pom-parent-relative-path.ymlโ
- Updated GitHub actions to the latest versions.