2.0.0-M8

Highlights of this release:

  • Full support for audit trail, command log, execution log for JPA and JDO

  • New core extensions

    • SessionLog extension (ISIS-3062)

    • ExecutionOutbox extension, to support the outbox pattern (ISIS-3002)

  • Big improvements for value types

    • Support value types (simple ones at least) as a first-class citizen (ISIS-1695)

    • Support for persisting Temporal Types with Zone/Offset Information (ISIS-3105)

    • Add Vega and Vega-Lite Support (ISIS-3122)

  • Wicket viewer UI improvements

    • Improved client-side paging/filtering using datatables.net (ISIS-3197)

    • New extension to render PDF Blobs using pdf.js (ISIS-3040)

    • New extension to display events on calendar using fullcalendar.js (ISIS-3039 )

  • New ENCAPSULATION_ENABLED introspection policy (eg ISIS-3190, ISIS-3188)

    which allows actions, collections and properties to have non-public visibility so long as they are annotated with @Action etc, and their supporting members with @MemberSupport

  • New IdStringifier API/SPI interface (ISIS-3089)

    to allow pluggable management of identifiers in bookmarks/URLs etc

  • Support for Java Module System (module.info.java) (ISIS-3207)

This release also fixes the security vulnerability: CVE-2022-42467, fixed by ISIS-3128

New Feature

  • ISIS-3221 - Provide an API to allow custom implementations of ExecutorService to have access to the details of the command being executed (ie no longer a black box).

  • ISIS-3197 - Use datatables.net for improved client-side paging/filtering

  • ISIS-3190 - Ensure that non-annotated methods are excluded if ENCAPSULATION_ENABLED introspection policy

  • ISIS-3188 - Ensure all framework-defined mixins can be used with ENCAPSULATION_ENABLED introspection policy

  • ISIS-3169 - Autocreate delegated applicationusers if using Spring Oauth2/Keycloak

  • ISIS-3124 - Add Support for Placeholder Rendering Customization

  • ISIS-3122 - [Value Types] - Add Vega and Vega-Lite Support

  • ISIS-3119 - Cover IdStringifier Functionality with the Value Semantics Infrastructure

  • ISIS-3105 - Support for persisting Temporal Types with Zone/Offset Information

  • ISIS-3095 - Mixin interface to allow type-safe calls to WrapperFactory

  • ISIS-3092 - FailureAnalyzer to detect on non-enhanced JDO entities.

  • ISIS-3090 - Add JPA support for applib value types.

  • ISIS-3089 - Introduce IdStringifier API/SPI interface to allow pluggable management of identifiers in bookmarks/URLs etc

  • ISIS-3063 - Support for (Logical Type Name) Aliases in the Programming Model

  • ISIS-3062 - SessionLog extension

  • ISIS-3040 - [Wicket Viewer] Bring in PDF/JS (extension)

  • ISIS-3039 - [Wicket Viewer] Resurrect Calendar Event View (fullcalendar extension)

  • ISIS-3038 - [Wicket Viewer] MarkupComponent to support rendering (none) badge for null

  • ISIS-3037 - Persona interface to unify PersonaWithFinder and PersonaWithBuilderScript

  • ISIS-3031 - Provide mechanism for UserMementoRefiners to be honoured in integration tests.

  • ISIS-3020 - [Programming Model] Support Multivariate Parameter Supporting Methods

  • ISIS-2997 - [Applib] new Interface MetamodelListener for Convenience to listen on Metamodel Events

  • ISIS-2966 - Make it an Option whether to include non-essential Mixins or not.

  • ISIS-2919 - Session-scoped Time-zone Support

  • ISIS-998 - Actions that are NOT contributed properties but which return a URL should optionally display that URL inline within an iframe in a new tab (or other "working area").

  • ISIS-994 - Actions that act as contributed properties and which return a URL should display that URL inline within an iframe.

Improvement

  • ISIS-3230 - Make actions in AuditTrailMenu and CommandLogMenu and ExecutoinLogMenu more consistent

  • ISIS-3236 - Cosmetic improvements to layout of UserMemento

  • ISIS-3231 - Disable auditing for SessionLogEntry

  • ISIS-3229 - Fix namespace for isis.ext.auditTrail (not isis.ext.audittrail).

  • ISIS-3228 - [Wicket Viewer] Convert moment.js dependency to webjars.

  • ISIS-3224 - consistent handlng of removeAll, findAll for audit, exec, cmd repositories

  • ISIS-3217 - [Wicket Viewer] FOCUS_FIRST_PARAMETER AJAX event sent once too often

  • ISIS-3209 - Migrate Core to JUnit 5

  • ISIS-3207 - Migrate Core to Java Module System

  • ISIS-3204 - [Metamodel] Support for bounded Generics

  • ISIS-3199 - [Metamodel] Move Responsibiltiy for Bookmark and ObjectMemento Creation

  • ISIS-3195 - Jpa applib should transitively bring in spring-data-jpa

  • ISIS-3194 - Provide default impl of PdfJsViewerAdvisor

  • ISIS-3193 - Don’t reset parameter arguments to default if the end-user has changed them.

  • ISIS-3192 - clean up dependencyManagement for extensions pom, testing pom

  • ISIS-3191 - Make the namespace for sessionlog follow convention of other extensions, eg commandLog and executionLog

  • ISIS-3187 - Secman seed improvements.

  • ISIS-3185 - audit trail, command log, execution log, secman etc should NOT implement ModuleWithFixtures

  • ISIS-3183 - Move JDO/DN mixins into separate module

  • ISIS-3182 - Split Viewer Commons Model into Applib/Model/Services

  • ISIS-3180 - Cosmetic UI fix - only apply .85em once for badges

  • ISIS-3163 - secman UserManager and RoleManager both show "metadata" as rather ugly region at end; let’s move top right; also ensure contributed actions are available through it.

  • ISIS-3161 - confirm usage of spring-instrument-5.3.5.jar for JPA weaving (or otherwise…​?)

  • ISIS-3160 - remove IsisConfigurationLegacy ?

  • ISIS-3127 - [RO] Render ValueDecomposition as Map rather than String

  • ISIS-3116 - No (Property) Columns when redendering Collection of Embedded Types (Demo App)

  • ISIS-3110 - Defer audit trail publishing until end of transaction

  • ISIS-3109 - [Wicket Viewer] Wire up ZoneId from Login Page with InteractionContexts

  • ISIS-3107 - For JDO, autocreate schema, allow multiple placeholders in string

  • ISIS-3104 - factor out Object_clearHints into own module for wicket applib

  • ISIS-3103 - Separation of Concerns: BookmarkServiceDefault vs SerializingAdapter

  • ISIS-3102 - Rename LayoutMixinConstants to FallbackLayoutFieldSetIds

  • ISIS-3100 - Move SSE from 'valuetypes' to 'extensions'

  • ISIS-3099 - Move Prism from 'valuetypes' to 'viewer-commons'

  • ISIS-3097 - [Wicket Viewer] Migrate Prism to Webjars

  • ISIS-3094 - use logicalMemberIdentifier for audit trail (rather than physical memberId)

  • ISIS-3093 - Change name of event subclasses from ActionEvent to ActionDomainEvent, throughout.

  • ISIS-3091 - audit trail (impl EntityPropertyChanges subscriber to persist to DB).

  • ISIS-3087 - Remove CURRENT and NORMALIZED for LayoutService file styles.

  • ISIS-3086 - Don’t fail fast if layout mentions unknown collectionId

  • ISIS-3085 - [Wicket Viewer] Migrate Tempus-dominus to Webjars

  • ISIS-3084 - [RO/Wrapper] Remove the Notion of mutable Collections (with associated Events)

  • ISIS-3076 - ExceptionStackTracePanel should use PageClassRegistry to lookup HomePage

  • ISIS-3068 - NPE because ObjectSpecification is of sort VIEW_MODEL but has no ViewModelFacet

  • ISIS-3064 - Change schema for secman to "isisExtSecman", so consistent with namespace.

  • ISIS-3060 - [Performance] Don’t copy Facets between FacetHolders, use unique FacetHolders instead

  • ISIS-3057 - move packages for excel extension applib, is all

  • ISIS-3045 - UX: Explanatory tooltip/description for 'Clear Hints' Button.

  • ISIS-3034 - [Metamodel] Unify HiddenTypeFacet and HiddenObjectFacet

  • ISIS-3033 - [Wicket Viewer] Inconsistent Form Field Widths with Action Prompt

  • ISIS-3032 - [Wicket Viewer] Consistent Placeholder Rendering (none) + (suppressed)

  • ISIS-3027 - [Metamodel] Improved Warning Message for non-eagerly introspected Types

  • ISIS-3025 - [Wicket Viewer] Make link color a CSS var '--link-color'

  • ISIS-3024 - [Wicket Viewer] Add Form Label Decorator

  • ISIS-3023 - [Wicket Viewer] Max Width for Form Labels

  • ISIS-3021 - [Metamodel] Improved Validation Message for DomainServices when missing Namespace

  • ISIS-3017 - [Wicket Viewer] WebRequestCycleForIsis does not display recognizable error.

  • ISIS-3010 - [JDO] Add Support for JPA annotations, as DN allows these

  • ISIS-3006 - [Wicket Viewer] Several UI Glitches

  • ISIS-3004 - [Programming Model] Deprecate superfluous @DomainService.logicalTypeName

  • ISIS-3001 - Move subdomains/excel to extensions/applib/excel

  • ISIS-3000 - [RO] Relocate the RO client from mappings-restclient to isis-viewer-restfulobjects-client

  • ISIS-2999 - Remove subdomains and mappings artifacts

  • ISIS-2994 - [Viewers] Consolidate direct Uses of Facets into a Utility

  • ISIS-2993 - [Commons] Replace Result<T> with more general purpose Try<T>

  • ISIS-2987 - Although PoReader could translate text without context, can’t read it from a file

  • ISIS-2975 - Enable nightly builds using github’s own package registry.

  • ISIS-2974 - Update unittestsupport to use junit v5

  • ISIS-2959 - [Wicket Viewer] menu bar lists which are too long (eg Prototyping) should have a scroll bar.

  • ISIS-2902 - Harmonize ManagedMember.MemberType and Identifier.Type

  • ISIS-2900 - wrapMixin(…​) should inject into both mixin and mixee and result of action.

  • ISIS-2858 - AbstractUserAndRoleScript and similar should inject into suppliers.

  • ISIS-2843 - Remove mavendeps 'integtests' and 'unittests'.

  • ISIS-2825 - LinkAndLabelFactoryAbstract: remove 'Wicket Hack'

  • ISIS-2731 - Allow injected services to have getters on them. This would allow entities to be annotated with @lombok.Data, removing some boilerplate.

  • ISIS-2702 - Unnecessary warning is logged whenever return an standalone collection from an action

  • ISIS-2651 - JDO bootstrapping for h2 seems to only lazily create tables. For reliability, create all up-front.

  • ISIS-2427 - Create a Docker Image showcasing the Vaadin Demo.

  • ISIS-2251 - Improve the parent pom.xml, see blog

Security Fixes

  • ISIS-3128 - CVE-2022-42467 [Security] h2 console potentially vulnerable to code execution

  • ISIS-3077 - [Vulnerability] Scalar Value Output Rendering is not escaped. (XSS Vulnarability)

  • ISIS-2977 - [Vulnerability] jdom dependency has XXE vulnerability

Bug

  • ISIS-3234 - jdo simpleapp throws exception (execution outbox entry) when delete.

  • ISIS-3225 - Simple App throws ExcutionLog related Exception on deleting a SimpleObject

  • ISIS-3223 - WrapperFactory with async executor service throws exception

  • ISIS-3219 - [Wicket Viewer] Exception on Page Deserialization

  • ISIS-3215 - [Wicket Viewer] Multi-param Action Dialogs - Select2 Change Event has no Payload (when using autocomplete)

  • ISIS-3208 - [Regression] @javax.persistence.GeneratedValue(strategy = GenerationType.IDENTITY) throws Exception

  • ISIS-3202 - [Regression] Wicket Viewer: Executions don’t persist

  • ISIS-3201 - [Wicket Viewer] Default methods not triggered after changing a date parameter with date picker

  • ISIS-3200 - [Regression] Value Choices throw an Exception in the UI

  • ISIS-3198 - [Wicket Viewer] action parameter hiding problem & default method argument null

  • ISIS-3189 - Entities with application-defined String PK failing to persist with JDO (eg ApplicationTenancy).

  • ISIS-3184 - ExecutionLogEntry_siblingExecutions fails with runtime exception

  • ISIS-3181 - (In simpleapp JPA snapshot), attempting to open ExecutionLogEntry as a 'recent execution' from session fails. Can navigate to it from other places, eg from Audit trail → Command.

  • ISIS-3179 - handle commandlogentry PK under JPA (NPE)

  • ISIS-3178 - session log is not updated on logout (JPA)

  • ISIS-3177 - Fix EclipseLinkConfiguration config property defaults to max the actual defaults.

  • ISIS-3176 - Add missing @ObjectSupport methods

  • ISIS-3174 - [Regression] NPE on Wicket Session Recovery

  • ISIS-3172 - [Wicket Viewer] Parameter Default Rendering Glitch

  • ISIS-3167 - Comparator in @CollectionLayout(sortedBy = …​) gets passed in detached Entities

  • ISIS-3166 - [Wicket Viewer] Timepicker partial Visibility Glitch in the Context of Sidebar Rendering

  • ISIS-3165 - [Wicket Viewer] Collection-associated Action w/ Boolean Arg throws Exception

  • ISIS-3164 - [Secman] ApplicationUser (JDO) view shows only icon, no columns, of each associated role in table ; ditto tenancy children

  • ISIS-3162 - [Regression] Download "object layouts zip" throws exception

  • ISIS-3135 - Object_recentAuditEntries doesn’t show list of properties.

  • ISIS-3126 - [JDO] Stack Overflow on TimestampService#onPreStore

  • ISIS-3125 - [Regression] nested Class Wicket in Isis Configuration is not Serializable

  • ISIS-3121 - [Wicket Viewer] UI does not honor minFractionalDigits when rendering BigDecimal

  • ISIS-3115 - IdStringifierLookupService needs to enforce IdStringifierForSerializable to go last

  • ISIS-3114 - IdStringifierForSerializable does not handle all Serializables

  • ISIS-3113 - Using OAuth2 leads to IndexOutOfBoundsException at Startup

  • ISIS-3112 - Custom per-Member Value Semantics does not honor Collection of Values

  • ISIS-3111 - Pretty rendering for ChangesDto

  • ISIS-3108 - AuditTrailEntry should not attempt to audit itself (!)

  • ISIS-3106 - Preserve the @ActionLayout(position) correctly, eg for Object_clearHints

  • ISIS-3101 - [Regression] NPE on bookmark rehydration

  • ISIS-3096 - Fix logical type names of isis-provided services, so consistent with their owning module.

  • ISIS-3088 - [Wicket Viewer] Mandatory enum dropdown does not accept changed values

  • ISIS-3080 - URL Demo throws Exception on Update Action

  • ISIS-3072 - [Regression] Parameter Names not picked from Service Action’s ParameterLayout

  • ISIS-3070 - [Wicket Viewer] Viewmodel with referenced Entity as mandatory Property fails to handle Choices

  • ISIS-3069 - [Regression] Deprecated DomainService naming strategy not picked up by Spring

  • ISIS-3067 - Cannot launch demo after bump asciidoctorj.version from 2.5.3 to 2.5.4

  • ISIS-3066 - Concurrent Modification Exception on Metamodel Reload

  • ISIS-3065 - ManagedObjects.EntityUtil.refetch(…​) does not handle the object-not found case well

  • ISIS-3058 - [Regression] WicketViewer: Detached Entities on Standalone Collection of Viewmodels.

  • ISIS-3056 - [Wicket Viewer] Verify Action Button Coloring works on mixed in Actions

  • ISIS-3054 - [Regression] Wicket Viewer: non-scalar autoComplete is broken

  • ISIS-3053 - [Regression] Wicket Viewer: Click on no-arg Action with ARE_YOU_SURE Semantics does nothing, when has Tooltip

  • ISIS-3050 - [Wicket Viewer] (none) badge rendering glitches

  • ISIS-3049 - Functional issues with demo app

  • ISIS-3028 - [Wicket Viewer] Scalar Value Validator might pass Wrapped Values to ObjectManager for Adoption

  • ISIS-3026 - [Wicket Viewer] CSS class generated for property name may clash with predefined ones

  • ISIS-3022 - [Wicket Viewer] Regression: entity link click no longer honors CTRL key down

  • ISIS-3019 - [Metamodel] @Domain.Exclude not working as a Method Veto Marker

  • ISIS-3018 - [Duplicate] DataRowWkt is looking up DataRow by uuid and it causes NPE

  • ISIS-3016 - [Wicket Viewer] JGrowlUtil does not escape multiline characters well.

  • ISIS-3013 - [Wicket Viewer] ComponentHintKey can cause NPE

  • ISIS-3012 - [RO] Exception Handling depends on javax.jdo, which is not always provided

  • ISIS-3009 - Entity change publishing in demo app seemingly broken.

  • ISIS-3005 - [Wicket Viewer] DataRowToggle might throw after issuing a Blob Download

  • ISIS-2995 - Verify IsisModuleSecurityBypass does bypass Password Hash Generation

  • ISIS-2992 - [Applib] VirtualClock.nowAt(LocalDate.parse("2014-05-18")) fails.

  • ISIS-2986 - Some ValueSemanticsProvider does not take into account the null value

  • ISIS-2985 - [Wicket Viewer] Modal dialog "X" button does not close interaction well

  • ISIS-2984 - @GeneratedValue(strategy = GenerationType.SEQUENCE) no longer works after migrating to 2.0.0.M7

  • ISIS-2982 - I18n does not load translation files

  • ISIS-2981 - [Wicket Viewer] Login/rememberMe not working across App-Restarts when Prototyping

  • ISIS-2980 - [Metamodel] Default layout not loaded due to missing GridReader

  • ISIS-2978 - [Commons] Concurrent Threads use wrong ClassLoader

  • ISIS-2976 - [Wicket Viewer] Re-hydrate mixed-in collection issue when jumping between tabs

  • ISIS-2970 - [Wicket Viewer] Validation messages for textfield throw IAE

  • ISIS-2969 - ManagedObject’s NATURAL_NULL_FIRST Comparator cannot handle null well

  • ISIS-2967 - ApplicationUser.@UserLocale is missing MAX_LENGTH definitions

  • ISIS-2964 - UserMemento fails Deserialization as a Viewmodel

  • ISIS-2960 - jdo + jpa : duplicate primary key exception is not propagated to Wicket viewer

  • ISIS-2958 - IsisToWicketTreeAdapter$TreeModel Deserialization fails to resolve Injection Points

  • ISIS-2805 - Lifecycle events do not fire for JDO (either)

  • ISIS-2770 - Tabbing onto a date field doesn’t show the date picker.

  • ISIS-2627 - SecMan: UserPermissionViewModel, IllegalArgumentException when username contains a colon (:)

  • ISIS-2585 - "(none)" label not hidden after entity-type property set

  • ISIS-2578 - No injection points resolved on entity collections (both persistence stacks)

  • ISIS-2377 - [JUnit] Regression: download Layout.xml 'normalized' seems to behave like 'full'

  • ISIS-1937 - NPE when render domain entity for first time that has contributed action on contributed collection.

Docs and Website

  • ISIS-3213 - Remove logos for other products from home page

  • ISIS-3073 - Documentation Fixes & Addons

  • ISIS-3046 - isis-mavendeps-xxxtest were removed, but I think they are still in docs / pptx slide.

Dependency Upgrade

Demo and Starter Apps

  • ISIS-2971 - [Demo] Missing Showcase for Enums (as value-types)

  • ISIS-2874 - update the README for simpleapp and perhaps helloworld (m6 and later)

Task

  • ISIS-2998 - maven projects not being deployed at end.

  • ISIS-3117 - Add missing sha256 or sha512 to already released isis/isis-parent/isis-parent-2.0.0-M7-source-release.zip

  • ISIS-3078 - Script to automate rename

  • ISIS-2965 - Release activities for 2.0.0-M8

Won’t Fix / Not a Problem / Duplicates

  • ISIS-3227 - [NOT A PROBLEM] WicketViewer cssClass Expression

  • ISIS-3216 - [DUPLICATE] Multi-param Action Dialogs - TimePicker Change Event has no Payload

  • ISIS-3205 - [NOT A PROBLEM] Contributed properties returning BigDecimal or BigInteger do not display null values correctly

  • ISIS-3196 - [NOT A BUG] RO - HTTP 404 when invoking /properties/objectIdentifier

  • ISIS-3036 - [invalid] Remove BuilderScriptAbstract#setPrereq as it is now useless.

  • ISIS-3030 - [NOT A BUG] Multiple level drop down List issue

  • ISIS-2279 - [WON’T FIX] Make caching optional in InjectorMethodEvaluatorDefault to avoid large heap usage

  • ISIS-2990 - [Duplicate] Clean build and run displays ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory

  • ISIS-2979 - [Duplicate] Removing any JPA entity in an action, which is in a parameter value, causes ObjectNotFoundException

  • ISIS-2065 - [WON’T FIX] Allow homePageService to specify the homePage without the workaround of setting its nature to VIEW_CONTRIBUTIONS_ONLY

Incubating Features

  • ISIS-3003 - [Extensions] Reinstate Command Replay Service

  • ISIS-2957 - [kroviz] Visualize REST Performance