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/02/05 06:54:11 UTC

[isis] branch ISIS-2524 created (now 60308bd)

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

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


      at 60308bd  ISIS-2524: sketched out more fine-grained index generation

This branch includes the following new commits:

     new 60308bd  ISIS-2524: sketched out more fine-grained index generation

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[isis] 01/01: ISIS-2524: sketched out more fine-grained index generation

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 60308bd43f0f23c66a897600ece857e52b45007e
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Feb 4 23:21:49 2021 +0000

    ISIS-2524: sketched out more fine-grained index generation
---
 .../pages/index/applib/annotation/Action.adoc      | 128 ++-------------------
 .../pages/index/applib/annotation/Action/_api.adoc |  41 +++++++
 .../Action/_description.adoc}                      |  14 +--
 .../Action/associateWith.adoc}                     |  23 ++--
 .../Action/associateWithSequence.adoc}             |  20 ++--
 .../Action/commandDtoProcessor.adoc}               |  18 +--
 .../Action/commandPublishing.adoc}                 |  16 +--
 .../Action/domainEvent.adoc}                       |  25 +++-
 .../pages/index/applib/clock/VirtualClock.adoc     |   2 +-
 .../index/applib/services/clock/ClockService.adoc  |  21 ++--
 .../{ClockService.adoc => ClockService/_api.adoc}  |  22 ++--
 .../_description.adoc}                             |  12 --
 .../_implementations.adoc}                         |  14 +--
 .../getClock.adoc}                                 |  12 +-
 .../getEpochMillis.adoc}                           |  12 +-
 15 files changed, 155 insertions(+), 225 deletions(-)

diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/Action.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Action.adoc
index 7cce51f..8d84423 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/Action.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Action.adoc
@@ -1,125 +1,15 @@
-= Action : _annotation_
+= @Action
 :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 [...]
 
-Domain semantics for domain object collection.
+include::Action/_description.adoc[]
 
-.Java Sources
-[source,java]
-----
-@interface Action {
+== API
 
-  String associateWith() default ""; // <.>
+include::Action/_api.adoc[]
 
-  String associateWithSequence() default "1"; // <.>
-
-  Class<? extends CommandDtoProcessor> commandDtoProcessor() default CommandDtoProcessor.class; // <.>
-
-  Publishing commandPublishing() default Publishing.NOT_SPECIFIED; // <.>
-
-  Class<? extends ActionDomainEvent<?>> domainEvent() default ActionDomainEvent.Default.class; // <.>
-
-  Publishing executionPublishing() default Publishing.NOT_SPECIFIED; // <.>
-
-  Where hidden() default Where.NOT_SPECIFIED; // <.>
-
-  RestrictTo restrictTo() default RestrictTo.NOT_SPECIFIED; // <.>
-
-  SemanticsOf semantics() default SemanticsOf.NOT_SPECIFIED; // <.>
-
-  Class<?> typeOf() default Object.class; // <.>
-
-  String fileAccept() default ""; // <.>
-}
-----
-
-<.> `[teal]#*_associateWith_*#` : `String`
-+
---
-Associates this action with a property or collection, specifying its id.
-
-This is an alternative to using _MemberOrder#name()_ . To specify the order (equivalent to _MemberOrder#sequence()_ }), use _#associateWithSequence()_ .
-
-For example@Action(associateWith="items", associateWithSequence="2.1")
-
-If an action is associated with a collection, then any matching parameters will have their choices automatically inferred from the collection (if not otherwise specified) and any collection parameter defaults can be specified using checkboxes (in the Wicket UI, at least).
---
-<.> `[teal]#*_associateWithSequence_*#` : `String`
-+
---
-Specifies the sequence/order in the UI for an action that's been associated with a property or collection.
-
-This is an alternative to using _MemberOrder#sequence()_ , but is ignored if _Action#associateWith()_ isn't also specified.
-
-For example@Action(associateWith="items", associateWithSequence="2.1")
---
-<.> `[teal]#*_commandDtoProcessor_*#` : `Class<? extends CommandDtoProcessor>`
-+
---
-The xref:system:generated:index/applib/services/commanddto/processor/CommandDtoProcessor.adoc[CommandDtoProcessor] to process this command's DTO.
-
-The processor itself is used by xref:system:generated:index/applib/services/commanddto/conmap/ContentMappingServiceForCommandDto.adoc[ContentMappingServiceForCommandDto] and xref:system:generated:index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc[ContentMappingServiceForCommandsDto] to dynamically transform the DTOs.
---
-<.> `[teal]#*_commandPublishing_*#` : `xref:system:generated:index/applib/annotation/Publishing.adoc[Publishing]`
-+
---
-Whether action invocations, captured as xref:system:generated:index/applib/services/command/Command.adoc[Command] s, should be published to xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] s.
---
-<.> `[teal]#*_domainEvent_*#` : `Class<? extends ActionDomainEvent<?>>`
-+
---
-Indicates that an invocation of the action should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/domain/ActionDomainEvent.adoc[ActionDomainEvent] .
-
-For example:
-
-----
-
-public class SomeObject{
-    public static class ChangeStartDateDomainEvent extends ActionDomainEvent<SomeObject> { ... }
-
-    @Action(domainEvent=ChangedStartDateDomainEvent.class)
-    public void changeStartDate(final Date startDate) { ...}
-    ...
-}
-----
-
-This subclass must provide a no-arg constructor; the fields are set reflectively.
---
-<.> `[teal]#*_executionPublishing_*#` : `xref:system:generated:index/applib/annotation/Publishing.adoc[Publishing]`
-+
---
-Whether _Execution_ s (triggered by action invocations), should be published to xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber] s.
---
-<.> `[teal]#*_hidden_*#` : `xref:system:generated:index/applib/annotation/Where.adoc[Where]`
-+
---
-Indicates where (in the UI) the action is not visible to the user.
-
-It is also possible to suppress an action's visibility using _ActionLayout#hidden()_ .
-
-For xref:system:generated:index/applib/annotation/DomainService.adoc[DomainService] actions, the action's visibility is dependent upon its _DomainService#nature() nature_ .
---
-<.> `[teal]#*_restrictTo_*#` : `xref:system:generated:index/applib/annotation/RestrictTo.adoc[RestrictTo]`
-+
---
-Whether the action is restricted to prototyping.
-
-By default there are no restrictions, with the action being available in all environments.
---
-<.> `[teal]#*_semantics_*#` : `xref:system:generated:index/applib/annotation/SemanticsOf.adoc[SemanticsOf]`
-+
---
-The action semantics, either _SemanticsOf#SAFE_AND_REQUEST_CACHEABLE cached_ , _SemanticsOf#SAFE safe_ (query-only), _SemanticsOf#IDEMPOTENT idempotent_ or _SemanticsOf#NON_IDEMPOTENT non-idempotent_ .
---
-<.> `[teal]#*_typeOf_*#` : `Class<?>`
-+
---
-The type-of the elements returned by the action.
---
-<.> `[teal]#*_fileAccept_*#` : `String`
-+
---
-For downloading xref:system:generated:index/applib/value/Blob.adoc[Blob] or xref:system:generated:index/applib/value/Clob.adoc[Clob] , optionally restrict the files accepted (eg `.xslx` ).
-
-The value should be of the form "file_extension|audio/*|video/*|image/*|media_type".
---
 
+include::Action/associateWith.adoc[leveloffset=+1]
+include::Action/associateWithSequence.adoc[leveloffset=+1]
+include::Action/commandDtoProcessor.adoc[leveloffset=+1]
+include::Action/commandPublishing.adoc[leveloffset=+1]
+include::Action/domainEvent.adoc[leveloffset=+1]
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/Action/_api.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/_api.adoc
new file mode 100644
index 0000000..a6fb647
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/_api.adoc
@@ -0,0 +1,41 @@
+: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 [...]
+
+
+.Action.java
+[source,java]
+----
+@interface Action {
+  String associateWith() default ""; // <.>
+  String associateWithSequence() default "1"; // <.>
+  Class<? extends CommandDtoProcessor> commandDtoProcessor() default CommandDtoProcessor.class; // <.>
+  Publishing commandPublishing() default Publishing.NOT_SPECIFIED; // <.>
+  Class<? extends ActionDomainEvent<?>> domainEvent() default ActionDomainEvent.Default.class; // <.>
+  Publishing executionPublishing() default Publishing.NOT_SPECIFIED; // <.>
+  Where hidden() default Where.NOT_SPECIFIED; // <.>
+  RestrictTo restrictTo() default RestrictTo.NOT_SPECIFIED; // <.>
+  SemanticsOf semantics() default SemanticsOf.NOT_SPECIFIED; // <.>
+  Class<?> typeOf() default Object.class; // <.>
+  String fileAccept() default ""; // <.>
+}
+----
+
+<.> `[teal]#*_associateWith_*#` : `String`
++
+Associates this action with a property or collection, specifying its id.
+<.> `[teal]#*_associateWithSequence_*#` : `String`
++
+Specifies the sequence/order in the UI for an action that's been associated with a property or collection.
+
+<.> `[teal]#*_commandDtoProcessor_*#` : `Class<? extends CommandDtoProcessor>`
++
+The xref:system:generated:index/applib/services/commanddto/processor/CommandDtoProcessor.adoc[CommandDtoProcessor] to process this command's DTO.
+
+<.> `[teal]#*_commandPublishing_*#` : `xref:system:generated:index/applib/annotation/Publishing.adoc[Publishing]`
++
+Whether action invocations, captured as xref:system:generated:index/applib/services/command/Command.adoc[Command] s, should be published to xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] s.
+
+<.> `[teal]#*_domainEvent_*#` : `Class<? extends ActionDomainEvent<?>>`
++
+Indicates that an invocation of the action should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/domain/ActionDomainEvent.adoc[ActionDomainEvent] .
+
+etc...
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/_description.adoc
similarity index 64%
copy from antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/annotation/Action/_description.adoc
index 97cd126..ebf8f71 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/_description.adoc
@@ -1,16 +1,4 @@
-= ClockService : _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 [...]
 
-This service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
-
-.Java Sources
-[source,java]
-----
-interface ClockService {
-
-  VirtualClock getClock()
-
-  long getEpochMillis()
-}
-----
 
+Collects together domain semantics for an action of a domain object.
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/associateWith.adoc
similarity index 53%
copy from antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/annotation/Action/associateWith.adoc
index 97cd126..c29a492 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/associateWith.adoc
@@ -1,16 +1,23 @@
-= ClockService : _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 [...]
 
-This service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
 
-.Java Sources
+= associateWith()
+
 [source,java]
 ----
-interface ClockService {
+@interface Action {
+  // ...
+  String associateWith() default "";
+= `associateWith` : `String`
+  // ...
+----
 
-  VirtualClock getClock()
+Associates this action with a property or collection, specifying its id.
+
+This is an alternative to using _MemberOrder#name()_ . To specify the order (equivalent to _MemberOrder#sequence()_ }), use _#associateWithSequence()_ .
+
+For example@Action(associateWith="items", associateWithSequence="2.1")
+
+If an action is associated with a collection, then any matching parameters will have their choices automatically inferred from the collection (if not otherwise specified) and any collection parameter defaults can be specified using checkboxes (in the Wicket UI, at least).
 
-  long getEpochMillis()
-}
-----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/associateWithSequence.adoc
similarity index 65%
copy from antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/annotation/Action/associateWithSequence.adoc
index 97cd126..7183b10 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/associateWithSequence.adoc
@@ -1,16 +1,20 @@
-= ClockService : _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 [...]
 
-This service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
 
-.Java Sources
+= associateWithSequence()
+
 [source,java]
 ----
-interface ClockService {
-
-  VirtualClock getClock()
-
-  long getEpochMillis()
+@interface Action {
+  // ...
+  String associateWithSequence() default "1";
+  // ...
 }
 ----
 
+Specifies the sequence/order in the UI for an action that's been associated with a property or collection.
+
+This is an alternative to using _MemberOrder#sequence()_ , but is ignored if _Action#associateWith()_ isn't also specified.
+
+For example@Action(associateWith="items", associateWithSequence="2.1")
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/commandDtoProcessor.adoc
similarity index 54%
copy from antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/annotation/Action/commandDtoProcessor.adoc
index 97cd126..62134d4 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/commandDtoProcessor.adoc
@@ -1,16 +1,18 @@
-= ClockService : _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 [...]
 
-This service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
 
-.Java Sources
+= commandDtoProcessor()
+
 [source,java]
 ----
-interface ClockService {
-
-  VirtualClock getClock()
-
-  long getEpochMillis()
+@interface Action {
+  // ...
+  Class<? extends CommandDtoProcessor> commandDtoProcessor() default CommandDtoProcessor.class; // <.>
+  // ...
 }
 ----
 
+The xref:system:generated:index/applib/services/commanddto/processor/CommandDtoProcessor.adoc[CommandDtoProcessor] to process this command's DTO.
+
+The processor itself is used by xref:system:generated:index/applib/services/commanddto/conmap/ContentMappingServiceForCommandDto.adoc[ContentMappingServiceForCommandDto] and xref:system:generated:index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc[ContentMappingServiceForCommandsDto] to dynamically transform the DTOs.
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/commandPublishing.adoc
similarity index 66%
copy from antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/annotation/Action/commandPublishing.adoc
index 97cd126..5eeaf1c 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/commandPublishing.adoc
@@ -1,16 +1,16 @@
-= ClockService : _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 [...]
 
-This service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
 
-.Java Sources
+= commandPublishing()
+
 [source,java]
 ----
-interface ClockService {
-
-  VirtualClock getClock()
-
-  long getEpochMillis()
+@interface Action {
+  // ...
+  Publishing commandPublishing() default Publishing.NOT_SPECIFIED;
+  // ...
 }
 ----
 
+Whether action invocations, captured as xref:system:generated:index/applib/services/command/Command.adoc[Command] s, should be published to xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] s.
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/domainEvent.adoc
similarity index 50%
copy from antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/annotation/Action/domainEvent.adoc
index 97cd126..7a52f20 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Action/domainEvent.adoc
@@ -1,16 +1,29 @@
-= ClockService : _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 [...]
 
-This service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
 
-.Java Sources
+= domainEvent()
+
 [source,java]
 ----
-interface ClockService {
+@interface Action {
+  // ...
+    Class<? extends ActionDomainEvent<?>> domainEvent() default ActionDomainEvent.Default.class;
+  // ...
+}
+----
 
-  VirtualClock getClock()
+Indicates that an invocation of the action should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/domain/ActionDomainEvent.adoc[ActionDomainEvent] .
+
+For example:
+
+----
+public class SomeObject{
+    public static class ChangeStartDateDomainEvent extends ActionDomainEvent<SomeObject> { ... }
 
-  long getEpochMillis()
+    @Action(domainEvent=ChangedStartDateDomainEvent.class)
+    public void changeStartDate(final Date startDate) { ...}
+    ...
 }
 ----
 
+This subclass must provide a no-arg constructor; the fields are set reflectively.
diff --git a/antora/components/system/modules/generated/pages/index/applib/clock/VirtualClock.adoc b/antora/components/system/modules/generated/pages/index/applib/clock/VirtualClock.adoc
index da6c289..a055148 100644
--- a/antora/components/system/modules/generated/pages/index/applib/clock/VirtualClock.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/clock/VirtualClock.adoc
@@ -1,4 +1,4 @@
-= VirtualClock : _interface_
+= VirtualClock
 :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 [...]
 
 Works in connection with _org.apache.isis.core.interaction.session.InteractionFactory_ , such that it allows an xref:system:generated:index/applib/services/iactn/Interaction.adoc[Interaction] to run with its own simulated (or actual) time.
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
index 97cd126..0a3111d 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
@@ -1,16 +1,17 @@
-= ClockService : _interface_
+= ClockService
 :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 service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
+include::ClockService/_description.adoc[]
 
-.Java Sources
-[source,java]
-----
-interface ClockService {
 
-  VirtualClock getClock()
+== Api
 
-  long getEpochMillis()
-}
-----
+include::ClockService/_api.adoc[leveloffset=+1]
+
+== Implementations
+
+include::ClockService/_implementations.adoc[]
+
+include::ClockService/getClock.adoc[leveloffset=+1]
+include::ClockService/getEpochMillis.adoc[leveloffset=+1]
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/_api.adoc
similarity index 68%
copy from antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/_api.adoc
index 97cd126..c4e82e2 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/_api.adoc
@@ -1,16 +1,22 @@
-= ClockService : _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 [...]
 
-This service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
+: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 [...]
 
-.Java Sources
 [source,java]
+.ClockService.java
 ----
 interface ClockService {
-
-  VirtualClock getClock()
-
-  long getEpochMillis()
+  VirtualClock getClock()   // <.>
+  long getEpochMillis()     // <.>
 }
 ----
+<.> `[teal]#*_getClock()_*#` : `VirtualClock`
++
+--
+Returns a xref:system:generated:index/applib/clock/VirtualClock.adoc[] through which time can be manipulated
+--
 
+<.> `[teal]#*_getEpochMillis()_*#` : `long`
++
+--
+yada yada yada
+--
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/_description.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/_description.adoc
index 97cd126..43ebed3 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/_description.adoc
@@ -1,16 +1,4 @@
-= ClockService : _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 [...]
 
 This service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
 
-.Java Sources
-[source,java]
-----
-interface ClockService {
-
-  VirtualClock getClock()
-
-  long getEpochMillis()
-}
-----
-
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/_implementations.adoc
similarity index 64%
copy from antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/_implementations.adoc
index 97cd126..aa85119 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/_implementations.adoc
@@ -1,16 +1,6 @@
-= ClockService : _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 [...]
 
-This service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
+This service is implemented by:
 
-.Java Sources
-[source,java]
-----
-interface ClockService {
-
-  VirtualClock getClock()
-
-  long getEpochMillis()
-}
-----
+* `org.apache.isis.core.runtimeservices.clock.ClockServiceDefault`.
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/getClock.adoc
similarity index 70%
copy from antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/getClock.adoc
index 97cd126..35ad3f7 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/getClock.adoc
@@ -1,16 +1,16 @@
-= ClockService : _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 [...]
 
-This service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
+= getClock()
+
 
-.Java Sources
 [source,java]
+.ClockService.java
 ----
 interface ClockService {
-
+  ...
   VirtualClock getClock()
-
-  long getEpochMillis()
+  ...
 }
 ----
 
+Returns a xref:system:generated:index/applib/clock/VirtualClock.adoc[] through which time can be manipulated
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/getEpochMillis.adoc
similarity index 70%
copy from antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/getEpochMillis.adoc
index 97cd126..33ad02d 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/clock/ClockService/getEpochMillis.adoc
@@ -1,16 +1,16 @@
-= ClockService : _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 [...]
 
-This service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
+= getEpochMillis()
+
 
-.Java Sources
 [source,java]
+.ClockService.java
 ----
 interface ClockService {
-
-  VirtualClock getClock()
-
+  ...
   long getEpochMillis()
+  ...
 }
 ----
 
+yada yada