3.0.0
After almost six years effort (!), v2.0.0 and v3.0.0 are the first official releases of Apache Causeway, now re-platformed to run on Spring Boot. The two versions are being released at the same time.
The v3.0.0 release is broadly equivalent to the v2.0.0 release. As such, see the 2.0.0 release notes for full details of the features available in this release.
However, 3.0.0:
-
targets Spring Boot 3.x (instead of Spring Boot 2.x)
-
targets Java 17 (instead of Java 11)
It also uses the jakarta
namespace rather than javax
.
There is one functional change, namely that support for Shiro security module has been dropped (for now). See the migration notes for options.
v2.0.0 | v3.0.0 | Notes | |
---|---|---|---|
Java |
|
|
|
Spring Boot |
|
|
Spring Boot 2.7 is EOL. |
Namespace |
|
|
|
Wicket |
|
|
|
Bootstrap |
|
|
|
RestEasy |
|
|
|
EclipseLink |
|
|
|
DataNucleus |
|
|
Other highlights
-
Persistence using JPA has been added through an integration of EclipseLink.
Persistence using JDO continues to be supported through the integration with DataNucleus.
We use EclipseLink rather than Hibernate because the latter is licensed using LGPL, which is incompatible with ASF licensing. In addition, EclipseLink is the reference implementation for JPA.
Spring Data is supported for both persistence mechanisms.
-
multiple mechanisms of implementing view models (JAXB, programmatic, serializable). This is pluggable.
-
added a generic GraphQL API.
-
multiple improvements to the programming model, including:
-
support for meta-annotations
-
support for different introspection modes.
In particular, "encapsulated" mode mean that the properties and collections of entities and view models do not have to have
public
visibility; their programmatic API can be kept to a minimum. -
supported custom scalar value types and composite types
-
mixin classes annotated as
@Action
,@Property
or@Collection
-
logical type name aliases
-
-
integration extensions, including Command Log, Execution Log and Execution Outbox
-
Web UI (Wicket Viewer) extensions including Full Calendar, PDF.js, Tabular Extension (Excel).
Also tree view and client-side filtering using datatables.net JS.
-
security extensions including secman ( authorization and/or authentication implemented as Causeway entities), Audit Trail and Session Log
-
dependency/library upgrades:
-
Spring event bus replaces guava or axon; removes guice
-
ByteBuddy replaces cglib or javassist for implementation of WrapperFactory
-
switch from hsqldb to h2
-
-
other extensions such as a BackgroundService for executing commands asynchronously, and Flyway integration.
Apart from dependencies and the javax
/jakarta
namespace, in most regards v2.0.0 and v3.0 are functionally equivalent.
The only feature not available in 3.0 is the Shiro module, because (at the time of release) Apache Shiro have not released jakarta
support.
However, either the Spring Security integration or even the Simple Security implementation can be used instead.
For 2.0.0
and 3.0.0
, below lists the features, improvements and bugs made since the previous release:
New Feature
-
CAUSEWAY-3698 - Security Integration Replacement for Shiro INI based Realm (Simple (Authenticator & Authorizor))
-
CAUSEWAY-3676 - GraphQL viewer (GraphQL Viewer)
-
CAUSEWAY-3671 -
Object_createdByCommand
-
CAUSEWAY-3670 - Extend BookmarkService with better support of logical type name aliases
-
CAUSEWAY-3669 - Extend
CausewayConfiguration
to return all config keys and their value
Improvement
-
CAUSEWAY-3700 - Include the secman authenticator auto-configuration…
-
CAUSEWAY-3697 - Deprecate
@DomainService(nature=NatureOfService..)
for Removal (to be replaced by some SPI) -
CAUSEWAY-3696 - Don’t log
ClientAbortException
s -
CAUSEWAY-3694 - IntrospectionPolicy
ENCAPSULATION_ENABLED
should NOT require annotation on mixin main method. -
CAUSEWAY-3693 - [Wicket Viewer] Allow table header text to break on whitespace (CSS)
-
CAUSEWAY-3692 - [Programming Model] Rename
DependentDefaultsPolicy
toPrecedingParamsPolicy
to better explain intent. -
CAUSEWAY-3691 - [JUnit] Remove 'stable' from regression test artifact names
-
CAUSEWAY-3689 - Make parsing of
BigDecimal
stricter, to avoid mistypes. -
CAUSEWAY-3688 - Audit trail should gracefully attempt to capture values, but not fail fast.
-
CAUSEWAY-3687 - [Validation] Disallow
@Transactional
within @DomainService(nature=VIEW) -
CAUSEWAY-3686 - [Wicket Viewer] Veto (Reason) Icon Tooltip is potentially too verbose
-
CAUSEWAY-3685 - Tree Rendering: allow for nodes to be marked (as selected)
-
CAUSEWAY-3684 - [Commons] Json/YamlUtils support for
Can<T>
-
CAUSEWAY-3683 - [Commons] Json/YamlUtils support for
java.time
(ISO) -
CAUSEWAY-3678 - REST API should return a 503 if polled before the app is fully up.
-
CAUSEWAY-3675 - Suppress autoflush if called by
EntityChangeTracker
(to avoid concurrent modification exceptions). -
CAUSEWAY-3672 - Make
DomainEventHelper
more resilient if there is a programming error with the definition of an event. -
CAUSEWAY-3661 - REST call for collection can return 404 error
-
CAUSEWAY-3646 - [Programming Model] Object Support Method for Font Awesome Layers
-
CAUSEWAY-3461 - [Wicket Viewer] unable to tab into
autoComplete
search field. -
CAUSEWAY-3404 - [Commons] Quality of Life Improvements for 2.0.0 Release
-
CAUSEWAY-3390 -
AuditTrailEntryRepository
has generic parameter vs secman repos (egApplicationUserRepository
) that does not … make these consistent. -
CAUSEWAY-3081 - Check for existence of feature in fixturescript
-
CAUSEWAY-2873 - petclinic tutorial (documentation)
-
CAUSEWAY-2085 - [archunit rule] Every entity should be annotated with
@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
Bug
-
CAUSEWAY-3701 - Enable h2 ui console for v3
-
CAUSEWAY-3679 - Downloaded Excel spreadsheet shows header rows as black on black.
-
CAUSEWAY-3674 - [Wicket Viewer] Potential NPE in
PendingParamsSnapshot
-
CAUSEWAY-3673 - Fix
LayoutLoadersGitHubMenu
action’s incorrectly defined domain event. -
CAUSEWAY-3667 - [Wicket Viewer] Regression: date/time picker in param dialog is squeezed into single line
-
CAUSEWAY-3650 -
FixtureScripts
runScript
vsrunFixtureScript
- one fires theFixturesInstallingEvent
/FixturesInstalledEvent
and the other does not. -
CAUSEWAY-3620 - RO viewer returns 500 not 404 if object doesn’t exist.
-
CAUSEWAY-3491 - [Wicket Viewer] cannot easily change the offset for an
OffsetTime
-
CAUSEWAY-3490 - [Wicket Viewer] not possible to change the offset for an
OffsetDateTime
. -
CAUSEWAY-3489 - [Wicket Viewer] cannot enter ZonedDateTime values and Joda
DateTime
. -
CAUSEWAY-3326 -
Specification
's Injection Points are not being resolved -
CAUSEWAY-3175 - Autocomplete not supported for values, only for object references
Duplicate
-
CAUSEWAY-3695 - [DUPLICATE] Joda DateTime not being handled correctly - treated as a ZonedDateTime
Documentation
-
CAUSEWAY-3677 - get to green on website checks - https://whimsy.apache.org/site/
Task
-
CAUSEWAY-3666 - 2.0.0 release activities
Version 3.x
also has a number of its own changes not present in the 2.x
release:
New Feature
-
CAUSEWAY-3698 - Security Integration Replacement for Shiro INI based Realm
-
CAUSEWAY-3348 - [Programming Model] Support for Action Parameters as a Tuple using Java Records (Mixins only)
Improvement
-
CAUSEWAY-3691 - [JUnit] Remove 'stable' from regression test artifact names
-
CAUSEWAY-3682 - [Commons] YamlUtils to support Java Records
-
CAUSEWAY-3275 - Migrate from Spring Framework 5.x to 6.x
Bug
-
CAUSEWAY-3699 - Lower v3 Baseline from Java 21 to 17
-
CAUSEWAY-3681 - [Regression] Cannot send Mail (3.x branch)
Dependency upgrade
-
CAUSEWAY-3634 - [Wicket Viewer] Update to Wicket 10.0.0-M2
Note that the final release uses Wicket 10.0
Not implemented (moved to Attic)
-
CAUSEWAY-2925 - [Vaa] Support for all fundemental Value Types
-
CAUSEWAY-2923 - [Vaa] Split the Vaadin Demo into JPA/JDO parts
-
CAUSEWAY-3407 - Thymeleaf/Webflux Viewer