2.4.2 ALM Maintenance exploration

Andrew Petro explored ALM maintenance activity in August 2007 on an exploratory branch as part of a larger project of helping BCCampus with some ALM issues.

Modifications

  • Apply fix in UP-1164 to stitch back together the doubly linked list of sibling layout nodes an an ALM managed fragment is deleted. - this fix also applied to the mainstream uPortal branches
  • Detect and fail on infinite loop in AggregatedLayout getFirstSiblingNode() and getLastSiblingNode() per UP-1683 - this fix also applied to the mainstream uPortal branches
  • Modified AggregatedLayoutManager moveWrongFragmentsToLostFolder() to not call getLayoutNode(null) in the case where getIncorrectPushedFragmentNodes() returns a Collection containing null.
  • Added detection of node ID mapping to null node in AggregatedLayout.getLastSiblingNode() and AggregatedLayout.getFirstSiblingNode() and in calling code. This is intended to mitigate one possible source of layout corruption. Special thanks to Michael Oltz for pointing out this potential NPE.
  • Eliminate all code conditional on RDMServices.supportsOuterJoins. ALM sets this to false before querying it, so it is always false, so any code that only executes when it is true is code that never executes. This simplifies the code. - this change already existed in modern uPortal branches