You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/06/10 06:08:47 UTC

[isis] 01/03: ISIS-2483: regenerated refguide index

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 8c7f6d686c71a247d8013c9d05dccd3461ca96e1
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jun 10 07:05:08 2021 +0100

    ISIS-2483: regenerated refguide index
---
 .../applib/pages/index/annotation/Nature.adoc      |  1 +
 .../applib/pages/index/annotation/Value.adoc       | 13 ++++
 .../pages/index/mixins/dto/Dto_downloadXml.adoc    |  8 +--
 .../index/services/metrics/MetricsService.adoc     |  4 +-
 .../pages/index/services/sudo/SudoService.adoc     | 14 ++--
 .../pages/index/services/user/UserService.adoc     |  8 +--
 .../commons/pages/index/functional/Result.adoc     |  1 -
 .../interaction/session/InteractionFactory.adoc    | 78 ++++------------------
 .../security/authentication/Authentication.adoc    | 40 +++++++----
 .../manager/AnonymousInteractionFactory.adoc       | 24 ++++++-
 .../jdo/mixins/Object_recentCommands.adoc          |  5 +-
 .../secondary/clock/TickingClockService.adoc       |  2 +-
 .../applib/seed/SeedSecurityModuleService.adoc     |  4 ++
 .../scripts/SeedUsersAndRolesFixtureScript.adoc    |  4 +-
 .../applib/fixturescripts/FixtureScripts.adoc      | 13 +---
 .../restfulobjects/rendering/IResourceContext.adoc |  2 +-
 core/adoc/modules/_overview/pages/about.adoc       | 50 +++++++++++---
 17 files changed, 146 insertions(+), 125 deletions(-)

diff --git a/antora/components/refguide-index/modules/applib/pages/index/annotation/Nature.adoc b/antora/components/refguide-index/modules/applib/pages/index/annotation/Nature.adoc
index 05dfee4..fc34c23 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/annotation/Nature.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/annotation/Nature.adoc
@@ -15,6 +15,7 @@ enum Nature {
   MIXIN     // <.>
   BEAN     // <.>
   boolean isEntity()
+  boolean isMixin()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/annotation/Value.adoc b/antora/components/refguide-index/modules/applib/pages/index/annotation/Value.adoc
index 780d5f8..6c121e5 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/annotation/Value.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/annotation/Value.adoc
@@ -20,11 +20,17 @@ Note also that though a value is conceptually not shared, if it is also immutabl
 .Value.java
 ----
 @interface Value {
+  String logicalTypeName() default "";     // <.>
   String semanticsProviderName() default "";     // <.>
   Class<?> semanticsProviderClass() default Value.class;     // <.>
 }
 ----
 
+<.> xref:#logicalTypeName[logicalTypeName]
++
+--
+The logical name of this value's type, that uniquely and fully qualifies it. The logical name is analogous to - but independent of - the actual fully qualified class name. eg. _sales.Customer_ for a class 'org.mycompany.dom.Customer'
+--
 <.> xref:#semanticsProviderName[semanticsProviderName]
 +
 --
@@ -38,6 +44,13 @@ As per _#semanticsProviderName()_ , but specifying a class literal rather than a
 
 == Members
 
+[#logicalTypeName]
+=== logicalTypeName
+
+The logical name of this value's type, that uniquely and fully qualifies it. The logical name is analogous to - but independent of - the actual fully qualified class name. eg. _sales.Customer_ for a class 'org.mycompany.dom.Customer'
+
+If not specified, the fully qualified class name is used instead.
+
 [#semanticsProviderName]
 === semanticsProviderName
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXml.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXml.adoc
index c6cb340..b4b2592 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXml.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXml.adoc
@@ -12,13 +12,7 @@ Requires that the view model is a JAXB view model, and implements the xref:refgu
 ----
 class Dto_downloadXml {
   Object act(final String fileName)
-  String default0Act()     // <.>
+  String default0Act()
 }
 ----
 
-<.> xref:#default0Act__[default0Act()]
-
-== Members
-
-[#default0Act__]
-=== default0Act()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/metrics/MetricsService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/metrics/MetricsService.adoc
index 4330446..9c4f739 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/metrics/MetricsService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/metrics/MetricsService.adoc
@@ -36,7 +36,7 @@ The number of entities that have, so far in this request, been loaded from the d
 
 Corresponds to the number of times that `javax.jdo.listener.LoadLifecycleListener#postLoad(InstanceLifecycleEvent)` (or equivalent) is fired.
 
-Is captured within _MemberExecutionDto#getMetrics()_ (accessible from _InteractionContext#currentInteraction()_ ).
+Is captured within _MemberExecutionDto#getMetrics()_ (accessible from _InteractionProvider#currentInteraction()_ ).
 
 [#numberEntitiesDirtied__]
 === numberEntitiesDirtied()
@@ -45,7 +45,7 @@ The number of objects that have, so far in this request, been dirtied/will need
 
 Corresponds to the number of times that `javax.jdo.listener.DirtyLifecycleListener#preDirty(InstanceLifecycleEvent)` (or equivalent) callback is fired.
 
-Is captured within _MemberExecutionDto#getMetrics()_ (accessible from _InteractionContext#currentInteraction()_ .
+Is captured within _MemberExecutionDto#getMetrics()_ (accessible from _InteractionProvider#currentInteraction()_ .
 
 include::hooks/MetricsService_010-implementation.adoc[]
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/sudo/SudoService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/sudo/SudoService.adoc
index 5e4f0b4..126d27e 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/sudo/SudoService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/sudo/SudoService.adoc
@@ -1,7 +1,7 @@
 = SudoService _(interface)_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Allows a block of code to be executed within an arbitrary xref:refguide:applib:index/services/iactn/ExecutionContext.adoc[ExecutionContext] , allowing the who, when and where to be temporarily switched.
+Allows a block of code to be executed within an arbitrary xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] , allowing the who, when and where to be temporarily switched.
 
 Most typically this service is used to temporarily change the &qout;who", that is the user reported by the xref:refguide:applib:index/services/user/UserService.adoc[UserService] 's _UserService#currentUser() getUser()_ - hence the name SudoService. But the user's locale and timezome can also be changed, as well as the time reported by _org.apache.isis.applib.services.clock.ClockService_ .
 
@@ -14,8 +14,8 @@ The primary use case for this service is for fixture scripts and integration tes
 ----
 interface SudoService {
   RoleMemento ACCESS_ALL_ROLE;     // <.>
-  T call(final UnaryOperator<ExecutionContext> sudoMapper, final Callable<T> supplier)     // <.>
-  void run(final UnaryOperator<ExecutionContext> sudoMapper, final ThrowingRunnable runnable)     // <.>
+  T call(final UnaryOperator<InteractionContext> sudoMapper, final Callable<T> supplier)     // <.>
+  void run(final UnaryOperator<InteractionContext> sudoMapper, final ThrowingRunnable runnable)     // <.>
 }
 ----
 
@@ -27,12 +27,12 @@ If included in the list of roles, then will disable security checks (can view an
 <.> xref:#call__UnaryOperator_Callable[call(UnaryOperator, Callable)]
 +
 --
-Executes the supplied _Callable_ block, within the provided xref:refguide:applib:index/services/iactn/ExecutionContext.adoc[ExecutionContext] .
+Executes the supplied _Callable_ block, within the provided xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] .
 --
 <.> xref:#run__UnaryOperator_ThrowingRunnable[run(UnaryOperator, ThrowingRunnable)]
 +
 --
-Executes the supplied _Callable_ block, within the provided xref:refguide:applib:index/services/iactn/ExecutionContext.adoc[ExecutionContext] .
+Executes the supplied _Callable_ block, within the provided xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] .
 --
 
 == Members
@@ -45,12 +45,12 @@ If included in the list of roles, then will disable security checks (can view an
 [#call__UnaryOperator_Callable]
 === call(UnaryOperator, Callable)
 
-Executes the supplied _Callable_ block, within the provided xref:refguide:applib:index/services/iactn/ExecutionContext.adoc[ExecutionContext] .
+Executes the supplied _Callable_ block, within the provided xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] .
 
 [#run__UnaryOperator_ThrowingRunnable]
 === run(UnaryOperator, ThrowingRunnable)
 
-Executes the supplied _Callable_ block, within the provided xref:refguide:applib:index/services/iactn/ExecutionContext.adoc[ExecutionContext] .
+Executes the supplied _Callable_ block, within the provided xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] .
 
 include::hooks/SudoService_010-implementation.adoc[]
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/user/UserService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/user/UserService.adoc
index d8744fd..a1646b8 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/user/UserService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/user/UserService.adoc
@@ -27,7 +27,7 @@ interface UserService {
 <.> xref:#currentUser__[currentUser()]
 +
 --
-Optionally gets the details about the current user, based on whether an xref:refguide:applib:index/services/iactn/ExecutionContext.adoc[ExecutionContext] can be found with the current thread's context.
+Optionally gets the details about the current user, based on whether an xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] can be found with the current thread's context.
 --
 <.> xref:#getUser__[getUser()]
 +
@@ -42,7 +42,7 @@ Gets the details about the current user.
 <.> xref:#currentUserName__[currentUserName()]
 +
 --
-Optionally gets the the current user's name, based on whether an xref:refguide:applib:index/services/iactn/ExecutionContext.adoc[ExecutionContext] can be found with the current thread's context.
+Optionally gets the the current user's name, based on whether an xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] can be found with the current thread's context.
 --
 <.> xref:#currentUserNameElseNobody__[currentUserNameElseNobody()]
 +
@@ -80,7 +80,7 @@ Whether or not the user currently reported (in _#currentUser()_ and similar) is
 [#currentUser__]
 === currentUser()
 
-Optionally gets the details about the current user, based on whether an xref:refguide:applib:index/services/iactn/ExecutionContext.adoc[ExecutionContext] can be found with the current thread's context.
+Optionally gets the details about the current user, based on whether an xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] can be found with the current thread's context.
 
 [#getUser__]
 === getUser()
@@ -95,7 +95,7 @@ Gets the details about the current user.
 [#currentUserName__]
 === currentUserName()
 
-Optionally gets the the current user's name, based on whether an xref:refguide:applib:index/services/iactn/ExecutionContext.adoc[ExecutionContext] can be found with the current thread's context.
+Optionally gets the the current user's name, based on whether an xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] can be found with the current thread's context.
 
 [#currentUserNameElseNobody__]
 === currentUserNameElseNobody()
diff --git a/antora/components/refguide-index/modules/commons/pages/index/functional/Result.adoc b/antora/components/refguide-index/modules/commons/pages/index/functional/Result.adoc
index 0e057d1..fbe45a7 100644
--- a/antora/components/refguide-index/modules/commons/pages/index/functional/Result.adoc
+++ b/antora/components/refguide-index/modules/commons/pages/index/functional/Result.adoc
@@ -10,7 +10,6 @@ The xref:refguide:commons:index/functional/Result.adoc[Result] type represents a
 ----
 class Result<L> {
   Result<L> of(final Callable<L> callable)
-  Result<Void> ofVoid(final ThrowingRunnable runnable)
   Result<L> success(final L value)
   Result<L> failure(final Throwable throwable)
   Result<L> failure(final String message)
diff --git a/antora/components/refguide-index/modules/core/pages/index/interaction/session/InteractionFactory.adoc b/antora/components/refguide-index/modules/core/pages/index/interaction/session/InteractionFactory.adoc
index df8885f..2204047 100644
--- a/antora/components/refguide-index/modules/core/pages/index/interaction/session/InteractionFactory.adoc
+++ b/antora/components/refguide-index/modules/core/pages/index/interaction/session/InteractionFactory.adoc
@@ -1,9 +1,7 @@
 = InteractionFactory _(interface)_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-The factory of _InteractionSession_ (s) and _AuthenticationLayer_ (s), also holding a reference to the current authentication layer stack using a thread-local.
-
-The implementation is a singleton service.
+The factory of xref:refguide:core:index/security/authentication/Authentication.adoc[Authentication] (s) and xref:refguide:applib:index/services/iactnlayer/InteractionLayer.adoc[InteractionLayer] (s), holding a reference to the current xref:refguide:applib:index/services/iactnlayer/InteractionLayer.adoc[InteractionLayer] stack using a thread-local.
 
 == API
 
@@ -11,100 +9,52 @@ The implementation is a singleton service.
 .InteractionFactory.java
 ----
 interface InteractionFactory {
-  AuthenticationLayer openInteraction()     // <.>
-  AuthenticationLayer openInteraction(Authentication authentication)     // <.>
-  boolean isInInteraction()     // <.>
   R callAuthenticated(Authentication authentication, Callable<R> callable)     // <.>
-  void runAuthenticated(Authentication authentication, ThrowingRunnable runnable)     // <.>
   R callAnonymous(Callable<R> callable)     // <.>
+  void runAuthenticated(Authentication authentication, ThrowingRunnable runnable)     // <.>
   void runAnonymous(ThrowingRunnable runnable)     // <.>
-  void closeSessionStack()     // <.>
 }
 ----
 
-<.> xref:#openInteraction__[openInteraction()]
-+
---
-If present, reuses the current top level _AuthenticationLayer_ , otherwise creates a new anonymous one.
---
-<.> xref:#openInteraction__Authentication[openInteraction(Authentication)]
-+
---
-Returns a new or reused _AuthenticationLayer_ that is a holder of xref:refguide:core:index/security/authentication/Authentication.adoc[Authentication] on top of the current thread's authentication layer stack.
---
-<.> xref:#isInInteraction__[isInInteraction()]
 <.> xref:#callAuthenticated__Authentication_Callable[callAuthenticated(Authentication, Callable)]
 +
 --
-Executes a block of code with a new or reused _InteractionSession_ using a new or reused _AuthenticationLayer_ .
---
-<.> xref:#runAuthenticated__Authentication_ThrowingRunnable[runAuthenticated(Authentication, ThrowingRunnable)]
-+
---
-Variant of _#callAuthenticated(Authentication, Callable)_ that takes a runnable.
+As per _#call(InteractionContext, Callable)_ , using the xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] _Authentication#getInteractionContext() obtained_ from the provided xref:refguide:core:index/security/authentication/Authentication.adoc[Authentication] .
 --
 <.> xref:#callAnonymous__Callable[callAnonymous(Callable)]
 +
 --
-Executes a block of code with a new or reused _InteractionSession_ using a new or reused _AuthenticationLayer_ .
+As per _#call(InteractionContext, Callable)_ , but using an xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] _Authentication#getInteractionContext() obtained_ from an anonymous xref:refguide:core:index/security/authentication/Authentication.adoc[Authentication] .
 --
-<.> xref:#runAnonymous__ThrowingRunnable[runAnonymous(ThrowingRunnable)]
+<.> xref:#runAuthenticated__Authentication_ThrowingRunnable[runAuthenticated(Authentication, ThrowingRunnable)]
 +
 --
-Variant of _#callAnonymous(Callable)_ that takes a runnable.
+As per _#callAuthenticated(Authentication, Callable)_ , but for a runnable.
 --
-<.> xref:#closeSessionStack__[closeSessionStack()]
+<.> xref:#runAnonymous__ThrowingRunnable[runAnonymous(ThrowingRunnable)]
 +
 --
-closes all open _AuthenticationLayer_ (s) as stacked on the current thread
+As per _#callAnonymous(Callable)_ , but for a runnable.
 --
 
 == Members
 
-[#openInteraction__]
-=== openInteraction()
-
-If present, reuses the current top level _AuthenticationLayer_ , otherwise creates a new anonymous one.
-
-[#openInteraction__Authentication]
-=== openInteraction(Authentication)
-
-Returns a new or reused _AuthenticationLayer_ that is a holder of xref:refguide:core:index/security/authentication/Authentication.adoc[Authentication] on top of the current thread's authentication layer stack.
-
-If available reuses an existing _InteractionSession_ , otherwise creates a new one.
-
-The _InteractionSession_ represents a user's span of activities interacting with the application. The session's stack is later closed using _#closeSessionStack()_ .
-
-[#isInInteraction__]
-=== isInInteraction()
-
 [#callAuthenticated__Authentication_Callable]
 === callAuthenticated(Authentication, Callable)
 
-Executes a block of code with a new or reused _InteractionSession_ using a new or reused _AuthenticationLayer_ .
+As per _#call(InteractionContext, Callable)_ , using the xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] _Authentication#getInteractionContext() obtained_ from the provided xref:refguide:core:index/security/authentication/Authentication.adoc[Authentication] .
 
-If there is currently no _InteractionSession_ a new one is created.
+[#callAnonymous__Callable]
+=== callAnonymous(Callable)
 
-If there is currently an _AuthenticationLayer_ that has an equal xref:refguide:core:index/security/authentication/Authentication.adoc[Authentication] to the given one, it is reused, otherwise a new one is created.
+As per _#call(InteractionContext, Callable)_ , but using an xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] _Authentication#getInteractionContext() obtained_ from an anonymous xref:refguide:core:index/security/authentication/Authentication.adoc[Authentication] .
 
 [#runAuthenticated__Authentication_ThrowingRunnable]
 === runAuthenticated(Authentication, ThrowingRunnable)
 
-Variant of _#callAuthenticated(Authentication, Callable)_ that takes a runnable.
-
-[#callAnonymous__Callable]
-=== callAnonymous(Callable)
-
-Executes a block of code with a new or reused _InteractionSession_ using a new or reused _AuthenticationLayer_ .
-
-If there is currently no _InteractionSession_ a new one is created and a new anonymous _AuthenticationLayer_ is returned. Otherwise both, session and layer are reused.
+As per _#callAuthenticated(Authentication, Callable)_ , but for a runnable.
 
 [#runAnonymous__ThrowingRunnable]
 === runAnonymous(ThrowingRunnable)
 
-Variant of _#callAnonymous(Callable)_ that takes a runnable.
-
-[#closeSessionStack__]
-=== closeSessionStack()
-
-closes all open _AuthenticationLayer_ (s) as stacked on the current thread
+As per _#callAnonymous(Callable)_ , but for a runnable.
diff --git a/antora/components/refguide-index/modules/core/pages/index/security/authentication/Authentication.adoc b/antora/components/refguide-index/modules/core/pages/index/security/authentication/Authentication.adoc
index 0ab2559..bdddcfc 100644
--- a/antora/components/refguide-index/modules/core/pages/index/security/authentication/Authentication.adoc
+++ b/antora/components/refguide-index/modules/core/pages/index/security/authentication/Authentication.adoc
@@ -3,18 +3,22 @@
 
 An immutable, serializable value type, that holds details about a user's authentication.
 
+This is really little more than a thin wrapper around xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] , surfaces a number of the security-specific attributes of that field.
+
 == API
 
 [source,java]
 .Authentication.java
 ----
 interface Authentication {
+  String INTERACTION_CONTEXT_KEY;
   String getUserName()     // <.>
   String getValidationCode()     // <.>
   UserMemento getUser()     // <.>
-  ExecutionContext getExecutionContext()     // <.>
+  InteractionContext getInteractionContext()     // <.>
   Type getType()     // <.>
-  Authentication withExecutionContext(ExecutionContext interactionContext)     // <.>
+  Authentication withInteractionContext(InteractionContext interactionContext)     // <.>
+  Optional<Authentication> authenticationFrom(final InteractionContext interactionContext)     // <.>
 }
 ----
 
@@ -33,20 +37,25 @@ A unique code given to this session during authentication.
 --
 The (programmatically) simulated (or actual) user, belonging to this session.
 --
-<.> xref:#getExecutionContext__[getExecutionContext()]
+<.> xref:#getInteractionContext__[getInteractionContext()]
 +
 --
-The xref:refguide:applib:index/services/iactn/ExecutionContext.adoc[ExecutionContext] (programmatically) simulated (or actual), belonging to this session.
+The xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] (programmatically) simulated (or actual), belonging to this session.
 --
 <.> xref:#getType__[getType()]
 +
 --
 To support external security mechanisms such as keycloak, where the validity of the session is defined by headers in the request.
 --
-<.> xref:#withExecutionContext__ExecutionContext[withExecutionContext(ExecutionContext)]
+<.> xref:#withInteractionContext__InteractionContext[withInteractionContext(InteractionContext)]
++
+--
+Returns a copy with given _interactionContext_ .
+--
+<.> xref:#authenticationFrom__InteractionContext[authenticationFrom(InteractionContext)]
 +
 --
-Returns a copy with given _executionContext_ .
+Looks up an xref:refguide:core:index/security/authentication/Authentication.adoc[Authentication] from the provided xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] .
 --
 
 == Members
@@ -68,17 +77,24 @@ This can be used to confirm that this session has been properly created and the
 
 The (programmatically) simulated (or actual) user, belonging to this session.
 
-[#getExecutionContext__]
-=== getExecutionContext()
+[#getInteractionContext__]
+=== getInteractionContext()
 
-The xref:refguide:applib:index/services/iactn/ExecutionContext.adoc[ExecutionContext] (programmatically) simulated (or actual), belonging to this session.
+The xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] (programmatically) simulated (or actual), belonging to this session.
 
 [#getType__]
 === getType()
 
 To support external security mechanisms such as keycloak, where the validity of the session is defined by headers in the request.
 
-[#withExecutionContext__ExecutionContext]
-=== withExecutionContext(ExecutionContext)
+[#withInteractionContext__InteractionContext]
+=== withInteractionContext(InteractionContext)
+
+Returns a copy with given _interactionContext_ .
+
+[#authenticationFrom__InteractionContext]
+=== authenticationFrom(InteractionContext)
+
+Looks up an xref:refguide:core:index/security/authentication/Authentication.adoc[Authentication] from the provided xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] .
 
-Returns a copy with given _executionContext_ .
+If the xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext] was created as the result of an authentication process (as opposed to programmatically) then there will be an attached xref:refguide:core:index/security/authentication/Authentication.adoc[Authentication] object.
diff --git a/antora/components/refguide-index/modules/core/pages/index/security/authentication/manager/AnonymousInteractionFactory.adoc b/antora/components/refguide-index/modules/core/pages/index/security/authentication/manager/AnonymousInteractionFactory.adoc
index c5cbc29..917cf63 100644
--- a/antora/components/refguide-index/modules/core/pages/index/security/authentication/manager/AnonymousInteractionFactory.adoc
+++ b/antora/components/refguide-index/modules/core/pages/index/security/authentication/manager/AnonymousInteractionFactory.adoc
@@ -11,12 +11,22 @@ Introduced to allow the AuthenticationManager (module: security) access to the I
 .AnonymousInteractionFactory.java
 ----
 interface AnonymousInteractionFactory {
-  void runAnonymous(ThrowingRunnable runnable)
-  R callAnonymous(Callable<R> callable)
+  void runAnonymous(ThrowingRunnable runnable)     // <.>
+  R callAnonymous(Callable<R> callable)     // <.>
   AnonymousInteractionFactory forTesting()     // <.>
 }
 ----
 
+<.> xref:#runAnonymous__ThrowingRunnable[runAnonymous(ThrowingRunnable)]
++
+--
+Executes a block of code with anonymous credentials.
+--
+<.> xref:#callAnonymous__Callable[callAnonymous(Callable)]
++
+--
+Executes a block of code with anonymous credentials.
+--
 <.> xref:#forTesting__[forTesting()]
 +
 --
@@ -25,6 +35,16 @@ Returns a pass-through implementation, free of side-effects, in support of simpl
 
 == Members
 
+[#runAnonymous__ThrowingRunnable]
+=== runAnonymous(ThrowingRunnable)
+
+Executes a block of code with anonymous credentials.
+
+[#callAnonymous__Callable]
+=== callAnonymous(Callable)
+
+Executes a block of code with anonymous credentials.
+
 [#forTesting__]
 === forTesting()
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/mixins/Object_recentCommands.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/mixins/Object_recentCommands.adoc
index 2a09989..b0a1444 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/mixins/Object_recentCommands.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/mixins/Object_recentCommands.adoc
@@ -9,7 +9,6 @@ This mixin contributes a `recentCommands` action to any domain object (unless al
 .Object_recentCommands.java
 ----
 class Object_recentCommands {
-  Object_recentCommands(final Object domainObject)
   List<CommandJdo> act()
   boolean hideAct()     // <.>
 }
@@ -18,7 +17,7 @@ class Object_recentCommands {
 <.> xref:#hideAct__[hideAct()]
 +
 --
-Hide if the contributee is itself xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] (commands don't have commands).
+Hide if the mixee is itself xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] (commands don't have commands).
 --
 
 == Members
@@ -26,4 +25,4 @@ Hide if the contributee is itself xref:refguide:applib:index/mixins/system/HasIn
 [#hideAct__]
 === hideAct()
 
-Hide if the contributee is itself xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] (commands don't have commands).
+Hide if the mixee is itself xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] (commands don't have commands).
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/clock/TickingClockService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/clock/TickingClockService.adoc
index d448f58..ff62de7 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/clock/TickingClockService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/clock/TickingClockService.adoc
@@ -1,7 +1,7 @@
 = TickingClockService
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Only enabled for the `secondary` profile, where it sets up the framework to use _TickingFixtureClock_ so that time can be changed dynamically when running.
+Only enabled for the `secondary` profile, where it sets up the framework to use xref:refguide:testing:index/fixtures/applib/clock/clock/TickingFixtureClock.adoc[TickingFixtureClock] so that time can be changed dynamically when running.
 
 As an additional safeguard, if the configuration keys to access the primary are not provided, then the service will not initialize.
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/seed/SeedSecurityModuleService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/seed/SeedSecurityModuleService.adoc
index 0d75c57..f04f9df 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/seed/SeedSecurityModuleService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/seed/SeedSecurityModuleService.adoc
@@ -1,6 +1,10 @@
 = SeedSecurityModuleService
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Automatically seeds the built-in roles (and permissions) for both Secman and any other UI features made available by the other modules.
+
+The service just runs the xref:refguide:extensions:index/secman/applib/seed/scripts/SeedUsersAndRolesFixtureScript.adoc[SeedUsersAndRolesFixtureScript] on a callback of _MetamodelEvent_ .
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/seed/scripts/SeedUsersAndRolesFixtureScript.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/seed/scripts/SeedUsersAndRolesFixtureScript.adoc
index 69a464d..0e64f33 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/seed/scripts/SeedUsersAndRolesFixtureScript.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/applib/seed/scripts/SeedUsersAndRolesFixtureScript.adoc
@@ -1,7 +1,9 @@
 = SeedUsersAndRolesFixtureScript
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-This fixture script will be run automatically on start-up by virtue of the fact that the xref:refguide:extensions:index/secman/applib/seed/SeedSecurityModuleService.adoc[SeedSecurityModuleService] is a _org.apache.isis.applib.annotation.DomainService_ and calls the setup during its _SeedSecurityModuleService#onMetamodelEvent(org.apache.isis.core.metamodel.events.MetamodelEvent) init_ ( _javax.annotation.PostConstruct_ ) method.
+Sets up roles and permissions for both Secman itself and also for all other modules that expose UI features for use by end-users.
+
+This fixture script is run automatically on start-up by the xref:refguide:extensions:index/secman/applib/seed/SeedSecurityModuleService.adoc[SeedSecurityModuleService] .
 
 == API
 
diff --git a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts.adoc b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts.adoc
index 32baafe..e63f892 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/fixtures/applib/fixturescripts/FixtureScripts.adoc
@@ -13,10 +13,9 @@ class FixtureScripts {
 public static final String LOGICAL_TYPE_NAME;
   public static final String PACKAGE_PREFIX;     // <.>
   FixtureScripts(final FixtureScriptsSpecificationProvider fixtureScriptsSpecificationProvider, final ServiceRegistry serviceRegistry)
-  NonPersistedObjectsStrategy getNonPersistedObjectsStrategy()
-  MultipleExecutionStrategy getMultipleExecutionStrategy()     // <.>
   List<FixtureResult> runFixtureScript(final String fixtureScriptName, final String parameters)     // <.>
   List<FixtureResult> runFixtureScript(final FixtureScript fixtureScript, final String parameters)
+  boolean hideRunFixtureScript()
   String disableRunFixtureScript()
   String default0RunFixtureScript()
   Set<String> choices0RunFixtureScript()
@@ -45,11 +44,6 @@ public static final String LOGICAL_TYPE_NAME;
 --
 The package prefix to search for fixture scripts. This default value will result in no fixture scripts being found. However, normally it will be overridden.
 --
-<.> xref:#getMultipleExecutionStrategy__[getMultipleExecutionStrategy()]
-+
---
-Global setting as to how to handle fixture scripts that are executed more than once. See _MultipleExecutionStrategy_ for more details.
---
 <.> xref:#runFixtureScript__String_String[runFixtureScript(String, String)]
 +
 --
@@ -108,11 +102,6 @@ renamed to _#runBuilder(BuilderScriptAbstract)_
 
 The package prefix to search for fixture scripts. This default value will result in no fixture scripts being found. However, normally it will be overridden.
 
-[#getMultipleExecutionStrategy__]
-=== getMultipleExecutionStrategy()
-
-Global setting as to how to handle fixture scripts that are executed more than once. See _MultipleExecutionStrategy_ for more details.
-
 [#runFixtureScript__String_String]
 === runFixtureScript(String, String)
 
diff --git a/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/rendering/IResourceContext.adoc b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/rendering/IResourceContext.adoc
index ff2a61e..46b4f7c 100644
--- a/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/rendering/IResourceContext.adoc
+++ b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/rendering/IResourceContext.adoc
@@ -26,7 +26,7 @@ interface IResourceContext {
   boolean suppressMemberDisabledReason()
   boolean canEagerlyRender(ManagedObject objectAdapter)     // <.>
   RepresentationService.Intent getIntent()     // <.>
-  AuthenticationContext getAuthenticationContext()
+  AuthenticationProvider getAuthenticationContext()
   SpecificationLoader getSpecificationLoader()
   MetaModelContext getMetaModelContext()
   ServiceRegistry getServiceRegistry()
diff --git a/core/adoc/modules/_overview/pages/about.adoc b/core/adoc/modules/_overview/pages/about.adoc
index 5d2f00d..f18088f 100644
--- a/core/adoc/modules/_overview/pages/about.adoc
+++ b/core/adoc/modules/_overview/pages/about.adoc
@@ -527,7 +527,7 @@ org.apache.isis.testing:isis-testing-integtestsupport-applib:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:testing:index/fixtures/applib/IsisIntegrationTestAbstractWithFixtures.adoc[IsisIntegrationTestAbstractWithFixtures], xref:refguide:testing:index/fixtures/applib/clock/clock/Clock.adoc[Clock], xref:refguide:testing:index/fixtures/applib/clock/clock/FixtureClock.adoc[FixtureClock], xref:refguide:testing:index/fixtures/applib/clock/clock/TickingFixtureClock.adoc[TickingFixtureClock], xref:refguide:testing:index/fixtures/applib/clock/fixture/TickingClockFixture.adoc[TickingCloc [...]
+xref:refguide:testing:index/fixtures/applib/IsisIntegrationTestAbstractWithFixtures.adoc[IsisIntegrationTestAbstractWithFixtures], xref:refguide:testing:index/fixtures/applib/clock/TickingClockFixture.adoc[TickingClockFixture], xref:refguide:testing:index/fixtures/applib/clock/clock/Clock.adoc[Clock], xref:refguide:testing:index/fixtures/applib/clock/clock/FixtureClock.adoc[FixtureClock], xref:refguide:testing:index/fixtures/applib/clock/clock/TickingFixtureClock.adoc[TickingFixtureClock [...]
 ****
 
 |Apache Isis Tst - H2 Console (parent)
@@ -1503,6 +1503,7 @@ default (Java) programming model.
 ****
 o.a.i.applib.annotation.DomainObject +
 o.a.i.applib.annotation.DomainService +
+o.a.i.applib.annotation.Value +
 o.a.i.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto +
 o.a.i.applib.services.commanddto.conmap.ContentMappingServiceForCommandsDto +
 o.a.i.applib.services.commanddto.processor.spi.CommandDtoProcessorServiceIdentity +
@@ -1525,7 +1526,7 @@ org.jmock:jmock:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:applib:index/AbstractViewModel.adoc[AbstractViewModel], xref:refguide:applib:index/Identifier.adoc[Identifier], xref:refguide:applib:index/IsisModuleApplib.adoc[IsisModuleApplib], xref:refguide:applib:index/RecreatableDomainObject.adoc[RecreatableDomainObject], xref:refguide:applib:index/ViewModel.adoc[ViewModel], xref:refguide:applib:index/adapters/AbstractValueSemanticsProvider.adoc[AbstractValueSemanticsProvider], xref:refguide:applib:index/adapters/DefaultsProvider.adoc [...]
+xref:refguide:applib:index/AbstractViewModel.adoc[AbstractViewModel], xref:refguide:applib:index/Identifier.adoc[Identifier], xref:refguide:applib:index/IsisModuleApplib.adoc[IsisModuleApplib], xref:refguide:applib:index/RecreatableDomainObject.adoc[RecreatableDomainObject], xref:refguide:applib:index/ViewModel.adoc[ViewModel], xref:refguide:applib:index/adapters/AbstractValueSemanticsProvider.adoc[AbstractValueSemanticsProvider], xref:refguide:applib:index/adapters/DefaultsProvider.adoc [...]
 ****
 
 |Apache Isis Core - Code Gen (ByteBuddy)
@@ -3293,9 +3294,9 @@ Directory: /valuetypes/asciidoc/ui
 ----
 |.Dependencies
 ****
-com.github.jnr:jnr-constants:jar:0.10.1 +
-com.github.jnr:jnr-enxio:jar:0.32.5 +
-com.github.jnr:jnr-posix:jar:3.1.6 +
+com.github.jnr:jnr-constants:jar:0.10.2 +
+com.github.jnr:jnr-enxio:jar:0.32.6 +
+com.github.jnr:jnr-posix:jar:3.1.7 +
 org.apache.isis.core:isis-core-metamodel:jar:<managed> +
 org.apache.isis.valuetypes:isis-valuetypes-asciidoc-applib:jar:<managed> +
 org.asciidoctor:asciidoctorj:jar:${asciidoctorj.version} +
@@ -4392,7 +4393,7 @@ org.apache.isis.testing:isis-testing-fixtures-applib:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/secman/applib/IsisModuleExtSecmanApplib.adoc[IsisModuleExtSecmanApplib], xref:refguide:extensions:index/secman/applib/SecmanConfiguration.adoc[SecmanConfiguration], xref:refguide:extensions:index/secman/applib/permission/dom/ApplicationPermission.adoc[ApplicationPermission], xref:refguide:extensions:index/secman/applib/permission/dom/ApplicationPermissionMode.adoc[ApplicationPermissionMode], xref:refguide:extensions:index/secman/applib/permission/dom/Applic [...]
+xref:refguide:extensions:index/secman/applib/IsisModuleExtSecmanApplib.adoc[IsisModuleExtSecmanApplib], xref:refguide:extensions:index/secman/applib/SecmanConfiguration.adoc[SecmanConfiguration], xref:refguide:extensions:index/secman/applib/permission/dom/ApplicationPermission.adoc[ApplicationPermission], xref:refguide:extensions:index/secman/applib/permission/dom/ApplicationPermissionMode.adoc[ApplicationPermissionMode], xref:refguide:extensions:index/secman/applib/permission/dom/Applic [...]
 ****
 
 |Apache Isis Ext - Sec Man Encryption (Using jbcrypt)
@@ -5952,7 +5953,24 @@ Artifact: isis-regressiontests-stable
 Type: jar
 Directory: /regressiontests/stable
 ----
-|.Dependencies
+|.Components
+****
+o.a.i.testdomain.applayer.ApplicationLayerTestFactory +
+o.a.i.testdomain.applayer.ApplicationLayerTestFactory$PreCommitListener +
+o.a.i.testdomain.applayer.publishing.CommandSubscriberForTesting +
+o.a.i.testdomain.applayer.publishing.EntityChangesSubscriberForTesting +
+o.a.i.testdomain.applayer.publishing.EntityPropertyChangeSubscriberForTesting +
+o.a.i.testdomain.applayer.publishing.ExecutionSubscriberForTesting +
+o.a.i.testdomain.conf.Configuration_headless$HeadlessCommandSupport +
+o.a.i.testdomain.jdo.JdoInventoryDao +
+o.a.i.testdomain.jpa.JpaInventoryDao +
+o.a.i.testdomain.jpa.springdata.EmployeeRepository +
+o.a.i.testdomain.util.interaction.InteractionBoundaryProbe +
+o.a.i.testdomain.util.kv.KVStoreForTesting +
+o.a.i.testdomain.util.rest.RestEndpointService +
+****
+
+.Dependencies
 ****
 org.apache.isis.extensions:isis-extensions-cors-impl:jar:<managed> +
 org.glassfish.jersey.ext:jersey-spring5:jar:<managed> +
@@ -6412,7 +6430,23 @@ Artifact: isis-viewer-vaadin-ui
 Type: jar
 Directory: /incubator/viewers/vaadin/ui
 ----
-|.Dependencies
+|.Components
+****
+o.a.i.incubator.viewer.vaadin.ui.auth.LogoutHandlerVaa +
+o.a.i.incubator.viewer.vaadin.ui.auth.VaadinAuthenticationHandler +
+o.a.i.incubator.viewer.vaadin.ui.components.UiComponentFactoryVaa +
+o.a.i.incubator.viewer.vaadin.ui.components.blob.BlobFieldFactory +
+o.a.i.incubator.viewer.vaadin.ui.components.clob.ClobFieldFactory +
+o.a.i.incubator.viewer.vaadin.ui.components.markup.MarkupFieldFactory +
+o.a.i.incubator.viewer.vaadin.ui.components.other.FallbackFieldFactory +
+o.a.i.incubator.viewer.vaadin.ui.components.temporal.TemporalFieldFactory +
+o.a.i.incubator.viewer.vaadin.ui.components.text.TextFieldFactory +
+o.a.i.incubator.viewer.vaadin.ui.components.text.uuid.UuidFieldFactory +
+o.a.i.incubator.viewer.vaadin.ui.pages.main.UiActionHandlerVaa +
+o.a.i.incubator.viewer.vaadin.ui.pages.main.UiContextVaaDefault +
+****
+
+.Dependencies
 ****
 com.vaadin:vaadin-spring:jar:<managed> +
 commons-fileupload:commons-fileupload:jar:1.4 +