Hightlights of this release

NEBA 4.3.0 is Sling 9 compatible

Release 4.3.0 extends NEBA's compatibility: NEBA now runs smoothly on Sling 7, 8 and the latest Sling version 9.

Compatible with AEM 6.1 - 6.3

This release, like its 4.x predecessors, is compatible with all AEM version 6.1.x - 6.3.x.

Improved support for lazy-loading

With 4.3.0, NEBA introduces the Lazy interface for declaring lazy-loading 1:1 relationships. Using this interface, one can benefit from the well-supported java.util.Optional representation of potentially empty values. In addition, the Lazy interface API itself has all semantics of the java.util.Optional type. This makes possible a rather elegant use of lazy-loading (and thus potentially missing) values:

@ResourceModel(types = "some/resource/Type")
public class MyModel {
    @Reference
    private Lazy<Asset> asset;

    public Rendition getSmallRendition() {
        return linkedAsset.map(asset -> asset.getRendition("small")).orElse(null);
    }
}

This interface replaces the previous "Optional" interface. Users of NEBA 4.x < 4.3.0 are encouraged to transition to the Lazy interface. The io.neba.api.Optional interface has been deprecated and will be removed in NEBA 5.x.

Release notes

Improvements

    Fixed bugs

      Upgrading from 4.2.1

      Users of 4.2.1 can upgrade to 4.3.0 without code changes. Note, however, that the version of the packages exported by the NEBA API has been updated to 4.3.0, to reflect the addition of the new Lazy Interface to the API. Furthermore, the Optional interface has been deprecated in the process. User of NEBA's Optional are encouraged to transition to Lazy instead.