This chapter contains all changes made in Release 7.5.32 of CoreMedia Digital Experience Platform 8.
Follow the CoreMedia DXP 8 Help Center section to receive release and product announcements automatically.
Modules and Tooling
Release 7.5.32 contains the following CoreMedia modules:
CoreMedia Blueprint
CoreMedia CMS
CoreMedia Studio
CoreMedia Elastic Social
In addition, CoreMedia DXP 8 uses the following tooling:
Product | Key | Version |
---|---|---|
CoreMedia Application Maven Plug-in | APPPLUGIN | 2.7.9 |
CoreMedia Project Maven Extension | PROJEXT | 1.0.5 |
Table 2.14. Tooling of CoreMedia DXP 8
CoreMedia CMS Changes and Improvements
The Freemarker integration now uses the recommended DefaultObjectWrapper as object wrapper. This leads to some changes in using Java objects, especially lists and maps in Freemarker templates. The BeansWrapper mixed map keys with method names with preference to method names. The DefaultObjectWrapper does not leak Java methods. It does not allow to use Java methods of a Map like "get()" and "keys()" directly, but requires you to use Freemarker built-ins. It only allows you to use Strings as keys of a Map.
Here are some examples for required changes for existing templates:
aMap.keySet() => aMap?keys aMap.size() => aMap?size aMap.get(key) => aMapkey
The newly configured implementation is more strict about the used syntax. E.g. if your bean is a list (or sequence in Freemarker), you need to use the built-in "?seq_contains", not "?contains". It does not allow you to compare beans of different types, e.g. a list with a string. For more information look at the Freemarker documentation.
(CMS-4167)Artifacts base-nonblocking-component and cae-nonblocking-component are removed. Use base-component and cae-base-component instead. The asynchronous loading classes (servlet, filter and context loader) are configured in those base components but can be disabled at runtime using servlet context init parameter, JNDI parameter, system property or system environment parameter com.coremedia.springframework.web.context.disableAsynchronousLoading
(CMS-4165)The index field
htmlDescription
has been added to the Solr schema.xml for the Blueprint CAE Feeder. This field contains the value from the CMTeasable document property with the same name and can be used for search result highlighting.The field name has also been added to the constants defined in
(CMS-4119)com.coremedia.blueprint.cae.search.SearchConstants.FIELDS
The Freemarker Library was updated to patch version 2.3.23. See Changelog for more informations: http://freemarker.org/docs/versions_2_3_23.html
(CMS-3989)Several
cm
command line tools have been enhanced to respect UAPI queries for content selection. The changes apply to:cm query
cm cleanversions
cm publish
cm approve
cm destroy
(CMS-2533)-cq | --contentquery <query>
To select contents by a content query
-vq | --versionquery <query>
To select contents by a version query (not supported by all clients).
-R | --recyclebin
Select contents in the recycle bin (not supported by all clients).
-l | --limit <limit>
Limits the objects to run the client on.
-I | --id <id>
Convenience parameter to explicitly select by id. Usage of this parameter is encouraged if you want to mix selection by id with other selection parameters.
-t | --path
Selection via path.
All content selection parameters are ORed, thus you can for example select some contents explicitly by id and others by even multiple queries.
cm approve
hid the verbose parameter because it uses\-v
for specifying versions. In order not to break existing scripts a workaround for verbose flag has been added tocm approve
: Use-V
instead. Of course\-\-verbose
works, too.To run unified API queries the new parameters
-cq
and/or-vq
should be used instead. The old parameter has been kept for backward compatibility and only the arguments of-q
will be respected if you want to translate legacy queries to UAPI queries.To straighten the behavior of
-q
versus for example-cq
you can now also hand multiple legacy queries at once tocm query
to translate (and possibly execute).$ bin/cm query -u Adam \ -vq "TYPE Document_" \ -cq "TYPE Folder_" \ --recyclebin \ --limit 10
Lists all document versions, all folders and all contents of the recyclebin with up to 10 results.
$ bin/cm cleanversions -u Adam \ -cq "TYPE Document_ : NOT BELOW PATH '/Excluded'"
Will run clean versions on all documents despite those in path
/Excluded
. Mind that because ofcleanversions
default behavior to traverse folders recursively you can prevent possibly unexpected results by explicitly selecting documents only inside the queries (as seen in the example above).For more information consult the Contentserver Manual.
CoreMedia Studio Changes and Improvements
The demo content contains a setting OpenCalais which contains the configuration for the OpenCalais service. This setting contains a struct named "openCalais" which contains optional sub structs "apiKey" and "apiUrl". This setting overwrites the given OpenCalais configuration defined in properties files when it is linked to a site.
(CMS-4290)Thomson Reuters Open Calais does not longer support its legacy OpenCalais service. In order to support this integration in Blueprint further on, the new API is supported now. The j-calais third party library has been removed completely.
(CMS-4233)The "external-library" studio plugin has been refactored into a real blueprint-extension.
(CMS-4200)removed blueprint struct editor password field and struct-editor-rest-extension
(CMS-4186)The method
(CMS-4084)getMasterVersionNumber()
ofcom.coremedia.cms.editor.sdk.sites.SitesService
will now return0
instead of-1
when no master version exists.
CoreMedia Blueprint Changes and Improvements
Chef v12 updates as of August 2015
(CMS-4266)CoreMedia strongly recommends to use Chef Development Kit 0.7.0 or later (a major version bump to 1.0 coming soon)
The preconfigured Chef Client in our Vagrant test setup is now 12.4.1 (bundled with Chef DK 0.7.0)
A dedicated Chef Server 12.1.2 or later is recommended for production deployments
A dedicated private Chef Supermarket server 2.0.0 or later is recommended to improve your Chef Cookbook release process
The plugin had only one class that has been moved to the blueprint-form studio plugin.
(CMS-4262)CMLinkable gets a new string property called "htmlTitle" which describes the text to be rendered for the "title" tag/to be displayed for the browser tab.
If no value has been defined, the "title" property value will be used as fallback.
(CMS-4049)Vagrant 1.7 and Virtualbox 5.0 updates as of August 2015
(CMS-3190)CoreMedia recommends to use Virtualbox 5.0.2
The preconfigured test setup requires Vagrant 1.7.4 and uses the updated CentOS 6.7 coremedia/base box 1.16 (https://atlas.hashicorp.com/coremedia/boxes/base)
Required Vagrant plugin versions are now checked automatically
Please refer to the Vagrantfile for the required plugin versions and further details
CoreMedia Elastic Social Changes and Improvements
The Elastic Social Studio Plugin now contains information about the number of comments and users that require information. You also get information about the number of comments that are online and the number of activated users. These numbers are calculated using the configured search engine. You need to reindex the search indexes 'comments' and 'users' using JMX. Please see the Elastic Social manual for further instructions.
(CMS-3721)
Miscellaneous Changes and Improvements
Added property
lc.contracts.processing.enabled
to LC CAE component. Defaults to true to support B2B scenario. Set to false to disable contract processing.
(CMS-4325)The FragmentConnector's "environment" parameter (determing a concrete CMS site, instead of a lookup by storeId and language) can now be set on a per-store basis in the STORECONF table. For example you set the environment to "site:Aurora" for Store with ID 10303 by using: INSERT INTO WCUSER.STORECONF (STOREENT_ID, NAME, VALUE, OPTCOUNTER) VALUES (10303, 'com.coremedia.fragmentConnector.environment ', 'site:Aurora', 0); Do not forget to refresh the IBM WCS Storeconf Registry (see http://www-01.ibm.com/support/knowledgecenter/SSZLC2_7.0.0/com.ibm.commerce.admin.doc/tasks/ttfregistry.htm?lang=en) afterwards or restart your WCS.
(CMS-4323)Guava (
(CMS-4321)com.google.guava:guava
) got updated from 14.0.1 to 18.0. If you happen to have used Guava in your project you might experience migration efforts as some Guava API has changed, as for exampleStopwatch
andObjects
. The latter one especially deprecates methods which are either replaced byjava.util.Objects
or Guava'sMoreObjects
. For a complete list please refer to Guava's change notes.The pageId parameter for the lc:include tag can now be overwritten from within a JSP file. If omitted, the pageId is automatically retrieved from the current URL, as before.
(CMS-4305)The recommended way to use custom fragment keys in the CAE Feeder or in Persistent Cache applications is to wrap calls to
PersistentCache#get
with such a key in an in-memoryCacheKey
. The Blueprint implemented this pattern for the CAE Feeder in classcom.coremedia.blueprint.caefeeder.WrappedPersistentCache
of modulecaefeeder-lib
.The
WrappedPersistentCache
class and its Spring beanwrappedPersistentCache
have been removed now and replaced with functionality of the core Persistent Cache implementation. To this end, the new extended interfacecom.coremedia.cap.persistentcache.PersistentCache2
provides the methodgetCached
, which basically callsPersistentCache#get
but wraps the call in an in-memory cache key just as theWrappedPersistentCache
did before. The Spring bean with namepersistentDependencyCache
implements the newPersistentCache2
interface.The standard Blueprint has been adapted to use
(CMS-4129)PersistentCache2
instead ofWrappedPersistentCache
. However, if you useWrappedPersistentCache
in your own code, you should change it to callPersistentCache2#getCached
instead, or alternatively keep theWrappedPersistentCache
implementation from the previous Blueprint version in your workspace.com.coremedia.cap.content.ContentRepository
The interfaceContentRepository
provides a new methodcopyCheckedInVersionsRecursivelyTo(...)
, which copies the latest checked-in versions skipping content that has never been checked-in.com.coremedia.cap.content.results.CopyResultItem
The classCopyResultItem
provides the new methodgetVersion()
that allows to retrieve the version of the source content which the content has been copied from.The Corporate Blueprint provides website search functionality now. It supports searching for pages based on page grids of CMChannel documents. To this end, the CAE Feeder is configured to feed parts of the page grid with CMChannel documents.
The CoreMedia 8 manual describes website search in a new section in the "CoreMedia 8 Corporate Blueprint" chapter.
(CMS-3929)The "quick create" dialog in Studio suggests a folder for the new content item - this was previously determined by a property in the bundle files. Thus, you could only have one default target folder per document type, which would apply to all sites in the system. Therefore, when you have differing folder layouts for different sites, the suggested path wouldn't be very helpful.
Therefore, you can now specify a default folder per document type on a site-level. To that end, create a setting in
(CMS-3757)<site_root/Options/Settings/Content Creation
named according to the patternpaths.<document_type_name>
which, when present, will override the default folder from the properties bundle
Fixed Issues
CMS-4291: LC2 only uses language and ignores Locale in Communication with IBM WCS
The CoreMedia-custom LanguageMapHandler (REST) on IBM Commerce side and the Store Context on CMS side now use the locales (country and language) from IBM Commerce LanguageRegistry instead of languages, only. Thus you can have two different Sites in CMS for the same store (e.g. 10301), one with locale en_GB and one for en_US.
CMS-4168: Taxonomy still includes old SAP tags
Removed unused Taxonomy tags "Monitors", "Notebook", "Printers", "Software" and "Content Class"
CMS-4163: "Editorial Blog" teaser on Aurora B2C Women's Apparal Page shows non-editorial content
Editorial Blog" teaser on Aurora B2C Women's Apparal Page now only shows Content tagged with "Apparel
CMS-4145: Remove extras parameter for cm.include
Removed the
extra
parameters of the Freemarker macroscm.include
andcm.hook
. Use the "params" parameter to add any additional parameters.CMS-4133: cms worksapce build fails on corporate-theme module because of npm dependency
Update
node.js
to latest version 0.12.7 andnpm
to 2.13.4 in corporate-theme.CMS-4130: PersistentCache API RevalidatingFragmentPersistentCacheKey
The signature of method
getBytesForHashing
in classcom.coremedia.cap.persistentcache.RevalidatingFragmentPersistentCacheKey
has been fixed to match the generics type parameter of the interface.CMS-4047: ExternalLink has no validator for url
Add validator in Studio to check for empty property url of CMExternalLink.
CMS-3876: Upload Files fails with "Not enough storage is available to complete this operation." and freezes afterwards
Added error handling for possible preview error caused by insufficient memory.
CMS-3809: Sitemaps
Sitemap generation had been a little untended over the last few releases and was recently working only for one site of the Blueprint. In order to support sitemaps for multiple sites, we had to rework the sitemap package in the blueprint quite largely. The major benefits are:
Out of the box sitemaps for all perfectchef and corporate sites.
Automatic robots.txt entries, no content configuration required any longer.
Easy activation of sitemaps for new sites, requires only one string setting at the root channel, no more subtle request parameters.
The cron job to generate the sitemaps has been replaced by a CAE internal scheduled executor, which reduces deployment complexity.
For details see the Sitemap section in the Platform Developer Manual.
CMS-3374: Custom Inline Styles
Handling of custom inline styles such as font-size, color in the rich text editor has been improved. The current style is correctly shown as the selected menu item, and "remove" is only enabled when there a style is currently defined.
CMS-3129: Create tomcat temporary folder also on rpm update
If the temporary folder for tomcat, by default
/var/tmp/coremedia/<APPLICATION_NAME
was deleted before an update, the update process was not recreating it. Now the folder will be recreated in any postinstallation case.CMS-2976: Change source-token JAVA_HOME to CM_JAVA_HOME
To prevent jenkins jobs configured as maven projects to replace
@JAVA_HOME@
with the JAVA_HOME configured in Jenkins, the source-token has been renamed fromJAVA_HOME
toCM_JAVA_HOME
. The Chef and RPM configuration facade is not affected by this change as the target-token remainsconfigure.JAVA_HOME
. Only projects that use preconfigured artifacts need to change theirJAVA_HOME
value toCM_JAVA_HOME
inpackages/src/main/filters/preconfigure.properties
.CMS-1154: Using RedirectAttributes
The Content Application Developer Manual describes in section Working with Forms how to preserve attributes on a redirect using
RedirectAttributes
.Unfortunately, as soon you use this pattern, LinkHandlers cannot be selected by type anymore. This is because of the behavior described in Spring Bug SPR-10516 that all objects in ModelAndView get transformed to Strings very early in the redirect process as soon as you make use of the
RedirectAttributes
.You might experience two consequences:
the redirect will cause a 500 Internal Server Error if the bean cannot be transformed to a String
LinkHandler filtering by type does not work anymore as the bean will be of type String.
To get around this the section mentioned above got extended by a note which describes an approach using the newly introduced method in
HandlerHelper
:redirectBuilder(bean)
. Mind that in addition to this (also described in the note) you might need to add a converter tobindingConverters
to prevent the Internal Server Error.