Skip to main content

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-restclient to 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โ€‹

App: Workflow-Server

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โ€‹

App: Workflow-Server

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โ€‹

App: Studio-Client

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โ€‹

App: Studio-Client

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โ€‹

App: Studio-Client

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โ€‹

App: Studio-Client

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โ€‹

App: Studio-Client

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โ€‹

App: Studio-Client

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โ€‹

App: Studio-Client

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 WorkflowLocalization to WorkflowLocalizationConfig.

Introduced Error Prone and NullAway Checks and Annotationsโ€‹

App: Studio-Server App: Workflow-Server

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
    • @FormatMethod and @FormatString for 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 @SuppressWarnings annotation 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 *.args files, 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 main branch 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.