We now keep the JPA entity classes to store current and archived event publications in separate packages so that the archiving one can be included only when the archiving mode is selected.
A bug [0] in APTK causes our Javadoc extraction to fail for methods whose parameters are classes nested in interfaces. We fix that by temporarily including a fixed copy of TypeElementWrapper, that looks up outer types on interfaces as well.
[0] https://github.com/toolisticon/aptk/issues/163
Reworked observability integration to create Observations rather than traces directly. Additional metrics and counters and an Observation.Context to potentially customize the metrics exposed.
We now lookup the AbstractAutoProxyCreator registered for global proxy settings and apply that to the ProxyFactory used to create the proxies applying the observability decoration.
We now explicitly declare an order for the MTBPP so that it gets registered for execution before the ones that create infrastructure for message listeners so that those already see the potentially proxied instance and invocations actually invoke the advice creating the traces.
We now consider all methods that are (meta-)annotated with Spring Messaging's @MessageMapping which is consistently used in a lot of broker annotations such as @(Rabbit|Kafka)Listener etc.
Eagerly initializing the archiving Cypher statements required for the new archiving event completion mode breaks our compatibility with Spring Boot 3.2 as that depends on a Cypher library version not containing the exists(…) operator yet. We now lazily instantiate those statements.
We now explicitly set the completion date property of newly created event publications to null. The copying data manipulation statements now properly copy all properties of the publication notes into the archive.
We now use two separate entity types for archived and non-archived event publications to rpevent hibernate hickups when inserting an instance of a subtype with he same id.
We now support an archiving completion mode that copies the entry to be completed into a dedicated archive to retain the completed event publications but also keep the main publication store small for more efficient data access.
Co-authored-by: Oliver Drotbohm <oliver.drotbohm@broadcom.com>
In case no ObjectMapper bean instance is present, we now fall back to creating a default one to render a JSON byte array. This is useful in case Jackson is on the class path but not necessarily the JacksonObjectMapperBuilder, which is located in spring-web.