2.2.3. Release 7.5.42

This chapter contains all changes made in Release 7.5.42 of CoreMedia Digital Experience Platform 8.

[Note]Note

Highlights in this Release

  • Pagegrids for PDPs now leverage inheritance

  • Optimized image delivery

  • Updated third party libraries (e.g. Spring Social, Spring Security, Tomcat, Node, npm)

  • Fixed issues and optimizations

Follow the CoreMedia DXP 8 Help Center section to receive release and product announcements automatically.

Modules and Tooling

Release 7.5.42 contains the following CoreMedia modules:

  • CoreMedia Blueprint

  • CoreMedia CMS

  • CoreMedia Studio

  • CoreMedia Elastic Social

In addition, CoreMedia DXP 8 uses the following tooling:

ProductKeyVersion
CoreMedia Application Maven Plug-inAPPPLUGIN2.7.9
CoreMedia Project Maven ExtensionPROJEXT1.0.5

Table 2.3. Tooling of CoreMedia DXP 8


CoreMedia CMS Changes and Improvements

  • Added a configuration option for the Studio web application to disable the groups filter query in Solr search requests: studio.rest.searchService.useGroupsFilterQuery=false

    Normally, you do not need to set this option. It's recommended to not disable the groups filter query in search requests. However, if you've changed the default Content Feeder configuration and set feeder.indexGroups=false, you may disable the groups filter query with the new option because the filter query does not have an effect in that case.

    (CMS-5812)
  • Serverexport now omits masterVersion property if translation state is set in order to avoid irrelevant diffs on exported content. The specific number of the master version does not matter, because it is overwritten after import.

    (CMS-5806)
  • The thirdparty library Apache Tika has been updated from version 1.7 to version 1.13. Apache Tika is used for text and meta-data extraction from binary formats, for example in the Content Feeder and CAE Feeder.

    The update fixes a security vulnerability that exists in older versions of Apache Tika: CVE-2016-4434: Apache Tika XML External Entity vulnerability

    As part of this update, the following transitive dependencies of Apache Tika had to be updated as well:

    • commons-codec from 1.9 to 1.10

    • commons-compress from 1.8.1 to 1.11

    • gson from 2.2.2 to 2.2.4

    • metadata-extractor from 2.6.2 to 2.8.1

    • org.json:json from 20131018 to 20140107

    • pdfbox from 1.8.8 to 2.0.1

    • poi from 3.11 to 3.15-beta1

    Apache Tika has lots of transitive dependencies for various binary formats. To restrict the total number of libraries in the classpath, we've excluded transitive dependencies for less common formats, that were newly introduced with Apache Tika 1.13. For details, have a look at the dependency management in cms-thirdparty-bom/pom.xml.

    (CMS-5805)
  • Merged resources contained in cae-component-shared-resources into cae-component.

    (CMS-5734)
  • Loading of component (identified by the name of their component XML or properties file) can be prevented by passing 'components.disabled=X' to the application where X is a comma-separated list of component names. Introduced base class com.coremedia.springframework.web.ComponentWebApplicationInitializer for components that set up servlet listeners, filters or servlets. When converting web-fragments to subclasses of ComponentWeApplicationInitializer, ordering can be defined using spring's Order annotation but no longer via relative ordering by name. WebApplicationInitializers can be used along with web fragments and are initialized before web-fragments.

    (CMS-5695)
  • The pagegrid for PDPs inherits their placement contents from the root channel even if there is no "pdpPagegrid" struct property in the root channel. That means it is no longer necessary to define header and footer contents twice (typically done on the content tab and on the product content tab of the augmented root category).

    (CMS-5648)
  • Some JavaScript or CSS frameworks only ship in a compressed package and as such there is no need to compress them twice. There are also some frameworks which are not compatible with the compressor used by CoreMedia. Consequently we have added an option to the JavaScript and CSS premulars of the Studio that allows disabling compression for certain documents.

    (CMS-5152)
  • Reduced default JPEG compression quality from 95% to 80% for smaller images without visible changes.

    (CMS-4192)
  • Added description on how to access a Freemarker facade from the templates.

    (CMS-3646)
  • The FeedablePopulator implementation com.coremedia.cap.feeder.populate.PropertyPathFeedablePopulator can be used to configure indexing of specific nested struct property values in the Content Feeder and CAE Feeder.

    (CMS-3278)

CoreMedia Studio Changes and Improvements

  • The UrlValidator used for documents of type External Link now also allows schemeless, "mailto:" and "tel:" URLs by default, as well as anchor targets (e.g. "#somewhere). URLs with unreplaced token (e.g. {livecontext.host)) are valid if a valid schema is used.

    (CMS-5896)
  • Most of the image transformation functionality has been moved from the "contentbeans" module to the new core module "cap-transform". The new module allows to configure site/content specific image variants and enables the upcoming new image editor to execute service side validators.

    Therefore the image variants defined in the file "mediatransform.xml" have been moved from the "contentbeans" module to the new "shared" module "image-transformation".

    (CMS-5856)
  • When creating an augmented category both page layouts are initially taken from the root category (different for the Category Overview Page and the PDP). That means the default page layouts for augmented pages for a site are set at the root category. They should meet the requirements of most catalog pages.

    (CMS-5840)
  • The type of date properties in client-side structs has changed from Date to com.coremedia.ui.data.Calendar. It is now possible to select times and timezones for date properties in the Struct Editor. The defaults for new date properties are today at midnight in the default timezone for Studio installation.

    (CMS-5826)
  • The EditorContext method registerThumbnailUriRenderer has been deprecated and is replaced by the new method registerThumbnailResolver.

    The new ThumbnailResolver interface is implemented in the core and is responsible for finding a thumbnail for a content. The search for a thumbnail is executed recursively for all content properties that have been registered via the registerThumbnailResolver method. The result of the resolver is either a String that represents the URL or a Thumbnail object that contains all data to generate the image URL.

    The class BlueprintFormsStudioPluginBase contains the example setup for the new thumbnail resolving. Additinally, the actual rendering of the URL has been separated and can be customized by implementing the ThumbnailRenderer interface or subclassing the ThumbnailRendererBase class. This allows to let other services render all thumbnails that are displayed in the Studio, e.g. the CaeThumbnailRenderer is an example implementation that builds URLs to retrieve thumbnails from the CAE. The additional handler StudioImageHandler has been added to the cae-base-lib module for this.

    The new thumbnail URL resolving is also applicable for commerce thumbnails. The class LivecontextStudioPluginBase has been changed according to the new mechanism. Custom ThumbnailResolver implementations have been added to the blueprint for this.

    Migration hints:

    • helper methods for resolving content properties have been removed from the ImageLinkListRenderer class

    • ImageLinkListPropertyField or similar grid based components shouldn't use the convert="{editorContext.getThumbnailUri}" converter for a datafield anymore. It is sufficient to apply the renderer for a column only, e.g.:

        
    <gridcolumn id="thumbnail"
                      width="110"
                      sortable="false"
                      dataIndex="thumbnailUrl"
                      renderer="{ImageLinkListRenderer.thumbColRenderer}"/>
    
    
      
    (CMS-5764)
  • In order to more efficiently support the cloning of derived sites with a locale variant, a prefixed variant string is available as an additional token \{7\} in the property sitemodel.rootFolderPathPattern. This enables the derive site method to include the locale variant in the path of the site root folder. In the default configuration, the locale variant is appended to the language string, separated by an underscore "_". The separator character can be configured using the property sitemodel.variantPrefix.

    In case you are not using CoreMedia Blueprint you need to adapt the site model configuration and change/add the following properties:

        
    <bean id="siteModel" class="...">
      <!-- change -->
      <property name="rootFolderPathPattern"
                value="/Sites/{0}/{6}/{5}{7}"/>
      <!-- add -->
      <property name="variantPrefix" value="_"/>
      <!-- ... -->
    </bean>
    
    
      
    (CMS-5335)
  • The default "Link Behavior" of the "External Link" Dialog has been changed from "Open in Current Window" to "Open in New Window".

    (CMS-4416)

CoreMedia Blueprint Changes and Improvements

  • Update node.js to 4.4.7, npm to 3.10.2, mediaelement to 2.21.2, masonry to 4.1.0 and other packages to the latest version.

    (CMS-5892)
  • Site indicators (aks CMSite documents) had no settings so far. We finally added them now, so from now on you should configure settings of site wide scope in the site indicators rather than in the root channels. You do not need to migrate existing settings. The SiteSettingsFinder has a backward compatible fallback to the root channel in case a requested setting is not defined in the site indicator.

    (CMS-5759)
  • Tomcat has been updated to 7.0.69. The update includes the tomcat-maven-plugin dependencies, the tomcat installation and the catalina-jmx-remote jar, which is now named tomcat-catalina-jmx-remote.jar. There are also some additional changes being made to the configuration. The new VersionLoggerListener is added by default.

    (CMS-5697)
  • Module: cms-thirdparty-bom

    joda-time:joda-time has been updated from 1.6.2 to 2.9.3. See joda.org for change notes.

    (CMS-5663)
  • New CentOS 7 coremedia/base7 Vagrant box for the new flexible deployment (not for standard RPM deployment)

    • Using CentOS 7.2 March 2016 (1603-02) rolling iso

    • Provided via https://atlas.hashicorp.com/coremedia/base7

      • CentOS 7.2.1511 including kernel 3.10.0-327.13.1.el7.x86_64

      • bash 4.2.46-19.el7

      • openssl-1.0.1e-51.el7_2.4

      • mod_ssl-2.4.6-40.el7

      • VirtualBox guest additions 5.0.16

      • openjdk/1.8.0_77

      • ibjpeg-turbo-official-1.4.2-20150921

      • Performance Co-Pilot (PCP) 3.11.1

    Vagrant 1.8 and VirtualBox 5.0

    • Tested with Vagrant 1.8.1 and VirtualBox 5.0.16

    (CMS-5560)
  • All Blueprint Themes are build with templates by default. The Maven parameter cae.themes.grunt.task.build and cae.themes.grunt.task.test are removed. The default grunt tasks are now grunt build and grunt test, if tests are available.

    (CMS-5323)
  • The artifactId of the Tomcat Zip file to build the tomcat-installation rpm is changed from tomcat-dist to tomcat and retrieved from Maven central repository.

    (CMS-5071)

Miscellaneous Changes and Improvements

  • Updated from 18.0 to 19.0.

    (CMS-5975)
  • Catalog Image calls are not redirected to the default blob handler anymore, but delivered directly instead. The response contains HTTP eTag-header-information in order to allow browsers to use conditional requests (the binary data is only sent if the eTag has changed, otherwise browsers can continue to use the cached binary). In the live environment the response contains an additional max-age HTTP header to keep to many conditional requests away from the CAE. The TTL configuration for the conditional request is set to 5 minutes per default. This can be customized via lc-asset-handlers.xml spring configuration file. In the Management Environment (Preview CAE) no additional caching headers are set in order to instantly see changes to catalog images.

    (CMS-5654)
  • The FragmentConnector can be disabled by configuring the property com.coremedia.fragmentConnector.disabled. The property is optional. The FragmentConnector can be disabled while wcs is running. To do this add the property com.coremedia.fragmentConnector.disabled to the STORECONF table of the wcs instance. The STOREENT_ID for this property must be "0". After adding this property to the table you will have to refresh the StoreConfigurationRegistry in the WCS Administration Console. Example entry in the STORECONF table:

    STOREENT_ID NAME VALUE OPTCOUNTER
    0 com.coremedia.fragmentConnector.disabled true 0

    To implement this feature six new thirdparty libraries were added, which must be part of the classpath from now on:

    • spring-context:4.1.7.RELEASE

    • spring-core:4.1.7.RELEASE

    • spring-web:4.1.7.RELEASE

    • spring-expression:4.1.7.RELEASE

    • spring-aop:4.1.7.RELEASE

    • spring-beans:4.1.7.RELEASE

    Two classes were marked as deprecated and will be removed in later versions:

    • PropertiesBasedIBMLiveContextEnvironmentFactory

    • IBMLiveContextEnvironmentFactory

    If you have references in your web.xml to these classes replace them with the DefaultLiveContextEnvironmentFactory class.

    (CMS-5295)
  • The CatalogRootHelper utility class imposed an implicit requirement upon implementations of the Commerce API: The ID of the root category had to be "ROOT". This was all but obvious from the Commerce API, and it may even be cumbersome to implement, especially if the root category is not mocked as in the IBM implementation, but the particular commerce system features a native root category with a regular ID. Therefore the CatalogRootHelper has been deleted and all functionality has been moved into the implementations of the Commerce API. This has two implications on the Commerce API:

    • There is a new method CatalogService#findRootCategory which replaces CatalogRootHelper#getRootCategory. If you have implemented the Commerce API, you can reuse the CatalogRootHelper code to implement the new method in a backward compatible fashion. But maybe for your particular commerce system there is even a more obvious implementation. Whatever implementation you choose, make sure that CatalogService#findRootCategory and Category#isRoot are consistent.

    • The constant Category#EXTERNAL_ID_ROOT_CATEGORY has been deleted, since it has no special meaning any longer. In case you used it, you can substitute it with its concrete value "ROOT" or introduce your own constant. The Studio REST service still features the special "ROOT" URL, but this URL segment is now independent of the root category's ID.

    (CMS-5270)
  • With the previously introduced XmlUapiConfig and its builder pattern it was possible to separate content, schema and rules definitions into different files and thus use the same schema.xml for tests using a different content.xml.

    While the schema.xml has a special format only usable within such integration tests a newly introduced method now allows to actually use any contenttypes.xml from your project.

    To do so use the builder pattern as follows:

        
    XmlUapiConfig
      .builder()
      .withContent("classpath:com/test/content.xml")
      .withContentTypes("classpath:com/prod/*-doctypes.xml")
      .build();
    
    
      

    For more information consult the JavaDoc of XmlUapiConfig.

    (CMS-4870)
  • The Include Tag now has an optional parameter exposeErrors to expose any fragment connector errors with HTTP status code >= 400 as response code on the main page. This enables for example real 404 handling for CoreMedia Microsites and full page articles in a commerce-led scenario (e.g. in Aurora). See documentation and taglibrary for details.

    (CMS-4850)

Fixed Issues

  • CMS-6018: e-Marketing Spots

    Changes made to e-Marketing Spots within IBM WebSphere Commerce (e.g. new Description) are now getting correctly invalidated and reloaded in Studio.

  • CMS-5995: Unuseful PDE context menu on category and product detail pages

    PDE context menu for the whole page is not rendered on category and product detail pages for shop pages in Studio, anymore. It showed a not working action before. Augmenting category pages is possible through various action in e.g. library, tab header or right toolbar. Augmenting product pages is only possible either through its category's product content page grid or via asset management.

  • CMS-5994: e-Commerce library does not search for Augmented Categories even if preference "Show Products and Categories as Content" is enabled

    Search for augmented categories is now immediately possible after switching preference "Show Products and Categories as Content" to enabled.

  • CMS-5987: Image Zoom Feature Breaks Preview Based Editing

    The Preview Driven Editing context menu is now also showing up on the main picture within the LiveContext Product Asset Management Widget.

  • CMS-5940: ImageReferrerLinkList has been deleted

    ImageReferrerLinkList has been deleted and is replaced by the ReferrerLinkList which has the additional parameter "showThumbnail" to enable an additional image column for the list.

  • CMS-5876: Content Server

    A bug in the Content Server has been fixed, which occasionally caused incorrect date values to be persisted in the Content Server database in times of high write load.

  • CMS-5833: Site Aware CacheInvalidationListener

    The CacheInvalidationListener for IBM WebSphere Commerce is now site aware. If you configure different IBM WebSphere Commerce service endpoints (URLs) for different sites within the CMS, these different systems are polled for cache invalidations in parallel. The CacheInvalidation therefore gathers all service endpoints for the different connected IBM WebSphere Commerce systems and starts a polling thread for each unique endpoint URL.

  • CMS-5796: Updated Spring Social Versions

    spring-social 1.1.4.RELEASE, spring-social-facebook 2.0.3.RELEASE, spring-social-twitter 1.1.2.RELEASE

    The spring-social-* modules are used for Elastic Social user registration with a provider.

    This update is required for customers who use the latest version of the Facebook App (2.6), because the Facebook API has changed. The change is backward compatible, it still works with older versions of the Facebook App.

  • CMS-5771: Aligned themes and ViewRepository names

    In previous release the ViewRepository and the asset management theme had different names. As a result the asset management templates could not be loaded from the content but only from the CAE. By using the suggested name pattern (theme name = viewRepository) all extensions can be loaded from content now.

  • CMS-5739: Disable script compression in CSS Importer and themes

    The CSS Importer now uses some simple tests to check if a scripts should or must not be compressed. If the JavaScript or CSS file either uses the extension .min.js / .min.css or if the script is not compatible with the YUI compressor used by the CAE then the Disable Compression flag of the corresponding content document is automatically set.

    Additionally, the theme descriptor provides an optional disableCompression attribute at the javaScript and css level which allows overriding the setting implied by the CSS importer.

  • CMS-5711: Absolute URL Prefixes

    It used to be cumbersome to introduce a new site, because you had to add a new URL prefix mapping in the Spring configuration, and thus the CAEs had to be redeployed and restarted. Now the URL prefix mappings are maintained in the content. For details consult the DXP8 Developer Manual, Appendix / Link Format / Link Post Processors / makeAbsoluteUri. You only need to add a simple struct to each site's settings. Depending on your particular URL prefixes, you might even be able to use the same struct for all sites of a web presence. If you want to delay the migration nonetheless, you can activate the outcommented snippet in blueprint/modules/cae/cae-base-lib/src/main/resources/framework/spring/blueprint-links.xml to achieve the old functionality.

  • CMS-5662: maven property renamed

    maven property mod_ssl.rpm.version renamed to mod_ssl.rpm.minVersion

  • CMS-5601: ImageFilter for Management Center

    Added ImageFilter that enhances the standard IBM LoadImage servlet by resolving the CoreMedia Asset Management specific storeId token in imageURLs. Additionally, any image URLs with schemaless URLs (starting with "//") will be automatically converted to "http://" as the IBM LoadImage servlet cannot handle these URLs. Please refer to the documentation about installation of the ImageFilter. In WCS v8 with a security fix JR49256 applied, Management Center rejects any requests that try to redirect to an unauthorized site. To show the images from CMS, we need to enable URL redirect filtering by adding a AllowedHost element inside a URLRedirectFilter element in the LOBTools module in WCS configuration file (wc-server.xml).

  • CMS-5551: Multi-Site: Fix for Unpublished Master

    In a multi-site scenario, a CAE in the live environment failed to successfully deliver content items whose master had not yet been published. The obvious workaround was to publish the master. With this fix the CAE now copes correctly with unpublished masters.

  • CMS-5483: Unicode BOM in XLIFF

    The XLIFF upload code is now robust against UTF-8 byte order markers.

  • CMS-5410: PDPs rendered by CoreMedia are using the PDP pagegrid now

    If a Product Detail Page is rendered by CoreMedia (and not by the Commerce system) the pdpPagegrid is used by default (see the Product Content tab of an Augmented Category in Studio). In the past it was only the case for fragments on PDPs. The spring configuration flag useContentPagegrid can be used to switch back to the standard content pagegrid (see ProductPageHandler). Product links that point to a CoreMedia PDP can be enabled by setting the content setting livecontext.policy.commerce-product-links to false.

  • CMS-5351: Store ID comparison

    For particular technical reasons we had to weaken store ID comparison to case insensitivity. I.e. "myStoreID" is considered identical to "Mystoreid" now. If the names of all stores used in a LiveContext instance are still unique wrt. the new comparison, there is nothing to do. Otherwise, you need to rename your stores or roll back the comparison in LiveContextSiteResolverImpl#siteHasStore in the Blueprint's lc extension.

  • CMS-4568: Content server query fails on Oracle: column ambiguously defined

    Fixed a bug that caused database exceptions when version queries with limit and order by clause were executed on an Oracle database.

  • CMS-2901: Attach rpm files to boxes artifact and use default maven deploy mechanism

    As rpm metadata is generated regardless of group and artifactId, we can simply attach all artifacts to the boxes pom and deploy that using default

        
    mvn deploy:deploy -Prespository-upload
    
    
      

    . As a result the properties rpm.upload.groupId and rpm.upload.version are now obsolete and have been removed.

  • CMS-2477: Update spring-security to 3.2.9.RELEASE

    The dependency spring-security has been updated to 3.2.9.RELEASE.

  • CMS-1716: Error message in External Library is not helpful: Kaltura and Perfect Chef

    Removed Kaltura Demo Content