Release Notes / Version 11.2310
Table Of ContentsGraphQL Java Libraries Updated to Version 17.3
These libraries have been updated:
com.graphql-java:graphql-java
from 16.2 to 17.3com.graphql-java:graphql-java-extended-scalars
from 15.0.0 to 17.0com.graphql-java:java-dataloader
from 2.1.1 to 3.1.1
Follow Section, “GraphQL Java Libraries Updated to Version 17.3” for upgrade information.
(CMS-20151)
Swagger Updated to Latest Version
Swagger and the related libraries were updated for maintainability
reasons. The updates made some refactorings necessary. As a
consequence, the previously public api package
com.coremedia.caas.web.rest
has been revoked, as it
doesn't contain any classes anymore. The previous public 3rd party
package springfox
has been revoked also, as the
CoreMedia classes do not expose the Springfox annotations are anymore.
Follow Section, “Swagger Updated to Latest Version” for upgrade information.
(CMS-19836)
Refactoring of Adapters
Due to an internal refactoring, some of the adapters used in the content-schema had to be refactored as well. Where possible we tried to be non breaking. Nonetheless some changes lead to breaking changes in the content-schema:
byPathAdapter
pageGridAdapter
commerce extension: productPageGridAdapter
commerce extension: categoryPageGridAdapter
Follow Section, “Refactoring of Adapters” for upgrade information.
(CMS-19796)
Filter Predicates May Now Access the DataFetchingEnvironment
Filter predicates were formerly a simple Predicates. They now use a dedicated interface which marks them as ExtensionPoints and they act as a BiPredicate.
(CMS-19769)
Headlless Server Deprecations for CoreMedia CMCC 11
These previously announced deprecations were carried out with the major release of CoreMedia CMCC 11:
Site Query: The deprecated parameter 'id' was removed from content-schema in favor of the new parameter 'siteId'
JsonPreviewUrlController / Preview Url Endpoint (/previewUrl) was removed. JsonPreviewUrlController calculated the url for the json preview in studio. The url calculation was moved to studio server, where it is now part of the multi preview configuration.
Method removed from SolrQueryBuilder: getSortFieldMapping() was removed
Method removed from SearchQueryHelper: validFromQuery() was removed and replaced by validFromPastToValueQuery()
Method removed from SearchQueryHelper: validToQuery() was removed and replaced by validFromValueToFutureQuery()
Method removed from ContentRoot: getSite(DataFetchingEnvironment environment) was removed and replaced by ByPathAdapter.getSite(@Nullable String siteId, @Nullable String rootSegment)
Config Property Removed: 'caas.cacheCapacities' - Cache capacities can be configured instead via com.coremedia.cache.config.CacheConfigurationProperties
(CMS-19685)
New Feature: Plugin Extension Point FilterPredicate
With the new extension point FilterPredicate it is possible to add filter predicate via the means of a plugin. This change is considered breaking, as customers/implementers have to use the new interface FilterPredicate instead of the more generic Predicate<Object>. FilterPredicate is just a marker interface, so the necessary changes are minimal.
(CMS-19641)
AbstractDynamicListAdapter#getItems and SearchServiceAdapter#search now return DataFetcherResults
AbstractDynamicListAdapter#getItems and SearchServiceAdapter#search now return a DataFetcherResult, which wraps data and error information. This enables a uniform way to transfer information about errors from the backend to the client via the errors field in the GraphQL response.
(CMS-19428)
Removal: Deprecated Headless API for Commerce Entities
The old commerce schema extension of the CoreMedia Headless Server was deprecated in 2101 and is now removed.
Follow Section, “Removal: Deprecated Headless API for Commerce Entities” for upgrade information.
(CMS-19322)
Removal of ViewBySiteDataFetchingEnvironment, Public API Changes of RemoteLinkWiringFactory and RemoteLinkDataFetcher
The class ViewBySiteDataFetchingEnvironment
has
been removed. Use builder of
DataFetchingEnvironmentImpl.newDataFetchingEnvironment()
instead. The RemoteLinkWiringFactory
and the
RemoteLinkDataFetcher
take a
remoteLinkDataLoader
as constructor argument. The
method CaasWebConfig#getForwardHeaderMap
has been
removed. Retrieve the map from the environment context instead.
(CMS-19155)
Addition: New RichText Type to Encapsulate the Different Representations of Richtext
Introduced a new RichText type in the schema to encapsulate the
different representations of RichTexts, like text as tree and linked
contents in RichText. The old fields are deprecated and moved into the
new type. The field detailTextLegacy
and
teaserTextLegacy
were intruduced to provide easy
access to the former behavior of the detailText
and
teaserText
fields.
(CMS-19107)
Changed Configuration Properties
The following configuration properties have changed and are now
defined in the class
CaasSearchConfigurationProperties
:
caas.graphql.max-search-limit
changed tocaas.search.max-search-limit
caas.querylist-search-cache-for-seconds
changed tocaas.search.cache.querylist-search-cache-for-seconds
caas.solr.collection
changed tocaas.search.solr.collection
Follow Section, “Changed Configuration Properties” for upgrade information.
(CMS-19076)
Ordered Content Schema
The content-schema file was ordered alphabetically by types, in order to raise the readability of the schema. Since the changed order does not change the code, this change does not break directly. However, customers who changed the content schema directly in that file (Blueprint), will most likely encounter a merge conflict.
(CMS-19071)
Site Query by Root Segment
Starting with 2104.1, the site query now additionally supports'rootSegment' as a query parameter as an alternative to 'siteId'. The new feature is considered breaking, if the pageByPathAdapter was used! PageByPathAdapter was renamed to ByPathAdapter and the implementation to fetch a site object was moved there. The old implementation in ContentRoot was deprecated.
(CMS-18930)
Loading of Persisted Queries from Plugins
Headless server supports loading resource files containing persisted query definitions from the content of plugins.
Follow Section, “Loading of Persisted Queries from Plugins” for upgrade information.
(CMS-18315)
Content Types in Search are Now Validated
While searching, non existent content types were simply ignored, leading to the situation, that the search wasn't restricted to any content type at all. As this behavior led to bigger result set than expected and may hide bugs on the client side, a content type validation was introduced. Whenever an invalid, non existent content type is given, headless will respond with one GraphQL error message per invalid content type.
Follow Section, “Content Types in Search are Now Validated” for upgrade information.
(CMS-17298)
CMProductTeaser change in headless
CMProductTeaser#teaserTarget and CMProductTeaser#teaserTargets always return null since only the CMProductTeaser#productRef should only be used. The teaser target can not be set in Studio anyways.
Follow Section, “CMProductTeaser change in headless” for upgrade information.
(CMS-20193)
Headless Commerce: Remove Autocompletion for Breadcrumb Parameter
The breadcrumb parameter is not completed automatically anymore, if
the category "root
" is missing. Make sure
that the breadcrumb parameter contains all categories from leaf to
root category, including the root category itself.
Follow Section, “Headless Commerce: Remove Autocompletion for Breadcrumb Parameter” for upgrade information.
(CMS-20085)
New field keywordsList
Introduce a new field keywordsList which returns a list of keywords
(CMS-20014)
JsonPreviewClient was refactored to Spring AutoConfiguration
The JsonPreviewClient was refactored to use Spring AutoConfiguration.
As a consequence class
com.coremedia.blueprint.headlessserver.JsonPreviewClientConfig
was removed from blueprint. The removal is breaking, if
JsonPreviewClientConfig
was adapted by developers.
If not, the change is non-breaking, as
JsonPreviewClientConfig
only contained a component
scan which was replaced by the new AutoConfiguration.
(CMS-19941)
Removal: ViewMapperConfig Class
The Spring Configuration class
com.coremedia.caas.web.ViewMapperConfig
was removed
from from public API. The change didn't affect any configuration
properties. The config was meant to expose the existing view mappings
during runtime, as the mapping may change during runtime by editing,
removing or deleting the homepage of a site. As a configuration class
is not meant to expose dynamic runtime data, the class was refactored.
The mappings can now be acquired via an actuator at
/actuator/siteRestrictedEndpoints
.
(CMS-19885)
Aligned Behavior of StructAdapter to Same as in SettingsAdapter
When querying for a settings path via StructAdapter, the behavior varied from the one implemented in SettingsAdapter. The behavior of the StructAdapter was now aligned to the behavior of the SettingsAdapter. The documentation was updated accordingly.
(CMS-19452)
Default Java heap for Headless Server reset to 1 GB in Dockerfile
This change only affects customers coming from CoreMedia versions 2101.1, 2101.2 and 2101.3 who use the Docker deployment. The default Java heap for the Headless Server has been reset from 2048m to 1024m in the Dockerfile of the Headless Server. The Java heap can, but does not have to be increased for performance optimization.
(CMS-19210)
Headless Server Schema Changes
Replace the usage of Locale::toString
with
Locale::toLanguageTag
for the locale fields. This
changes the behavior of the locale-field of the Site and CMLocalized
types by changing the format of the locale field. Additionally
removing the deprecated "languageId" field from the Headless
Server schema.
(CMS-19096)
Support ContentBlobLinkComposer in RichText conversion
Added the ContentBlobLinkAdapterFactory
to the
EvaluationContext
to be able to use the
ContentBlobLinkComposer
in
RichTextConversion
(CMS-19055)