Documentation Home
This version of the framework is no longer supported. View the latest documentation.

Broadleaf 4.0.6-GA

Released on November 18, 2015

This is the 6th patch release for the Broadleaf Commerce 4.0 framework.

Noteworthy Updates

Updated the latest dependency for Spring and Spring Security

With the 4.0.6-GA release, we have upgrade both Spring and Spring Security to the latest patch release.

Spring has been upgraded from 4.1.6 to 4.1.8

Spring Security has been upgraded from 3.2.6 to 3.2.9

Enable Soft Delete of Admin Users

The current functionality for deleting admin users results in the user being permanently deleted. This update adds optional support for a "soft" delete - setting an "archived" flag to "Y". In order to take advantage of this feature, the following two changes are needed:

1) Add the following to your admin application properties file:

enable.admin.user.archive=true

2) The BLC_ADMIN_USER table must be changed to add an ARCHIVED column.

This column will have to be manually added based on the syntax of your specific database. As an example, here is the update syntax for MySQL:

alter table BLC_ADMIN_USER add column ARCHIVED2 char(1);

Added configurable support for regenerating a Site Map if it expires from cache

Site Map generation does not replace the sitemap.xml file if it already exists. To better support the file getting replaced once a generation of requested and the sitemap has expired, the following property can be added to your site application properties:

sitemap.createIfTimeoutExpired=true

Fixed order of adding xml nodes for merge to ensure later MetadataOverrides override earlier xml overrides

Currently if a field's metadata is overridden via xml MetadataOverrides in multiple applicationContexts, which ever application context is defined first in the web.xml's patch config wins out. Long story short, if there is an xml MetadataOverride in the framework, then the admin or site not be able to override the delivered override.

Example:
bl-theme-admin-applicationContext.xml (framework override)

<mo:overrideItem ceilingEntity="org.broadleafcommerce.core.catalog.domain.Category">
  <mo:field name="templatedEntity.template">
    <mo:property name="tab" value="CategoryImpl_Marketing_Tab" />
    <mo:property name="tabOrder" value="2000" />
  </mo:field>
  <mo:field name="displayTemplate">
    <mo:property name="excluded" value="true" />
  </mo:field>
</mo:overrideItem>

applicationContext-admin.xml (admin specific override)

<mo:overrideItem ceilingEntity="org.broadleafcommerce.core.catalog.domain.Category">
  <mo:field name="templatedEntity.template">
    <mo:property name="group" value="CategoryImpl_Category_Miscellaneous" />
    <mo:property name="order" value="1000" />
  </mo:field>
  <mo:field name="displayTemplate">
    <mo:property name="excluded" value="true" />
  </mo:field>
</mo:overrideItem>

Admin's web.xml (Notice that bl-theme-admin-applicationContext.xml comes before applicationContext-admin.xml in the patchConfigLocation definition)

<context-param>
  <param-name>patchConfigLocation</param-name>
  <param-value>
    classpath:/bl-open-admin-contentClient-applicationContext.xml
    classpath:/bl-open-admin-contentCreator-applicationContext.xml
    classpath:/bl-admin-applicationContext.xml
    classpath:/bl-cms-contentClient-applicationContext.xml
    classpath:/bl-cms-contentCreator-applicationContext.xml
    classpath*:/blc-config/admin/bl-*-applicationContext.xml
    classpath:/bl-demo-applicationContext.xml
    classpath:/applicationContext-email.xml
    classpath:/applicationContext.xml
    /WEB-INF/applicationContext-datasource.xml
    /WEB-INF/applicationContext-admin-security.xml
    /WEB-INF/applicationContext-admin-filter.xml
    /WEB-INF/applicationContext-admin.xml
    classpath:/applicationContext-core-postMultitenant.xml
  </param-value>
</context-param>

Before the fix, the Category metadata would have been:

<mo:field name="templatedEntity.template">
  <mo:property name="tab" value="CategoryImpl_Marketing_Tab" />
  <mo:property name="tabOrder" value="2000" />
</mo:field>

After the fix, the Category metadata will correctly be:

<mo:field name="templatedEntity.template">
  <mo:property name="group" value="CategoryImpl_Category_Miscellaneous" />
  <mo:property name="order" value="1000" />
</mo:field>

An at-a-glance view of the issues that were closed in this release:

Major Bugs(3)

  • Added sandbox awareness to the UniqueValueValidator
  • Allow an anonymous customer that has added something to their anonymous cart to register
  • Added MultiTenant support for Site Map configurations

Minor Bugs(5)

  • Discontinue internal use of deprecated API SkuImpl#getProductOptionValues
  • Fixed order of adding xml nodes for merge to ensure later MetadataOverrides override earlier xml overrides
  • Changed active Products and Skus query to update the cache date for better cache management
  • Applying current parameters to ajax request to maintain pagination
  • Added support for CustomFields on Admin Users

Enhancements(14)

  • Update latest dependency patch versions for Spring (4.1.8) and Spring Security (3.2.9)
  • Remove unused field 'totalTax' from AdminPresentation to avoid confusion
  • Use CategoryDao to retrieve correct Category entity when generating Site Maps
  • Added configurable support for regenerating a Site Map if it expires from cache
  • Added Serializable interface to all APIWrapper classes
  • Added capability for System Properties to check the Multi-Tenant site hierarchy
  • Added cloning mechanism to Filter and FilterDefinition to support more efficient cache key construction
  • Add support for query extension pattern to SystemPropertyDao
  • Added site and profile level cache support for template files
  • Allow module extensions of determining if a payment is a Final Payment or not
  • Add configurable query size limit when filtering Products by Category
  • Made SearchRedirect able to discriminate for MultiTenant sites
  • Added DATE to DynamicSupportedFieldType
  • Enable soft delete of Admin Users

Total Resolved Issues: 22