Release Notes

What's New for Core Commerce 6.15.0

What's New for Core Commerce 6.15.0

New Features and Enhancements

Core Commerce

  • PB-1079 - Added customer Business Number attribute for use in tax calculations for VAT tax regimes.
  • PB-1080 - Added customer Tax Exemption Id attribute for use in tax calculations.
  • PB-1173 - Upgraded Java to version 8 (both source and target versions).
  • PB-1203 - Improved source code setup by eliminating the requirement to run the Inception Accelerator Kit.
  • PB-1360 - Moved all demo data and images to a common commerce-data project in the release package. Britney data was also added to this project.
  • PB-1103 - Upgraded OpenJPA to version 2.4.0 to support recent database versions.
  • PB-1130 - Upgraded Liquibase to version 3.4.0 to support recent database versions.
  • PB-834 - Replaced native OpenJPA cache with Ehcache to improve caching behavior, configuration, and monitoring.
  • PB-1338 - Converted caches based on SimpleTimeoutCache to use Ehcache, with the exception of CachedSettingsReader caches.
  • PB-779 - Added run-time configuration overrides for all Ehcache instances (both OpenJPA and application caches).
  • PB-1172 - Added mechanism for overriding values in multiple jpa-persistence.xml files.
  • PB-1400 - Added sparse import of inventory quantities so that only quantity on hand is updated (Import/Export tool).

Commerce Manager Client

  • PB-867 - Added support for OS X Yosemite.
  • PB-1173 - Upgraded Java to version 8 (both source and target versions).
  • PB-1162 - Upgraded RCP to version 4.5 to support Java 8 and OS X Yosemite.
  • PB-1136 - Upgraded Tycho to version 0.24.0 to support generating native OS X application bundles.

Bug Fixes

Core Commerce

  • PB-978 - Fixed ActiveMQ connection pool issues with upgrade to version 5.11.1.
  • PB-1230 - Fixed issue with OpenJPA caching entities marked @DataCache(enabled = false).
  • PB-1065 - Applied patch OPENJPA-1716 to fix storefront deadlocks.
  • PB-1216 - Fixed rounding of promotions based on percentage discounts.
  • PB-1160 - Fixed promotions in shopping cart not being updated when CATEGORIES_VISITED or INSTORE_SEARCH_TERMS tags are changed.
  • PB-1455 - Fixed issue where modifying a shipping address makes it impossible to select shipping option.
  • PB-1336 - Fixed OSGi compatibility issue with Payment Gateway Connectivity API by replacing Dozer with Spring type conversion.
  • PB-1504 - Fixed Storefront login problem caused by Spring Security session fixation changes.
  • PB-1306 - Fixed issue with rollup of a large number of Inventory Journal rows.
  • PB-1066 - Fixed Inventory Journal using an allocation size of 1 for UIDPK generation.
  • PB-1161 - Implemented workaround for DataIntegrityViolationException caused by concurrent reads of a customer's cart.
  • PB-1392 - Fixed double counting of allocated quantity on import (Import/Export tool).

Commerce Manager Client

  • PB-1127 - Made login and change password windows resizable to address Windows 8 sizing issue.
  • PB-858 - Fixed category assignment permissions.
  • PB-516 - Fixed configuration of CM Client asset manager.
  • PB-867 - Certain layout issues on OS X 10.10 Yosemite and later have been resolved with the RCP 4.5 upgrade.

3rd Party Library Changes and Upgrades

Library New Version Previous Version
Apache ActiveMQ 5.11.1 5.7.0
Apache Camel 2.16.0 2.11.1
Apache OpenJPA 2.4.0-ep2.0 2.3.0-ep2.0
Cucumber 1.1.8 1.1.7
Eclipse ECJ compiler for Drools 4.3.1 3.4.2
Eclipse RCP 4.5 (Mars) 3.6 (Helios)
Ehcache 2.6.11 2.5.1
Google Guava 18.0 16.0.1
JAXB 2.2.11 2.1
Javax Servlet 2.5 2.3
JDOM 1.1.3 1.0
Liquibase 3.4.0 2.0.3
Maven Bundle Plugin 3.0.0 2.4.0
Maven Checkstyle Plugin 2.17 2.12.1
Maven Compiler Plugin 3.3 3.1
Maven Plugin Plugin 3.4 3.2
Maven PMD Plugin 3.5 3.0.1
Mockito 1.10.17 1.9.5
Spring Framework 3.2.14 3.1.4
Spring Security 3.2.8 3.1.4
Tycho 0.24.0 0.15.0

Upgrade Notes

The Upgrade Guide provides general advice on upgrading Elastic Path projects. Specific upgrade considerations for Core Commerce 6.15.0 are covered below:

Java 8 Upgrade

The Java 8 upgrade required the following code and dependency changes:

  • Multiple library upgrades
  • Upgrades to PMD and Checkstyle plugins and rules
  • Multple minor code changes to fix compiler, PMD and Checkstyle errors.

ActiveMQ Upgrade

As a result of upgrading ActiveMQ to 5.11.1, deployments that communicate with an ActiveMQ broker will require the following application server changes:

  • Update the jms/JMSConnectionFactory JNDI configuration to use org.apache.activemq.pool.PooledConnectionFactory.
  • Replace the ActiveMQ JARs in the appserver lib folder with the jars from the deployment package tools/activemq/lib folder.

If you are using The Pusher for deployment, then you will also need to set jmsType=org.apache.activemq.pool.PooledConnectionFactory in all pusher configuration files.

For more information, see the Core Commerce Deployment Guide.

Liquibase Upgrade

As a result of upgrading Liquibase to 3.4.0, you will need to update the Liquibase XSD version to 3.1 in your extensions database project as shown below.

 xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd"

OpenJPA Upgrade

As a result of upgrading OpenJPA to 2.4. you will need to update the persistence XSD version to 2.0 in your extensions Spring configuration files as shown below.
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

Caching Improvements

Ehcache is now used for all OpenJPA and application caches, with the exception of CachedSettingsReader caches. All caches have the same default timeout as in 6.14.

When upgrading, make sure that:

  • The only instance of ehcache.xml is in the commerce-engine/core/openjpa-osgi-wrapper module. Other instances of ehcache.xml should be removed.
  • You do not override the OpenJPA cache timeout in jpa-persistence.xml, as this will make it impossible to configure this value at runtime through an external ehcache.xml file.
  • You configure external ehcache.xml files in production and performance test environments if required.

For more information, see Configuring Ehcache, Monitoring Ehcache and Optimizing Performance.

jpa-persistence.xml Overrides

The load order is not predictable for jpa-persistence.xml files that exist in multiple modules. A random load order is fine when adding values to OpenJPA collections, but causes problems when modifying or removing values.

When upgrading make sure that:
  • You remove all modifications and deletions from your custom jpa-persistence.xml files and redefine them in the persistentPropertyOverrides, persistenceMappingExcludedClasses, and persistenceMappingExcludedFiles Spring beans in your extensions/core/ext-core module.
  • Your jpa-persistence.xml only adds <mapping-file> and <class> entries and has the following properties:
          <exclude-unlisted-classes>true</exclude-unlisted-classes>
          <validation-mode>NONE</validation-mode>
          <properties>
             <property name="openjpa.Log" value="slf4j"/>
             <property name="openjpa.DetachState" value="loaded(DetachedStateField=true)"/>
          </properties>
For more information, see Extending the Domain Model.

Demo Data Moved to commerce-data Project

All demo data has been moved to the commerce-data project which is included in the release package. It is not necessary to build this project unless you make changes to it.

The extensions/database/ext-data module now has dependencies to commerce-data modules instead of the Import/Export XML files.

System Tests Moved to extensions Project

System tests have been moved from both Cortex and Commerce Engine projects to the extensions project. These tests rely on Elastic Path webapps which are now exist only in the extensions project.

Use the following command to build your extensions project without executing system tests:

mvn clean install -DskipAllTests

Distribution Management Changes

As part of simplifying starting construction steps, the <distributionManagement> configurations in multiple POMs have been consolidated to just a single format.
    <distributionManagement>
        <repository>
            <id>ep-releases</id>
            <url>${ep.releases.repository.url}</url>
        </repository>
        <snapshotRepository>
            <id>ep-snapshots</id>
            <url>${ep.snapshots.repository.url}</url>
        </snapshotRepository>
    </distributionManagement>
The maven/ci-settings.xml in the devops project needs to be updated to specify URLs for both ep.releases.repository.url and ep.snapshots.repository.url properties, and set the <server> credentials for ep-releases and ep-snapshots repository ID.
The following repository configurations can be removed:
<server> Repository ID Associated Maven Properties
ep-platform-releases
  • ep.platform.release.repository.url
ep-platform-snapshots
  • ep.platform.snapshot.repository.url
ep-extension-releases
  • ep.extension.release.repository.url
  • ep.aem.commerce.release.repository.url
ep-extension-snapshots
  • ep.extension.snapshot.repository.url
  • ep.aem.commerce.snapshot.repository.url

Commerce Manager RCP 4.5 Upgrade

General

  • The RCP framework has been upgraded from 3.6 to 4.5. The majority of the Commerce Manager code remins the same as it now relies on the RCP 3.x compatibility API. https://www.eclipse.org/community/eclipse_newsletter/2013/february/article1.php
  • All bundles have been upgraded to JavaSE-1.8 (MANIFEST.MF) - requiring the use of Java 8 at compile and runtime.
  • The mechanism to update multi-page editors has been changed. Views are now simply disposed and not programatically recreated, rather the RCP framework lazily re-initialize the pages when they are selected.
  • AbstractCmClientFormEditor previously leveraged the CorePlugin’s singleton instance of a FormTookit. This caused many ‘widget is disposed’ errors as the toolkit would be disposed and then be called upon to help make new widgets. Each form uses its own toolkit instance now.
  • The 'Refresh Editor' functionality has been reimplemented and made more extensible. To opt-in to this behaviour for any editors extending AbstractCmClientFormEditor, simply add the following attribute to the editor’s plugin.xml <editor> definition. contributorClass="com.elasticpath.cmclient.core.editors.BaseCmClientEditorContributor"
  • Commerce Manager now launches with ‘-clearPersistedState’ and ‘-persistState false’. This causes the perspectives reset and create from their relevant IPerspectiveFactory implementation every time it is run. Without this, the persisted state is used and the PerspectiveFactories are not called, leading to issued with uninitialized data.
  • The ‘quick access’ Eclipse feature was showing up following the upgrade. This feature is now re-hidden with new code in the ApplicationWorkbenchWindowAdvisor class.
  • The ‘preferences’ eclipse feature was showing up following the upgrade. This feature is now re-hiddend with new code in the ApplicationWorkbenchWindowAdvisor class.
  • Fully qualified view ID names are now used. Previously, some Views leveraged MyViewClass.class.getName() which is incompatible with the RCP upgrade. The view id's must be fully-qualifed and statically defined.
  • Previously, AbstractListView set a specific layout data which caused ClassCastExceptions when rendered due to a new UI Visitor class in RCP 4.5. This layout data has been removed as it was uneccessary.
  • A few Helios (RCP 3.6) dependencies remain as there are no newer replacements. The functionality requiring these dependencies will be phased-out/replaced in an subsequent release.
  • IFolderLayout.addPlaceholder no longer supports wildcards as it did previously (the symptom is that getViewLayout() calls will return null unless the Views are added specifically (rather than waiting for a user action to trigger the RCP framework). Several perspectives have had their Views added directly due to this limitation.

MacOS specific changes

  • The Commerce Manager build now produces proper OS X application bundle layouts where all content is nested under a *.app folder giving the user a more native experience.
  • The RCP 4.5 upgrade allows the Commerce Manager to launch on OS X using an existing Java 8 installation as the equinox launchers can now launch non-Apple provided versions of Java.
  • The Commerce Manager build now only produces a 64 bit client (32 bit no longer supported).