Documentation Home

Broadleaf 4.0.9-GA

Released on March 4, 2016

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

Noteworthy Updates

Ignore all system-generated archived filters when attempting to detect sequence generator corruption

A fix has been made to the SequenceGeneratorCorruptionDetection process to make sure that any archived (archived = "Y") rows were considered when reassessing the max value for a given sequence generated table.

Rule-based evaluation does not work with various attribute maps

MVEL expressions were not correctly evaluating to true when assessing CustomFields. This fix corrects the MVEL expression generated by the RuleBuilders when using CustomFields.

Update Spring to the latest 4.1.9.RELEASE version

The version of Spring used by Broadleaf Commerce has been updated from 4.0.8.RELEASE to 4.0.9.RELEASE

Ensure that rollback handlers from a nested workflow do not trigger rollback handlers in the parent

Rollback handlers are now executed in a specific order of operation. For example, if you have a workflow like this:

  • blParentWorkflow
    • Activity1
      • register RollbackHandler1
    • Activity2
      • register RollbackHandler2
    • Activity3
      • blChildWorkflow.execute()
        • ActivityA
          • RollbackHandlerA
        • ActivityB
          • throw new RuntimeException()
      • Register RollbackHandler3 with some state gleaned from the exception in the executed workflow and rethrow an exception triggering the rollback handler

ActivityB within the child workflow threw the exception. This is the incorrect order of operations that happen in previous releases:

  1. RollbackHandlerA.rollbackState()
  2. RollbackHandler2.rollbackState()
  3. RollbackHandler1.rollbackState()
  4. blChildWorkflow.handleError()
  5. blParentWorkflow.handleError()

Note that the blChildWorkflow.handleError() is executed after RollbackHandler2 and RollbackHandler1 are executed. Also notice that RollbackHandler3 was never registered since it occurred after all of the rollback happened and the rollback state was null out (which happens in a finally block after the execution of the blChildWorkflow)

This is how it should behave instead, which is not the order of operations with this release:

  1. RollbackHandlerA.rollbackState()
  2. blChildWorkflow.handleError()
  3. RollbackHandler3.rollbackState()
  4. RollbackHandler2.rollbackState()
  5. RollbackHandler1.rollbackState()
  6. blParentWorkflow.handleError()

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

Critical Bugs(1)

  • Update Spring to the latest 4.1.9.RELEASE version

Major Bugs(3)

  • Rule-based evaluation does not work with various attribute maps
  • Ensure that rollback handlers from a nested workflow do not trigger rollback handlers in the parent
  • Fix usage of Generated Url separator

Minor Bugs(7)

  • Ignore all system-generated archived filters when attempting to detect sequence generator corruption
  • Prevent Hibernate exception from showing up when sorting by parent category
  • Prevent a requirement to scroll up after searching on a list grid
  • Added method to retrieve assigned product option values on a product
  • In the admin Do not display the property value twice with an additional link for ToOneLookups in main entity grids if it the property is already the main entity link
  • Conditionally weave in ArchiveStatus into Customer
  • Fixed NPE when extending Offer domain entity

Features(1)

  • Allow the admin to run separate from any other Broadleaf deependencies

Enhancements(3)

  • Allow indexed Solr fields to exist anywhere in the class hierarchy of Product
  • Read all of the Translations upfront for each page when rebuilding the Solr index
  • Allow item qualifiers for fulfillment groups to exist within other fulfillment groups

Total Resolved Issues: 15