NEBA 5.1.0 released

NEBA 5.1.0 ships with major additions and improvements. NEBA now features out-of-the-box JSON rendering for NEBA models, a simplified @ResourceModel annotation and includes various performance optimizations. For instance, NEBA's lazy-loading support now uses ByteBuddy instead of CGlib, resulting in a 60% performance gain when resolving lazy collections. Users of the Spring integration upgrade to Spring 5.2 and can now safely use @PostConstruct to initialize models after their content has been injected.

Highlights of this release

NEBA 5.1.0 ships with JSON views

Similar to the Sling model exporter framework, NEBA now provides a safe and fast default mechanism to render NEBA models as JSON. This new feature also introduced a technical platform allowing the injection of arbitrary additional data into the JSON views of models. For instance, the JSON view mechanism allows automatic addition of a ":type" attribute into the JSON view of a NEBA model, containing the resource type effectively used to adapt to the model. In the future, this will be further extended to automatically generate all data required for use cases such as AEM™'s SPA editor.

NEBA 5.1.0 consolidates @PostConstruct and @AfterMapping

Prior to 5.1.0, NEBA featured a lifecycle with two subsequent initialization phases:

  1. Initially, a model was instantiated and injected with collaborators
  2. Then, life cycle callbacks for @PostConstruct where invoked
  3. Then, Content-To-Model mapping occurred
  4. Finally, @AfterMapping methods and NEBA's model post-processors where applied
Now, the lifecycle has been consolidated to work in a straightforward and transparent way for both NEBA core and when using Spring beans as models:
  1. Initially, a model was instantiated and injected with collaborators
  2. Then, Content-To-Model mapping occurred and NEBA's model post-processors are applied
  3. Then, life cycle callbacks for @AfterMapping are invoked (legacy support)
  4. Finally, life cycle callbacks for @PostConstruct are invoked
Thus, the @AfterMapping annotation is deprecated and users can solely rely on @PostConstruct.

Lastly, the optional NEBA Spring integration has been updated to Spring Version 5.2.1, containing important additions, bugfixes and improvements.

Release notes

Improvements

    Fixed bugs

      Upgrading from 5.0.7

      Users of 5.0.7 need to follow the following steps to upgrade their application.

      Implementors of NEBA's Service Provider API (SPI) providing custom application-level caches ((a rare use case)) can no longer do so since support for custom caching extensions has been dropped.

      Implementors of NEBA's Service Provider API (SPI) providing custom model factories ((a rare use case)) must adapt the API changes introduced in 5.1.0. Specifically, the resource model factory now receives a callback to apply content-to-model mapping, thus allowing full control over the models creation process.

      The @ResourceModel annotation has been simplified. Since 5.1.0, users can pass the resource types of a model as the annotation value, e.g. @ResourceModel("resource/type"). using the "type" property is still supported, but deprecated. Code compiled with NEBA < 5.1.0 will continue to work, thus this change is not mandatory, but recommended for actively developed solutions.

      Users of the optional Spring integration must upgrade to Spring 5.2.x

      Upgrading from previous versions

      Please use the below form to see the upgrade path from one version of NEBA to another.

      See changes required when upgrading