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/03/01 09:58:01 UTC

[isis] 03/03: ISIS-2444: cleaning up docs for internal services

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

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

commit 927d1606b55d88888902947de927d586a54604e8
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Mar 1 09:57:21 2021 +0000

    ISIS-2444: cleaning up docs for internal services
    
    and some renaming for consistency
---
 .../pages-to-update/CommandDtoServiceInternal.adoc |  54 -----------
 .../hooks/pages-to-update/CommandPublisher.adoc    |  16 ----
 .../hooks/pages-to-update/EntityChangeTracker.adoc |  60 ------------
 .../pages-to-update/EntityChangesPublisher.adoc    |  33 -------
 .../EntityPropertyChangePublisher.adoc             |  36 --------
 .../hooks/pages-to-update/ExecutionPublisher.adoc  |  39 --------
 .../InteractionDtoServiceInternal.adoc             |  43 ---------
 .../PersistenceSessionServiceInternal.adoc         |  91 -------------------
 .../org/apache/isis/applib/annotation/Nature.java  |   9 +-
 ...ctionInvocationFacetForDomainEventAbstract.java |   6 +-
 ...tySetterOrClearFacetForDomainEventAbstract.java |   6 +-
 .../services/command/CommandDtoFactory.java        |  61 +++++++++++--
 .../services/ixn/InteractionDtoFactory.java        | 101 +++++++++++++++++++++
 .../ixn/InteractionDtoServiceInternal.java         |  50 ----------
 .../services/publishing/CommandPublisher.java      |  19 +---
 .../services/publishing/ExecutionPublisher.java    |  22 ++++-
 .../IsisModuleCoreRuntimeServices.java             |   4 +-
 .../command/CommandDtoFactoryDefault.java          |   6 ++
 .../executor/MemberExecutorServiceDefault.java     |   7 +-
 ...ault.java => InteractionDtoFactoryDefault.java} |  10 +-
 .../changetracking/EntityChangeTracker.java        |  16 +++-
 .../changetracking/EntityChangesPublisher.java     |   9 +-
 .../EntityPropertyChangePublisher.java             |  15 ++-
 .../rendering/service/RepresentationService.java   |  12 ++-
 24 files changed, 251 insertions(+), 474 deletions(-)

diff --git a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/CommandDtoServiceInternal.adoc b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/CommandDtoServiceInternal.adoc
deleted file mode 100644
index 3e89b5b..0000000
--- a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/CommandDtoServiceInternal.adoc
+++ /dev/null
@@ -1,54 +0,0 @@
-= `CommandDtoServiceInternal`
-
-: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 [...]
-
-WARNING: TODO: this content has not yet been reviewed/updated for v2.0
-
-The `CommandDtoServiceInternal` is responsible for creating an memento of the current action invocation or property edit, to store in the `Command` object.
-This memento is a JAXB DTO being an instance of the
-xref:refguide:schema:cmd.adoc["cmd" schema], so can be reified either for persistence (through xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber]) or async execution (through xref:refguide:applib:index/services/wrapper/WrapperFactory.adoc[WrapperFactory].)
-
-
-
-== SPI & Implementation
-
-The SPI of the service is:
-
-[source,java]
-----
-public interface CommandDtoServiceInternal {
-    CommandDto asCommandDto(                                // <1>
-            List<ObjectAdapter> targetAdapters,
-            ObjectAction objectAction,
-            ObjectAdapter[] argAdapters);
-    CommandDto asCommandDto(                                // <2>
-            final List<ObjectAdapter> targetAdapters,
-            final OneToOneAssociation association,
-            final ObjectAdapter valueAdapterOrNull);
-    void addActionArgs(                                     // <3>
-            final ObjectAction objectAction,
-            final ActionDto actionDto,
-            final ObjectAdapter[] argAdapters);
-    void addPropertyValue(                                  // <4>
-            final OneToOneAssociation property,
-            final PropertyDto propertyDto,
-            final ObjectAdapter valueAdapter);
-}
-----
-<1> Returns a JAXB DTO being an instance of the xref:refguide:schema:cmd.adoc["cmd" schema] (hence convertible to
-XML) that represents the __intention__ to invoke an action on a target object (or possibly many targets, for
-bulk actions).  If an action, it can also be either mixin action or a contributed action.
-<2> Returns a JAXB DTO that represents the intention to edit (set or clear) a property on a target (or possibly many
-targets, for symmetry with actions).
-<3> add the arguments of an action to an `ActionDto`.  This is used when the command is actually executed (per xref:refguide:applib:index/services/iactn/InteractionContext.adoc[InteractionContext]) to populate the parameters of the equivalent `ActionInvocationDto`.
-<4> add the new value argument of a property to a `PropertyDto`.  This is used when the command is actually executed (per xref:refguide:applib:index/services/iactn/InteractionContext.adoc[InteractionContext]) to set the the new value of the equivalent `PropertyEditDto`.
-
-
-The SPI is implemented by `o.a.i.c.r.s.command.CommandDtoServiceInternalServiceDefault`.
-
-
-== Related Services
-
-The design of this service is similar to that of
-xref:core:runtime-services:InteractionDtoServiceInternal.adoc[InteractionDtoServiceInternal], used to create the
-`MemberExecutionDto` (from the xref:refguide:schema:ixn.adoc["ixn" schema]).
diff --git a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/CommandPublisher.adoc b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/CommandPublisher.adoc
deleted file mode 100644
index 4c71d79..0000000
--- a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/CommandPublisher.adoc
+++ /dev/null
@@ -1,16 +0,0 @@
-= `CommandPublisher`
-
-: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 [...]
-:page-partial:
-
-WARNING: TODO: this content has not yet been reviewed/updated for v2.0
-
-The `CommandPublisher` service is an internal service whose responsibility is simply to notify all known xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] when the `Command` has completed.
-
-== Related Classes
-
-In total there are 4 sorts of data the framework has publishers for ...
-. *EntityPropertyChanges*: published via `EntityPropertyChangePublisher` and subscribed to via `EntityPropertyChangeSubscriber` (SPI)
-. *EntityChanges*: published via `EntityChangesPublisher` and subscribed to via `EntityChangesSubscriber` (SPI)
-. *Execution*: published via `ExecutionPublisher` and subscribed to via `ExecutionSubscriber` (SPI)
-. *Command*: published via `CommandPublisher` and subscribed to via `CommandSubscriber` (SPI)
diff --git a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/EntityChangeTracker.adoc b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/EntityChangeTracker.adoc
deleted file mode 100644
index ab9ce02..0000000
--- a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/EntityChangeTracker.adoc
+++ /dev/null
@@ -1,60 +0,0 @@
-= `EntityChangeTracker`
-
-: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 [...]
-
-WARNING: TODO: this content has not yet been reviewed/updated for v2.0
-
-The `EntityChangeTracker` class is an (internal) request-scoped domain service that is responsible for collecting the details of all changes to domain objects within an interaction.
-This is then used by various other  (internal) domain services, notably xref:core:runtime-services:AuditerDispatchService.adoc[AuditerDispatchService] and xref:core:runtime-services:PublisherDispatchService.adoc[PublisherDispatchService].
-
-
-
-== SPI and Implementation
-
-The SPI of the service is:
-
-[source,java]
-----
-@IsisSessionScope
-public class ChangedObjectsService {
-    public void enlistCreated(final ObjectAdapter adapter);                                     // <.>
-    public void enlistUpdating(final ObjectAdapter adapter);
-    public void enlistDeleting(final ObjectAdapter adapter);
-
-    public boolean hasChangedAdapters();                                                        // <.>
-
-    public Map<ObjectAdapter, PublishingChangeKind> getChangeKindByEnlistedAdapter();           // <.>
-    public int numberObjectsDirtied();
-    public int numberObjectPropertiesModified();
-
-    public Set<Map.Entry<AdapterAndProperty, PreAndPostValues>> getChangedObjectProperties();   // <.>
-
-    public void clearChangedObjectProperties();                                                 // <.>
-}
-----
-<.> Enlists an object that has just been created, updated or deleted, capturing the pre-modification values of the properties.
-<.> Used by the framework to determine whether to send the completed `Command` to xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber], for example so that it can be persisted).
-<.> Used by xref:core:runtime-services:PublisherDispatchService.adoc[PublisherDispatchService] to obtain details of and
-counters of all objects changed within the transaction.
-<.> Used by xref:core:runtime-services:AuditerDispatchService.adoc[AuditerDispatchService] to obtain all pairs of
-pre/post values of changed properties
-<.> Called by the framework to for clean up after auditing and publishing has completed.
-
-For enlisted objects, if just created, then a dummy value `"[NEW]"` is used for the pre-modification value; if just
-deleted, then a dummy value `"[DELETED]"` is used for the post-modification value.  The post-modification values of
-properties are captured when the transaction commits.
-
-
-The service implementation is `o.a.i.c.r.s.changes.ChangedObjectsServiceInternal`.
-
-
-
-== Registering the Service
-
-Apache Isis' default implementation of `EntityChangeTracker` class is automatically registered (it is annotated with `@DomainService`) so no further configuration is required.
-
-
-
-== Related Classes
-
-Both the xref:core:runtime-services:AuditerDispatchService.adoc[AuditerDispatchService] and xref:core:runtime-services:PublisherDispatchService.adoc[PublisherDispatchService] (internal) domain services query this object.
diff --git a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/EntityChangesPublisher.adoc b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/EntityChangesPublisher.adoc
deleted file mode 100644
index 8d04219..0000000
--- a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/EntityChangesPublisher.adoc
+++ /dev/null
@@ -1,33 +0,0 @@
-= `EntityChangesPublisher`
-
-: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 [...]
-
-WARNING: TODO: this content has not yet been reviewed/updated for v2.0
-
-The (internal) `EntityChangesPublisher` service acts as an internal facade to any configured xref:refguide:applib:index/services/publishing/spi/EntityChangesSubscriber.adoc[EntityChangesSubscriber] domain service(s).
-
-For changing entities, it provides an API for the framework to call at the end of the interaction; it obtains details of the changed entities (from the xref:core:runtime-services:ChangedObjectsService.adoc[ChangedObjectsService]) and filters them to just those objects that are to be published; these are then passed through to any configured `EntityChangesSubscriber` implementations.
-
-
-== SPI and Implementation
-
-The SPI of the service is:
-
-[source,java]
-----
-public class EntityChangesPublisher {
-
-	void publishChanging(...);   // <1>
-
-}
-----
-<1> to published all changing entities that are to be published (with the xref:refguide:applib:index/annotation/DomainObject.adoc#publishing[@DomainObject#publishing] annotation attribute or equivalent).
-
-== Related Classes
-
-In total there are 4 sorts of data the framework has publishers for ...
-. *EntityPropertyChanges*: published via `EntityPropertyChangePublisher` and subscribed to via `EntityPropertyChangeSubscriber` (SPI)
-. *EntityChanges*: published via `EntityChangesPublisher` and subscribed to via `EntityChangesSubscriber` (SPI)
-. *Execution*: published via `ExecutionPublisher` and subscribed to via `ExecutionSubscriber` (SPI)
-. *Command*: published via `CommandPublisher` and subscribed to via `CommandSubscriber` (SPI)
-
diff --git a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/EntityPropertyChangePublisher.adoc b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/EntityPropertyChangePublisher.adoc
deleted file mode 100644
index fca5c31..0000000
--- a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/EntityPropertyChangePublisher.adoc
+++ /dev/null
@@ -1,36 +0,0 @@
-= `EntityPropertyChangePublisher`
-
-: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 [...]
-
-WARNING: TODO: this content has not yet been reviewed/updated for v2.0
-
-The (internal) `EntityPropertyChangePublisher` service acts as an internal facade to any registered xref:refguide:applib:index/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] service(s).
-It is responsible for obtaining the details of all changes to domain objects within an interaction, and then to call the configured ``EntityPropertyChangeSubscriber``(s) to actually create audit entries of those changes.
-
-
-
-
-== SPI and Implementation
-
-The SPI of the service is:
-
-[source,java]
-----
-public interface EntityPropertyChangePublisher {
-    void publishEntityPropertyChanges(...);  // <1>
-}
-----
-<1> uses the xref:core:runtime-services:ChangedObjectsService.adoc[ChangedObjectsServiceInternal] to obtain details of the changed properties, then call the configured xref:refguide:applib:index/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber](s).
-
-== Registering the Service
-
-Apache Isis' default implementation of `EntityAuditDispatcher` class is automatically registered (it is annotated with `@DomainService`) so no further configuration is required.
-
-
-== Related Classes
-
-In total there are 4 sorts of data the framework has publishers for ...
-. *EntityPropertyChanges*: published via `EntityPropertyChangePublisher` and subscribed to via `EntityPropertyChangeSubscriber` (SPI)
-. *EntityChanges*: published via `EntityChangesPublisher` and subscribed to via `EntityChangesSubscriber` (SPI)
-. *Execution*: published via `ExecutionPublisher` and subscribed to via `ExecutionSubscriber` (SPI)
-. *Command*: published via `CommandPublisher` and subscribed to via `CommandSubscriber` (SPI)
diff --git a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/ExecutionPublisher.adoc b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/ExecutionPublisher.adoc
deleted file mode 100644
index 1395a29..0000000
--- a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/ExecutionPublisher.adoc
+++ /dev/null
@@ -1,39 +0,0 @@
-= `ExecutionPublisher`
-
-: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 [...]
-
-WARNING: TODO: this content has not yet been reviewed/updated for v2.0
-
-The (internal) `ExecutionPublisher` domain service acts as an internal facade to any configured xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber] domain service(s).
-
-For published action invocations/ property edits, it provides an API for those member executions to call.
-
-For published objects, it provides an API for the framework to call at the end of the interaction; it obtains details of the changed objects (from the xref:core:runtime-services:ChangedObjectsService.adoc[ChangedObjectsServiceInternal]) and filters them to just those objects that are to be published; these are then passed through to any configured `ExecutionSubscriber` implementations.
-
-
-== SPI and Implementation
-
-The SPI of the service is:
-
-[source,java]
-----
-public interface ExecutionPublisher {
-
-	void publishActionInvocation(Execution execution);   // <1>
-
-    void publishPropertyEdit(Execution execution);       // <2>
-
-}
-----
-<1> to publish an action invocation, as represented by the specified member `Execution` parameter and with the xref:refguide:applib:index/annotation/Action.adoc#executionPublishing[@Action#executionPublishing] annotation attribute or equivalent, to any configured xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber].
-The `Execution` object will be an instance of `ActionInvocation` (see xref:refguide:applib:index/services/iactn/InteractionContext.adoc[InteractionContext] for details).
-<2> to publish a property edit, as as represented by the specified member `Execution` parameter and with the xref:refguide:applib:index/annotation/Property.adoc#publishing[@Property#executionPublishing] annotation attribute or equivalent, to any configured xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber].
-The `Execution` object will be an instance of `PropertyEdit` (see xref:refguide:applib:index/services/iactn/InteractionContext.adoc[InteractionContext] for details).
-
-== Related Classes
-
-In total there are 4 sorts of data the framework has publishers for ...
-. *EntityPropertyChanges*: published via `EntityPropertyChangePublisher` and subscribed to via `EntityPropertyChangeSubscriber` (SPI)
-. *EntityChanges*: published via `EntityChangesPublisher` and subscribed to via `EntityChangesSubscriber` (SPI)
-. *Execution*: published via `ExecutionPublisher` and subscribed to via `ExecutionSubscriber` (SPI)
-. *Command*: published via `CommandPublisher` and subscribed to via `CommandSubscriber` (SPI)
diff --git a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/InteractionDtoServiceInternal.adoc b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/InteractionDtoServiceInternal.adoc
deleted file mode 100644
index 7ba98ae..0000000
--- a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/InteractionDtoServiceInternal.adoc
+++ /dev/null
@@ -1,43 +0,0 @@
-= `InteractionDtoServiceInternal`
-
-: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 [...]
-
-WARNING: TODO: this content has not yet been reviewed/updated for v2.0
-
-
-The `InteractionDtoServiceInternal` internal domain service is used by the framework to create and update DTOs representing member executions, ie the invocation of an action or the editing of a property.  The DTO is in all cases a subclass of `MemberExecutionDto`, from the xref:refguide:schema:ixn.adoc["ixn" schema], and subsequently accessible from the `Interaction` object (per the xref:refguide:applib:index/services/iactn/InteractionContext.adoc[InteractionContext] service).
-
-
-== SPI & Implementation
-
-The SPI of the service is:
-
-[source,java]
-----
-public interface InteractionDtoServiceInternal {
-    ActionInvocationDto asActionInvocationDto(          // <1>
-            ObjectAction objectAction,
-            ObjectAdapter targetAdapter,
-            List<ObjectAdapter> argumentAdapters);
-    PropertyEditDto asPropertyEditDto(                  // <2>
-            OneToOneAssociation property,
-            ObjectAdapter targetAdapter,
-            ObjectAdapter newValueAdapterIfAny);
-    ActionInvocationDto updateResult(                   // <3>
-            ActionInvocationDto actionInvocationDto,
-            ObjectAction objectAction,
-            Object resultPojo);
-}
-----
-<1> called by the framework when invoking an action, to create a DTO capturing the details of the action invocation (target, arguments etc).
-<2> called by the framework when editing a property, to create a DTO (for the xref:refguide:schema:ixn.adoc["ixn" schema]) capturing the details of the property edit (target, new value etc).
-<3> called by the framework to attach the result of an action invocation to the aforementioned DTO.
-
-The service is implemented by `o.a.i.core.runtime.services.ixn.InteractionDtoServiceInternalDefault`.
-
-
-== Related Services
-
-The design of this service is similar to that of
-xref:core:runtime-services:CommandDtoServiceInternal.adoc[CommandDtoServiceInternal], used to create the `CommandDto`
-(from the xref:refguide:schema:cmd.adoc["cmd" schema]).
diff --git a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/PersistenceSessionServiceInternal.adoc b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/PersistenceSessionServiceInternal.adoc
deleted file mode 100644
index 10c673c..0000000
--- a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/hooks/pages-to-update/PersistenceSessionServiceInternal.adoc
+++ /dev/null
@@ -1,91 +0,0 @@
-= `PersistenceSessionServiceInternal`
-
-: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 [...]
-
-WARNING: TODO: this content has not yet been reviewed/updated for v2.0
-
-The (internal) `PersistenceSessionServiceInternal` domain service acts as a facade to the underlying JDO persistence session / database connection.  As such it provides methods for querying and for persisting objects.
-
-[NOTE]
-====
-The default implementation of this service is not request-scoped, however all of the methods delegate
-to the `PersistenceSession` of the current `IsisSession` - obtained from the thread-local of `IsisSessionFactory` singleton service.
-So, in effect the service does act as if it is request scoped.
-====
-
-
-
-== SPI
-
-The SPI of the service is a hierarchy of types.  First is `AdapterManagerBase`:
-
-[source,java]
-----
-public interface AdapterManagerBase {
-    ObjectAdapter getAdapterFor(Object pojo);           // <1>
-    ObjectAdapter adapterFor(Object domainObject);      // <2>
-----
-<1> Gets the `ObjectAdapter` for the specified domain object if it exists in the identity map, else returns `null`.
-<2> Looks up or creates a standalone (value) or root adapter.
-
-The `AdapterManager` is the immediate subtype:
-
-[source,java]
-----
-public interface AdapterManager extends AdapterManagerBase {
-    ObjectAdapter getAdapterFor(Object pojo);                       // <1>
-    ObjectAdapter adapterFor(                                       // <2>
-        Object pojo, ObjectAdapter parentAdapter,
-        OneToManyAssociation collection);
-    ObjectAdapter mapRecreatedPojo(Oid oid, Object recreatedPojo);  // <3>
-    void removeAdapter(ObjectAdapter adapter);                      // <4>
-}
-----
-<1> Gets the `ObjectAdapter` for the `Oid` if it exists in the identity map.
-<2> Looks up or creates a collection adapter.
-<3> Enable RecreatableObjectFacet to 'temporarily' map an existing pojo to an oid.
-<4> Enable RecreatableObjectFacet to remove a 'temporarily' mapped an adapter for a pojo.
-
-
-Finally, `PersistenceSessionServiceInternal` is a subtype of `AdapterManager`:
-
-[source,java]
-----
-public interface PersistenceSessionServiceInternal extends AdapterManager {
-
-    // instantiate
-    ObjectAdapter createTransientInstance(
-                    ObjectSpecification spec);
-    ObjectAdapter createViewModelInstance(
-                    ObjectSpecification spec, String memento);
-
-    // retrieve
-    void resolve(Object parent);
-    @Deprecated
-    void resolve(Object parent, Object field);
-    Object lookup(Bookmark bookmark, final BookmarkService.FieldResetPolicy fieldResetPolicy);
-    Bookmark bookmarkFor(Object domainObject);
-    Bookmark bookmarkFor(Class<?> cls, String identifier);
-
-    // beginTran, flush, commit, currentTransaction
-    void beginTran();
-    boolean flush();
-    void commit();
-    Transaction currentTransaction();
-    void executeWithinTransaction(TransactionalClosure transactionalClosure);
-
-    // makePersistent, remove
-    void makePersistent(ObjectAdapter adapter);
-    void remove(ObjectAdapter adapter);
-    // allMatchingQuery, firstMatchingQuery
-    <T> List<ObjectAdapter> allMatchingQuery(Query<T> query);
-    <T> ObjectAdapter firstMatchingQuery(Query<T> query);
-}
-----
-
-
-== Implementation
-
-The framework provides a single implementation, `PersistenceSessionServiceInternalDefault`, provided by `isis-core-runtime`.
-This is used during normal use and in integration tests.
-
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/Nature.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/Nature.java
index eabaa6c..a253c13 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/Nature.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/Nature.java
@@ -39,7 +39,7 @@ public enum Nature {
     NOT_SPECIFIED,
 
     /**
-     * A domain entity whose persistence is managed internally by Isis, 
+     * A domain entity whose persistence is managed internally by Isis,
      * using JPA or JDO as the persistence implementation.
      * <p>
      * Domain entities are considered to be part of the domain model layer.
@@ -55,7 +55,7 @@ public enum Nature {
      * <p>
      * The identity of a view model is determined solely by the state of object's properties.
      * Using this nature should be considered exactly equivalent to annotating with {@link ViewModel}.
-     *     
+     *
      * <p>
      * Note that collections are ignored; if their state is required to fully identify the view model, define the
      * view model using the JAXB {@link XmlRootElement} annotation instead (where the object's state is serialized
@@ -80,11 +80,8 @@ public enum Nature {
      */
     BEAN,
     ;
-    
+
     public boolean isEntity() {
         return this == Nature.ENTITY;
     }
-    
-    
 }
-//end::refguide[]
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index 936d08e..4060690 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -44,7 +44,7 @@ import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.interactions.InteractionHead;
-import org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal;
+import org.apache.isis.core.metamodel.services.ixn.InteractionDtoFactory;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ManagedObjects.UnwrapUtil;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -215,8 +215,8 @@ implements ImperativeFacet {
         return serviceRegistry.lookupServiceElseFail(QueryResultsCache.class);
     }
 
-    private InteractionDtoServiceInternal getInteractionDtoServiceInternal() {
-        return serviceRegistry.lookupServiceElseFail(InteractionDtoServiceInternal.class);
+    private InteractionDtoFactory getInteractionDtoServiceInternal() {
+        return serviceRegistry.lookupServiceElseFail(InteractionDtoFactory.class);
     }
 
     @RequiredArgsConstructor
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
index 1c9389f..d930757 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollect
 import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
 import org.apache.isis.core.metamodel.interactions.InteractionHead;
-import org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal;
+import org.apache.isis.core.metamodel.services.ixn.InteractionDtoFactory;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ManagedObjects.UnwrapUtil;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -282,8 +282,8 @@ extends SingleValueFacetAbstract<Class<? extends PropertyDomainEvent<?,?>>> {
         return uncheckedCast(value());
     }
 
-    private InteractionDtoServiceInternal getInteractionDtoServiceInternal() {
-        return getServiceRegistry().lookupServiceElseFail(InteractionDtoServiceInternal.class);
+    private InteractionDtoFactory getInteractionDtoServiceInternal() {
+        return getServiceRegistry().lookupServiceElseFail(InteractionDtoFactory.class);
     }
 
     @Override public void appendAttributesTo(final Map<String, Object> attributeMap) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandDtoFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandDtoFactory.java
index faff30b..c80b4c2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandDtoFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandDtoFactory.java
@@ -29,16 +29,30 @@ import org.apache.isis.schema.cmd.v2.CommandDto;
 import org.apache.isis.schema.cmd.v2.PropertyDto;
 
 /**
- * Used to serialize a command, eg. such that it can be persisted and then executed 
- * at some later time or even at some external system.
+ * Used to serialize the intention to invoke an action or edit a property as a
+ * {@link CommandDto}, for example such that it can be persisted and then
+ * executed at some later time or even against some external system.
+ *
+ * <p>
+ *     There are some similarities to
+ *     {@link org.apache.isis.core.metamodel.services.ixn.InteractionDtoFactory},
+ *     which is used to instantiate an
+ *     {@link org.apache.isis.schema.ixn.v2.InteractionDto} that represents
+ *     the <i>actual</i> execution of the action invocation or property edit.
+ * </p>
+ *
+ * @see org.apache.isis.applib.services.wrapper.WrapperFactory
+ * @see org.apache.isis.core.metamodel.services.ixn.InteractionDtoFactory
+ * @since 1.x {@index}
  */
 public interface CommandDtoFactory {
 
     /**
-     * @return a DTO that represents the intention to invoke an action on a
-     *         target object (or possibly many targets, for bulk actions),
-     *         or to edit a property.  If an action, it be either a
-     *         mixin action or a contributed action.
+     * Returns a {@link CommandDto} that represents the intention to invoke
+     * an action on a target object (or target objects, to support the notion
+     * of bulk actions).
+     *
+     * @see #asCommandDto(UUID, Can, OneToOneAssociation, ManagedObject)
      */
     CommandDto asCommandDto(
             final UUID uniqueId,
@@ -47,9 +61,11 @@ public interface CommandDtoFactory {
             final Can<ManagedObject> argAdapters);
 
     /**
-     * @return a DTO that represents the intention to edit (set or clear) a
-     *         property on a target (or possibly many targets, for symmetry
-     *         with actions).
+     * Returns a {@link CommandDto} that represents the intention to edit
+     * (set or clear) a property on a target (or possibly many targets, for
+     * symmetry with actions).
+     *
+     * @see #asCommandDto(UUID, Can, ObjectAction, Can)
      */
     CommandDto asCommandDto(
             final UUID uniqueId,
@@ -57,11 +73,38 @@ public interface CommandDtoFactory {
             final OneToOneAssociation association,
             final ManagedObject valueAdapterOrNull);
 
+    /**
+     * Adds the arguments of an action to an {@link ActionDto} (the element
+     * within a {@link CommandDto} representing an action invocation).
+     *
+     * <p>
+     *     This is used when the command is actually executed
+     *     to populate the parameters of the equivalent
+     *     {@link org.apache.isis.schema.ixn.v2.ActionInvocationDto}
+     * </p>
+     *
+     * @see org.apache.isis.schema.ixn.v2.ActionInvocationDto
+     * @see org.apache.isis.applib.services.iactn.InteractionContext
+     * @see org.apache.isis.applib.services.iactn.Interaction
+     */
     void addActionArgs(
             final ObjectAction objectAction,
             final ActionDto actionDto,
             final Can<ManagedObject> argAdapters);
 
+    /**
+     * Adds the new value argument of a property to a {@link PropertyDto} (the
+     * element a {@link CommandDto} representing an property edit).
+     *
+     * <p>
+     *  This is used when the command is actually executed to set the the new
+     *  value of the equivalent {@link org.apache.isis.schema.ixn.v2.PropertyEditDto}.
+     * </p>
+     *
+     * @see org.apache.isis.schema.ixn.v2.PropertyEditDto
+     * @see org.apache.isis.applib.services.iactn.InteractionContext
+     * @see org.apache.isis.applib.services.iactn.Interaction
+     */
     void addPropertyValue(
             final OneToOneAssociation property,
             final PropertyDto propertyDto,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ixn/InteractionDtoFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ixn/InteractionDtoFactory.java
new file mode 100644
index 0000000..dc54aba
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ixn/InteractionDtoFactory.java
@@ -0,0 +1,101 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.core.metamodel.services.ixn;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.schema.cmd.v2.CommandDto;
+import org.apache.isis.schema.ixn.v2.ActionInvocationDto;
+import org.apache.isis.schema.ixn.v2.PropertyEditDto;
+
+/**
+ * Used to serialize the execution of an action invocation or property edit as
+ * an {@link org.apache.isis.schema.ixn.v2.InteractionDto}, for example that
+ * it can be published to downstream systems.
+ *
+ * <p>
+ *     There are some similarities to
+ *     {@link org.apache.isis.core.metamodel.services.command.CommandDtoFactory},
+ *     which is used to instantiate an
+ *     {@link org.apache.isis.schema.cmd.v2.CommandDto} that represents
+ *     the <i>intention</i> to invoke an action or edit a property.
+ * </p>
+ *
+ * @see org.apache.isis.core.metamodel.services.command.CommandDtoFactory
+ * @since 1.x {@index}
+ */
+public interface InteractionDtoFactory {
+
+
+    /**
+     * Called by the framework when invoking an action, to create an
+     * {@link ActionInvocationDto} capturing the details of the action
+     * invocation (target, arguments etc).
+     *
+     * <p>
+     *     {@link ActionInvocationDto} is a subtype of
+     *     {@link org.apache.isis.schema.ixn.v2.MemberExecutionDto} that is
+     *     in turn a part of the overall
+     *     {@link org.apache.isis.schema.ixn.v2.InteractionDto}.
+     * </p>
+     *
+     * @see org.apache.isis.schema.ixn.v2.MemberExecutionDto
+     * @see org.apache.isis.schema.ixn.v2.InteractionDto
+     * @see PropertyEditDto
+     */
+    ActionInvocationDto asActionInvocationDto(
+            ObjectAction objectAction,
+            ManagedObject targetAdapter,
+            Can<ManagedObject> argumentAdapters);
+
+    /**
+     * Called by the framework when editing a property, to create an
+     * {@link PropertyEditDto} capturing the details of the action
+     * invocation (target, arguments etc).
+     *
+     * <p>
+     *     {@link PropertyEditDto} is a subtype of
+     *     {@link org.apache.isis.schema.ixn.v2.MemberExecutionDto} that is
+     *     in turn a part of the overall
+     *     {@link org.apache.isis.schema.ixn.v2.InteractionDto}.
+     * </p>
+     *
+     * @see org.apache.isis.schema.ixn.v2.MemberExecutionDto
+     * @see org.apache.isis.schema.ixn.v2.InteractionDto
+     * @see ActionInvocationDto
+     */
+    PropertyEditDto asPropertyEditDto(
+            OneToOneAssociation property,
+            ManagedObject targetAdapter,
+            ManagedObject newValueAdapterIfAny);
+
+    /**
+     * Called by the framework to attach the result of an action invocation
+     * to the aforementioned {@link ActionInvocationDto}.
+     */
+    ActionInvocationDto updateResult(
+            ActionInvocationDto actionInvocationDto,
+            ObjectAction objectAction,
+            Object resultPojo);
+
+
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ixn/InteractionDtoServiceInternal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ixn/InteractionDtoServiceInternal.java
deleted file mode 100644
index 6dc4b6d..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ixn/InteractionDtoServiceInternal.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *  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 agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.metamodel.services.ixn;
-
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.schema.ixn.v2.ActionInvocationDto;
-import org.apache.isis.schema.ixn.v2.PropertyEditDto;
-
-public interface InteractionDtoServiceInternal {
-
-    @Programmatic
-    ActionInvocationDto asActionInvocationDto(
-            ObjectAction objectAction,
-            ManagedObject targetAdapter,
-            Can<ManagedObject> argumentAdapters);
-
-    @Programmatic
-    PropertyEditDto asPropertyEditDto(
-            OneToOneAssociation property,
-            ManagedObject targetAdapter,
-            ManagedObject newValueAdapterIfAny);
-
-    @Programmatic
-    ActionInvocationDto updateResult(
-            ActionInvocationDto actionInvocationDto,
-            ObjectAction objectAction,
-            Object resultPojo);
-
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/publishing/CommandPublisher.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/publishing/CommandPublisher.java
index fd2d67f..812803a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/publishing/CommandPublisher.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/publishing/CommandPublisher.java
@@ -25,23 +25,14 @@ import lombok.NonNull;
 
 /**
  * Notifies {@link CommandSubscriber}s.
- * @since 2.0
+ * @since 2.0 {@index}
  */
-//tag::refguide[]
 public interface CommandPublisher {
 
     /**
-     * &quot;Complete&quot; the command, providing an opportunity ot persist
-     * a memento of the command if the
-     * {@link Command#isSystemStateChanged() system state has changed}.
-     *
-     * <p>
-     *     The framework will automatically have set the {@link Command#getCompletedAt()} property.
-     * </p>
+     * &quot;Completes&quot; the command, meaning that all {@link CommandSubscriber}s
+     * are notified throuhg {@link CommandSubscriber#onCompleted(Command)}.
      */
-    // end::refguide[]
-    void complete(@NonNull Command command); // <.>
-    //tag::refguide[]
-    
+    void complete(@NonNull Command command);
+
 }
-// end::refguide[]
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/publishing/ExecutionPublisher.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/publishing/ExecutionPublisher.java
index a41a9c2..197e043 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/publishing/ExecutionPublisher.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/publishing/ExecutionPublisher.java
@@ -20,17 +20,35 @@ package org.apache.isis.core.metamodel.services.publishing;
 
 import java.util.function.Supplier;
 
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.services.iactn.Execution;
 import org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber;
 
 /**
- * Notifies {@link ExecutionSubscriber}s.
- * @since 2.0
+ * Notifies {@link ExecutionSubscriber}s that an action has been executed
+ * or a property edited.
+ *
+ * @since 1.x but renamed/refactored for v2 {@index}
+ *
+ * @see ExecutionSubscriber
  */
 public interface ExecutionPublisher {
 
+    /**
+     * Notifies {@link ExecutionSubscriber}s of an action invocation through
+     * the {@link ExecutionSubscriber#onExecution(Execution)} callback.
+     *
+     * @see Action#executionPublishing()
+     */
     void publishActionInvocation(Execution<?,?> execution);
 
+    /**
+     * Notifies {@link ExecutionSubscriber}s of a property edit through
+     * the {@link ExecutionSubscriber#onExecution(Execution)} callback.
+     *
+     * @see Property#executionPublishing()
+     */
     void publishPropertyEdit(Execution<?,?> execution);
 
     /**
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
index 16e93c2..307f7c3 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
@@ -40,7 +40,7 @@ import org.apache.isis.core.runtimeservices.factory.FactoryServiceDefault;
 import org.apache.isis.core.runtimeservices.homepage.HomePageResolverServiceDefault;
 import org.apache.isis.core.runtimeservices.i18n.po.TranslationServicePo;
 import org.apache.isis.core.runtimeservices.i18n.po.TranslationServicePoMenu;
-import org.apache.isis.core.runtimeservices.interaction.InteractionDtoServiceInternalDefault;
+import org.apache.isis.core.runtimeservices.interaction.InteractionDtoFactoryDefault;
 import org.apache.isis.core.runtimeservices.jaxb.JaxbServiceDefault;
 import org.apache.isis.core.runtimeservices.menubars.MenuBarsLoaderServiceDefault;
 import org.apache.isis.core.runtimeservices.menubars.bootstrap3.MenuBarsServiceBS3;
@@ -88,7 +88,7 @@ import org.apache.isis.core.runtimeservices.xmlsnapshot.XmlSnapshotServiceDefaul
         EventBusServiceSpring.class,
         FactoryServiceDefault.class,
         HomePageResolverServiceDefault.class,
-        InteractionDtoServiceInternalDefault.class,
+        InteractionDtoFactoryDefault.class,
         InteractionFactoryDefault.class,
         JaxbServiceDefault.class,
         TranslationServicePo.class,
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandDtoFactoryDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandDtoFactoryDefault.java
index 3c03111..9d22043 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandDtoFactoryDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandDtoFactoryDefault.java
@@ -53,6 +53,12 @@ import org.apache.isis.schema.common.v2.OidsDto;
 
 import lombok.val;
 
+/**
+ * The design of this service is similar to
+ * {@link org.apache.isis.core.runtimeservices.interaction.InteractionDtoFactoryDefault}.
+ *
+ * @see org.apache.isis.core.runtimeservices.interaction.InteractionDtoFactoryDefault
+ */
 @Service
 @Named("isis.runtimeservices.CommandDtoFactoryDefault")
 @Order(OrderPrecedence.MIDPOINT)
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/executor/MemberExecutorServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/executor/MemberExecutorServiceDefault.java
index 98daf54..209948c 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/executor/MemberExecutorServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/executor/MemberExecutorServiceDefault.java
@@ -58,7 +58,7 @@ import org.apache.isis.core.metamodel.facets.properties.property.modify.Property
 import org.apache.isis.core.metamodel.interactions.InteractionHead;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.core.metamodel.services.events.MetamodelEventService;
-import org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal;
+import org.apache.isis.core.metamodel.services.ixn.InteractionDtoFactory;
 import org.apache.isis.core.metamodel.services.publishing.ExecutionPublisher;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ManagedObjects;
@@ -88,7 +88,8 @@ implements MemberExecutorService {
     private final @Getter ObjectManager objectManager;
     private final @Getter ClockService clockService;
     private final @Getter Provider<MetricsService> metricsService;
-    private final @Getter InteractionDtoServiceInternal interactionDtoServiceInternal;
+    private final @Getter
+    InteractionDtoFactory interactionDtoFactory;
     private final @Getter Provider<ExecutionPublisher> executionPublisher;
     private final @Getter MetamodelEventService metamodelEventService;
     private final @Getter TransactionService transactionService;
@@ -164,7 +165,7 @@ implements MemberExecutorService {
         val returnedAdapter = objectManager.adapt(returnedPojo);
 
         // sync DTO with result
-        interactionDtoServiceInternal
+        interactionDtoFactory
         .updateResult(priorExecution.getDto(), owningAction, returnedPojo);
 
         // update Command (if required)
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/interaction/InteractionDtoServiceInternalDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/interaction/InteractionDtoFactoryDefault.java
similarity index 95%
rename from core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/interaction/InteractionDtoServiceInternalDefault.java
rename to core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/interaction/InteractionDtoFactoryDefault.java
index 2b33414..6c98a3c 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/interaction/InteractionDtoServiceInternalDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/interaction/InteractionDtoFactoryDefault.java
@@ -43,7 +43,7 @@ import org.apache.isis.commons.internal.assertions._Assert;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.services.command.CommandDtoFactory;
-import org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal;
+import org.apache.isis.core.metamodel.services.ixn.InteractionDtoFactory;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -55,12 +55,18 @@ import org.apache.isis.schema.common.v2.ValueWithTypeDto;
 import org.apache.isis.schema.ixn.v2.ActionInvocationDto;
 import org.apache.isis.schema.ixn.v2.PropertyEditDto;
 
+/**
+* The design of this service is similar to
+* {@link org.apache.isis.core.runtimeservices.command.CommandDtoFactoryDefault}
+*
+* @see org.apache.isis.core.runtimeservices.command.CommandDtoFactoryDefault
+ */
 @Service
 @Named("isis.runtimeservices.InteractionDtoServiceInternalDefault")
 @Order(OrderPrecedence.MIDPOINT)
 @Primary
 @Qualifier("Default")
-public class InteractionDtoServiceInternalDefault implements InteractionDtoServiceInternal {
+public class InteractionDtoFactoryDefault implements InteractionDtoFactory {
 
     @Inject private CommandDtoFactory commandDtoServiceInternal;
     @Inject private BookmarkService bookmarkService;
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTracker.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTracker.java
index c193c5a..493406e 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTracker.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangeTracker.java
@@ -20,6 +20,12 @@ package org.apache.isis.core.transaction.changetracking;
 
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 
+/**
+ * Responsible for collecting the details of all changes to domain objects
+ * within a transaction.
+ *
+ * @since 1.x but renamed/refactored for v2 {@index}
+ */
 public interface EntityChangeTracker {
 
     /**
@@ -31,7 +37,7 @@ public interface EntityChangeTracker {
      * The post-modification values are captured when the transaction commits.
      */
     void enlistCreated(ManagedObject entity);
-    
+
     /**
      * Auditing and publishing support: for object stores to enlist an object that is about to be deleted,
      * capturing the pre-deletion value of the properties of the {@link ManagedObject}.
@@ -42,7 +48,7 @@ public interface EntityChangeTracker {
      * dummy value <tt>'[DELETED]'</tt> is used as the post-modification value.
      */
     void enlistDeleting(ManagedObject entity);
-    
+
     /**
      * Auditing and publishing support: for object stores to enlist an object that is about to be updated,
      * capturing the pre-modification values of the properties of the {@link ManagedObject}.
@@ -54,17 +60,17 @@ public interface EntityChangeTracker {
     void enlistUpdating(ManagedObject entity);
 
     /**
-     * Fires the appropriate event and lifecycle callback: {@literal LOADED} 
+     * Fires the appropriate event and lifecycle callback: {@literal LOADED}
      */
     void recognizeLoaded(ManagedObject entity);
 
     /**
-     * Fires the appropriate event and lifecycle callback: {@literal PERSISTING} 
+     * Fires the appropriate event and lifecycle callback: {@literal PERSISTING}
      */
     void recognizePersisting(ManagedObject entity);
 
     /**
-     * Fires the appropriate event and lifecycle callback: {@literal UPDATING} 
+     * Fires the appropriate event and lifecycle callback: {@literal UPDATING}
      */
     void recognizeUpdating(ManagedObject entity);
 
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangesPublisher.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangesPublisher.java
index 67836f4..d3c6efe 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangesPublisher.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityChangesPublisher.java
@@ -18,14 +18,21 @@
  */
 package org.apache.isis.core.transaction.changetracking;
 
+import org.apache.isis.applib.services.publishing.spi.EntityChanges;
 import org.apache.isis.applib.services.publishing.spi.EntityChangesSubscriber;
 
 /**
  * Notifies {@link EntityChangesSubscriber}s.
- * @since 2.0
+ *
+ * @since 1.x but renamed/refactored for v2 {@index}
  */
 public interface EntityChangesPublisher {
 
+    /**
+     * Notifies {@link EntityChangesSubscriber}s of the changed entities within
+     * an {@link org.apache.isis.applib.services.iactn.Interaction}, calling
+     * the {@link EntityChangesSubscriber#onChanging(EntityChanges)} callback.
+     */
     void publishChangingEntities(HasEnlistedEntityChanges hasEnlistedEntityChanges);
 
 }
diff --git a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityPropertyChangePublisher.java b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityPropertyChangePublisher.java
index f417160..fa4216c 100644
--- a/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityPropertyChangePublisher.java
+++ b/core/transaction/src/main/java/org/apache/isis/core/transaction/changetracking/EntityPropertyChangePublisher.java
@@ -18,12 +18,25 @@
  */
 package org.apache.isis.core.transaction.changetracking;
 
+import org.apache.isis.applib.services.publishing.spi.EntityPropertyChange;
+
 /**
  * Notifies {@link org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber}s.
- * @since 2.0
+ *
+ * @see org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber
+ *
+ * @since 1.x but renamed/refactored for v2 {@index}
  */
 public interface EntityPropertyChangePublisher {
 
+    /**
+     * Notifies {@link org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber}s that
+     * a property of an entity has changed using the
+     * {@link org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber#onChanging(EntityPropertyChange)}
+     * callback.
+     *
+     * @param hasEnlistedEntityPropertyChanges
+     */
     void publishChangedProperties(HasEnlistedEntityPropertyChanges hasEnlistedEntityPropertyChanges);
 
 }
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
index 83902e1..03c2882 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
@@ -28,10 +28,20 @@ import org.apache.isis.viewer.restfulobjects.rendering.IResourceContext;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndActionInvocation;
 
 /**
- * Configure the Restful Objects viewer to emit custom representations (rather than the
+ * Configures the Restful Objects viewer to emit custom representations (rather than the
  * standard representations defined in the RO spec).
  *
  * <p>
+ *     The default implementations ultimately generate representations according
+ *     to the <a href="http://restfulobjects.org">Restful Objects spec</a> v1.0.
+ *     It does this through a level of abstraction by delegating to
+ *     implementations of the
+ *     {@link org.apache.isis.viewer.restfulobjects.rendering.service.conneg.ContentNegotiationService}
+ *     SPI.  This provides a mechanism for altering representations according
+ *     to the HTTP `Accept` header.
+ * </p>
+ *
+ * <p>
  * This interface is EXPERIMENTAL and may change in the future.
  * </p>
  *