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 2020/01/21 16:09:35 UTC

[isis] 10/11: ISIS-2264: more on cfg docs, changing some further to Optional

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

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

commit cacabf42d97b8d66c15347a72dff39dd50589848
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jan 21 15:48:29 2020 +0000

    ISIS-2264: more on cfg docs, changing some further to Optional
---
 .../config/examples/generated/isis.applib.adoc     | 110 ++++++++++-----------
 .../isis.core.meta-model.introspector.adoc         |   2 +-
 .../generated/isis.core.meta-model.validator.adoc  |   8 +-
 .../generated/isis.core.runtime-services.adoc      |   2 +-
 .../generated/isis.viewer.restfulobjects.adoc      |   2 +-
 .../examples/generated/isis.viewer.wicket.adoc     |   8 +-
 .../config/pages/configuration-properties.adoc     |  11 ++-
 .../apache/isis/core/config/IsisConfiguration.java |  28 +++---
 .../additional-spring-configuration-metadata.json  |   7 +-
 scripts/generateConfigDocs.groovy                  |   4 +-
 .../ui/components/widgets/navbar/BrandLogo.java    |  13 ++-
 .../ui/components/widgets/navbar/BrandName.java    |  19 ++--
 12 files changed, 125 insertions(+), 89 deletions(-)

diff --git a/core/config/src/main/adoc/modules/config/examples/generated/isis.applib.adoc b/core/config/src/main/adoc/modules/config/examples/generated/isis.applib.adoc
index e8454b3..3a010de 100644
--- a/core/config/src/main/adoc/modules/config/examples/generated/isis.applib.adoc
+++ b/core/config/src/main/adoc/modules/config/examples/generated/isis.applib.adoc
@@ -23,23 +23,23 @@ The CSS class for individual actions can be overridden using `org.apache.isis.ap
 | isis.applib.annotation.action. +
 command
 | 
-| The default for whether action invocations should be reified as a using the `org.apache.isis.applib.services.command.spi.CommandService, possibly so that the actual execution of the action can be deferred until later (background execution) or replayed against a copy of the system.
+| The default for whether action invocations should be reified as a `org.apache.isis.applib.services.command.Command` using the `org.apache.isis.applib.services.command.spi.CommandService`, possibly so that the actual execution of the action can be deferred until later (background execution) or replayed against a copy of the system.
 
-In particular, the implementation of \{@link org.apache.isis.applib.services.command.Command represents the action invocation memento (obtained using as a \{@link org.apache.isis.schema.cmd.v2.CommandDto.
+In particular, the `org.apache.isis.applib.services.command.CommandWithDto` implementation of `org.apache.isis.applib.services.command.Command` represents the action invocation memento (obtained using `CommandWithDto#asDto()`) as a `org.apache.isis.schema.cmd.v2.CommandDto`.
 
-This setting can be overridden on a case-by-case basis using \{@link org.apache.isis.applib.annotation.Action#command()`.
+This setting can be overridden on a case-by-case basis using `org.apache.isis.applib.annotation.Action#command()`.
 
 
 | isis.applib.annotation.action. +
 domain-event.post-for-default
 |  true
-| Influences whether an should be published (on the internal \{@link org.apache.isis.applib.services.eventbus.EventBusService) whenever an action is being interacted with.
+| Influences whether an `org.apache.isis.applib.events.domain.ActionDomainEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever an action is being interacted with.
 
 Up to five different events can be fired during an interaction, with the event's phase determining which (hide, disable, validate, executing and executed). Subscribers can influence the behaviour at each of these phases.
 
-The algorithm for determining whether (and what type of) an event is actually sent depends on the value of the for the action in question:
+The algorithm for determining whether (and what type of) an event is actually sent depends on the value of the `org.apache.isis.applib.annotation.Action#domainEvent()` for the action in question:
 
-* If set to some subtype of \{@link org.apache.isis.applib.events.domain.ActionDomainEvent.Noop ActionDomainEvent.Noop, then _no_ event is sent.
+* If set to some subtype of ActionDomainEvent.Noop, then _no_ event is sent.
 * If set to some subtype of ActionDomainEvent.Default, then an event is sent _if and only if_ this configuration setting is set.
 * If set to any other subtype, then an event _is_ sent.
 
@@ -53,11 +53,11 @@ explicit
 | isis.applib.annotation.action. +
 publishing
 | 
-| The default for whether action invocations should be sent through to the for publishing.
+| The default for whether action invocations should be sent through to the `org.apache.isis.applib.services.publish.PublisherService` for publishing.
 
-The service's \{@link org.apache.isis.applib.services.publish.PublisherService#publish(Interaction.Execution) publish method is called only once per transaction, with collecting details of the identity of the target object, the action invoked, the action arguments and the returned object (if any).
+The service's publish method is called only once per transaction, with `org.apache.isis.applib.services.iactn.Interaction.Execution` collecting details of the identity of the target object, the action invoked, the action arguments and the returned object (if any).
 
-This setting can be overridden on a case-by-case basis using \{@link org.apache.isis.applib.annotation.Action#publishing().
+This setting can be overridden on a case-by-case basis using `org.apache.isis.applib.annotation.Action#publishing()`.
 
 
 | isis.applib.annotation. +
@@ -81,13 +81,13 @@ This can be overridden on a case-by-case basis using `org.apache.isis.applib.ann
 collection.domain-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal \{@link org.apache.isis.applib.services.eventbus.EventBusService) whenever a collection is being interacted with.
+| Influences whether an `org.apache.isis.applib.events.domain.CollectionDomainEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a collection is being interacted with.
 
 Up to two different events can be fired during an interaction, with the event's phase determining which (hide, disable)Subscribers can influence the behaviour at each of these phases.
 
-The algorithm for determining whether (and what type of) an event is actually sent depends on the value of the for the collection action in question:
+The algorithm for determining whether (and what type of) an event is actually sent depends on the value of the `org.apache.isis.applib.annotation.Collection#domainEvent()` for the collection action in question:
 
-* If set to some subtype of \{@link org.apache.isis.applib.events.domain.CollectionDomainEvent.Noop CollectionDomainEvent.Noop, then _no_ event is sent.
+* If set to some subtype of CollectionDomainEvent.Noop, then _no_ event is sent.
 * If set to some subtype of CollectionDomainEvent.Default, then an event is sent _if and only if_ this configuration setting is set.
 * If set to any other subtype, then an event _is_ sent.
 
@@ -97,9 +97,9 @@ domain-object-layout. +
 css-class-ui-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally change) the CSS classes that are used.
+| Influences whether an `org.apache.isis.applib.events.ui.CssClassUiEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally `org.apache.isis.applib.events.ui.CssClassUiEvent#setCssClass(String)` change) the CSS classes that are used.
 
-The algorithm for determining whether (and what type of) an event is sent depends on the value of the \{@link org.apache.isis.applib.annotation.DomainObjectLayout#cssClassUiEvent() @DomainObjectLayout(cssClassEvent=...)` for the domain object in question.
+The algorithm for determining whether (and what type of) an event is sent depends on the value of the `org.apache.isis.applib.annotation.DomainObjectLayout#cssClassUiEvent()` @DomainObjectLayout(cssClassEvent=...)} for the domain object in question.
 
 * If set to some subtype of CssClassUiEvent.Noop, then _no_ event is sent.
 * If set to some subtype of CssClassUiEvent.Default, then an event is sent _if and only if_ this configuration setting is set.
@@ -111,9 +111,9 @@ domain-object-layout. +
 icon-ui-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally change) the icon that is used.
+| Influences whether an `org.apache.isis.applib.events.ui.IconUiEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally `org.apache.isis.applib.events.ui.IconUiEvent#setIconName(String)` change) the icon that is used.
 
-The algorithm for determining whether (and what type of) an event is sent depends on the value of the \{@link org.apache.isis.applib.annotation.DomainObjectLayout#iconUiEvent() @DomainObjectLayout(iconEvent=...)` for the domain object in question.
+The algorithm for determining whether (and what type of) an event is sent depends on the value of the `org.apache.isis.applib.annotation.DomainObjectLayout#iconUiEvent()` @DomainObjectLayout(iconEvent=...)} for the domain object in question.
 
 * If set to some subtype of IconUiEvent.Noop, then _no_ event is sent.
 * If set to some subtype of IconUiEvent.Default, then an event is sent _if and only if_ this configuration setting is set.
@@ -125,11 +125,11 @@ domain-object-layout. +
 layout-ui-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally change) the layout that is used.
+| Influences whether an `org.apache.isis.applib.events.ui.LayoutUiEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally `org.apache.isis.applib.events.ui.LayoutUiEvent#setLayout(String)` change) the layout that is used.
 
 If a different layout value has been set, then a layout in the form `Xxx.layout-zzz.xml` use used (where `zzz` is the name of the layout).
 
-The algorithm for determining whether (and what type of) an event is sent depends on the value of the \{@link org.apache.isis.applib.annotation.DomainObjectLayout#layoutUiEvent() @DomainObjectLayout(layoutEvent=...)` for the domain object in question.
+The algorithm for determining whether (and what type of) an event is sent depends on the value of the `org.apache.isis.applib.annotation.DomainObjectLayout#layoutUiEvent()` @DomainObjectLayout(layoutEvent=...)} for the domain object in question.
 
 * If set to some subtype of LayoutUiEvent.Noop, then _no_ event is sent.
 * If set to some subtype of LayoutUiEvent.Default, then an event is sent _if and only if_ this configuration setting is set.
@@ -149,9 +149,9 @@ domain-object-layout. +
 title-ui-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally change) the title that is used.
+| Influences whether an `org.apache.isis.applib.events.ui.TitleUiEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally `org.apache.isis.applib.events.ui.TitleUiEvent#setTitle(String)` change) the title that is used.
 
-The algorithm for determining whether (and what type of) an event is sent depends on the value of the \{@link org.apache.isis.applib.annotation.DomainObjectLayout#titleUiEvent() @DomainObjectLayout(titleEvent=...)` for the domain object in question.
+The algorithm for determining whether (and what type of) an event is sent depends on the value of the `org.apache.isis.applib.annotation.DomainObjectLayout#titleUiEvent()` @DomainObjectLayout(titleEvent=...)} for the domain object in question.
 
 * If set to some subtype of TitleUiEvent.Noop, then _no_ event is sent.
 * If set to some subtype of TitleUiEvent.Default, then an event is sent _if and only if_ this configuration setting is set.
@@ -161,9 +161,9 @@ The algorithm for determining whether (and what type of) an event is sent depend
 | isis.applib.annotation. +
 domain-object.auditing
 | 
-| The default for whether _domain entities_ should be audited or not (meaning that any changes are sent through to the
+| The default for whether _domain entities_ should be audited or not (meaning that any changes are sent through to the `org.apache.isis.applib.services.audit.AuditerService`.
 
-This setting can be overridden on a case-by-case basis using `org.apache.isis.applib.annotation.DomainObject#auditing() DomainObject#getAuditing()`
+This setting can be overridden on a case-by-case basis using `org.apache.isis.applib.annotation.DomainObject#auditing()` DomainObject#getAuditing()}
 
 Note: this applies only to domain entities, not view models.
 
@@ -173,9 +173,9 @@ domain-object. +
 created-lifecycle-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal \{@link org.apache.isis.applib.services.eventbus.EventBusService) whenever a domain object has been created using
+| Influences whether an `org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a domain object has been created using `org.apache.isis.applib.services.factory.FactoryService`.
 
-The algorithm for determining whether (and what type of) an event is sent depends on the value of the \{@link org.apache.isis.applib.annotation.DomainObject#createdLifecycleEvent() @DomainObject(createdLifecycleEvent=...) for the domain object in question.
+The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(createdLifecycleEvent=...) for the domain object in question.
 
 * If set to some subtype of ObjectCreatedEvent.Noop, then _no_ event is sent.
 * If set to some subtype of ObjectCreatedEvent.Default, then an event is sent _if and only if_ this configuration setting is set.
@@ -195,7 +195,7 @@ domain-object. +
 loaded-lifecycle-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal \{@link org.apache.isis.applib.services.eventbus.EventBusService) whenever a domain _entity_ has been loaded from the persistence store.
+| Influences whether an `org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a domain _entity_ has been loaded from the persistence store.
 
 The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(loadedLifecycleEvent=...) for the domain object in question.
 
@@ -211,7 +211,7 @@ domain-object. +
 persisted-lifecycle-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal \{@link org.apache.isis.applib.services.eventbus.EventBusService) whenever a domain _entity_ has been persisted (for the first time) to the persistence store.
+| Influences whether an `org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a domain _entity_ has been persisted (for the first time) to the persistence store.
 
 The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(persistedLifecycleEvent=...) for the domain object in question.
 
@@ -227,7 +227,7 @@ domain-object. +
 persisting-lifecycle-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal \{@link org.apache.isis.applib.services.eventbus.EventBusService) whenever a domain _entity_ is about to be persisting (for the first time) to the persistence store.
+| Influences whether an `org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a domain _entity_ is about to be persisting (for the first time) to the persistence store.
 
 The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(persistingLifecycleEvent=...) for the domain object in question.
 
@@ -241,11 +241,11 @@ Note: this applies only to domain entities, not to view models.
 | isis.applib.annotation. +
 domain-object.publishing
 | 
-| The default for whether the identities of changed objects should be sent through to the for publishing.
+| The default for whether the identities of changed objects should be sent through to the `org.apache.isis.applib.services.publish.PublisherService` for publishing.
 
-The service's \{@link org.apache.isis.applib.services.publish.PublisherService#publish(PublishedObjects) publish method is called only once per transaction, with collecting details of all changed domain objects.
+The service's publish method is called only once per transaction, with `PublishedObjects` collecting details of all changed domain objects.
 
-This setting can be overridden on a case-by-case basis using \{@link org.apache.isis.applib.annotation.DomainObject#publishing().
+This setting can be overridden on a case-by-case basis using `org.apache.isis.applib.annotation.DomainObject#publishing()`.
 
 
 | isis.applib.annotation. +
@@ -253,7 +253,7 @@ domain-object. +
 removing-lifecycle-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal \{@link org.apache.isis.applib.services.eventbus.EventBusService) whenever a persistent domain _entity_ is about to be removed (that is, deleted) from the persistence store.
+| Influences whether an `org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a persistent domain _entity_ is about to be removed (that is, deleted) from the persistence store.
 
 The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(removingLifecycleEvent=...) for the domain object in question.
 
@@ -271,7 +271,7 @@ domain-object. +
 updated-lifecycle-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal \{@link org.apache.isis.applib.services.eventbus.EventBusService) whenever a persistent domain _entity_ has been updated in the persistence store.
+| Influences whether an `org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a persistent domain _entity_ has been updated in the persistence store.
 
 The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(updatedLifecycleEvent=...) for the domain object in question.
 
@@ -287,7 +287,7 @@ domain-object. +
 updating-lifecycle-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal \{@link org.apache.isis.applib.services.eventbus.EventBusService) whenever a persistent domain _entity_ is about to be updated in the persistence store.
+| Influences whether an `org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a persistent domain _entity_ is about to be updated in the persistence store.
 
 The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(updatingLifecycleEvent=...) for the domain object in question.
 
@@ -304,9 +304,9 @@ label-position
 | 
 | Defines the default position for the label for an action parameter.
 
-Can be overridden on a case-by-case basis using
+Can be overridden on a case-by-case basis using `org.apache.isis.applib.annotation.ParameterLayout#labelPosition()`.
 
-If left as \{@link LabelPosition#NOT_SPECIFIED and not overridden, then the position depends upon the viewer implementation.
+If left as `LabelPosition#NOT_SPECIFIED` and not overridden, then the position depends upon the viewer implementation.
 
 
 | isis.applib.annotation. +
@@ -315,32 +315,32 @@ label-position
 | 
 | Defines the default position for the label for a domain object property.
 
-Can be overridden on a case-by-case basis using
+Can be overridden on a case-by-case basis using `org.apache.isis.applib.annotation.ParameterLayout#labelPosition()`.
 
-If left as \{@link LabelPosition#NOT_SPECIFIED and not overridden, then the position depends upon the viewer implementation.
+If left as `LabelPosition#NOT_SPECIFIED` and not overridden, then the position depends upon the viewer implementation.
 
 
 | isis.applib.annotation. +
 property.command
 | 
-| The default for whether property edits should be reified as a using the `org.apache.isis.applib.services.command.spi.CommandService, possibly so that the actual execution of the property edit can be deferred until later (background execution) or replayed against a copy of the system.
+| The default for whether property edits should be reified as a `org.apache.isis.applib.services.command.Command` using the `org.apache.isis.applib.services.command.spi.CommandService`, possibly so that the actual execution of the property edit can be deferred until later (background execution) or replayed against a copy of the system.
 
-In particular, the implementation of \{@link org.apache.isis.applib.services.command.Command represents the action invocation memento (obtained using as a \{@link org.apache.isis.schema.cmd.v2.CommandDto.
+In particular, the `org.apache.isis.applib.services.command.CommandWithDto` implementation of `org.apache.isis.applib.services.command.Command` represents the action invocation memento (obtained using `CommandWithDto#asDto()`) as a `org.apache.isis.schema.cmd.v2.CommandDto`.
 
-This setting can be overridden on a case-by-case basis using \{@link org.apache.isis.applib.annotation.Action#command()`.
+This setting can be overridden on a case-by-case basis using `org.apache.isis.applib.annotation.Action#command()`.
 
 
 | isis.applib.annotation. +
 property.domain-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal \{@link org.apache.isis.applib.services.eventbus.EventBusService) whenever an property is being interacted with.
+| Influences whether an `org.apache.isis.applib.events.domain.PropertyDomainEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever an property is being interacted with.
 
 Up to five different events can be fired during an interaction, with the event's phase determining which (hide, disable, validate, executing and executed). Subscribers can influence the behaviour at each of these phases.
 
-The algorithm for determining whether (and what type of) an event is actually sent depends on the value of the for the property in question:
+The algorithm for determining whether (and what type of) an event is actually sent depends on the value of the `org.apache.isis.applib.annotation.Property#domainEvent()` for the property in question:
 
-* If set to some subtype of \{@link org.apache.isis.applib.events.domain.PropertyDomainEvent.Noop propertyDomainEvent.Noop, then _no_ event is sent.
+* If set to some subtype of propertyDomainEvent.Noop, then _no_ event is sent.
 * If set to some subtype of propertyDomainEvent.Default, then an event is sent _if and only if_ this configuration setting is set.
 * If set to any other subtype, then an event _is_ sent.
 
@@ -348,11 +348,11 @@ The algorithm for determining whether (and what type of) an event is actually se
 | isis.applib.annotation. +
 property.publishing
 | 
-| The default for whether property edits should be sent through to the for publishing.
+| The default for whether property edits should be sent through to the `org.apache.isis.applib.services.publish.PublisherService` for publishing.
 
-The service's \{@link org.apache.isis.applib.services.publish.PublisherService#publish(Interaction.Execution) publish method is called only once per transaction, with collecting details of the identity of the target object, the property edited, and the new value of the property.
+The service's publish method is called only once per transaction, with `org.apache.isis.applib.services.iactn.Interaction.Execution` collecting details of the identity of the target object, the property edited, and the new value of the property.
 
-This setting can be overridden on a case-by-case basis using \{ @link org.apache.isis.applib.annotation.Property#publishing().
+This setting can be overridden on a case-by-case basis using \{ @link org.apache.isis.applib.annotation.Property#publishing()}.
 
 
 | isis.applib.annotation. +
@@ -360,9 +360,9 @@ view-model-layout. +
 css-class-ui-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService) whenever a view model (annotated with @ViewModel) is about to be rendered in the UI - thereby allowing subscribers to optionally change) the CSS classes that are used.
+| Influences whether an `org.apache.isis.applib.events.ui.CssClassUiEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a view model (annotated with @ViewModel) is about to be rendered in the UI - thereby allowing subscribers to optionally `org.apache.isis.applib.events.ui.CssClassUiEvent#setCssClass(String)` change) the CSS classes that are used.
 
-The algorithm for determining whether (and what type of) an event is sent depends on the value of the \{@link org.apache.isis.applib.annotation.ViewModelLayout#cssClassUiEvent() @ViewModelLayout(cssClassEvent=...)` for the domain object in question:
+The algorithm for determining whether (and what type of) an event is sent depends on the value of the `org.apache.isis.applib.annotation.ViewModelLayout#cssClassUiEvent()` @ViewModelLayout(cssClassEvent=...)} for the domain object in question:
 
 * If set to some subtype of CssClassUiEvent.Noop, then _no_ event is sent.
 * If set to some subtype of CssClassUiEvent.Default, then an event is sent _if and only if_ this configuration setting is set.
@@ -374,9 +374,9 @@ view-model-layout. +
 icon-ui-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService) whenever a view model (annotated with @ViewModel) is about to be rendered in the UI - thereby allowing subscribers to optionally change) the icon that is used.
+| Influences whether an `org.apache.isis.applib.events.ui.IconUiEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a view model (annotated with @ViewModel) is about to be rendered in the UI - thereby allowing subscribers to optionally `org.apache.isis.applib.events.ui.IconUiEvent#setIconName(String)` change) the icon that is used.
 
-The algorithm for determining whether (and what type of) an event is sent depends on the value of the \{@link org.apache.isis.applib.annotation.ViewModelLayout#iconUiEvent() @ViewModelLayout(iconEvent=...)` for the domain object in question:
+The algorithm for determining whether (and what type of) an event is sent depends on the value of the `org.apache.isis.applib.annotation.ViewModelLayout#iconUiEvent()` @ViewModelLayout(iconEvent=...)} for the domain object in question:
 
 * If set to some subtype of IconUiEvent.Noop, then _no_ event is sent.
 * If set to some subtype of IconUiEvent.Default, then an event is sent _if and only if_ this configuration setting is set.
@@ -388,11 +388,11 @@ view-model-layout. +
 layout-ui-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService) whenever a view model (annotated with @ViewModel) is about to be rendered in the UI - thereby allowing subscribers to optionally change) the layout that is used.
+| Influences whether an `org.apache.isis.applib.events.ui.LayoutUiEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a view model (annotated with @ViewModel) is about to be rendered in the UI - thereby allowing subscribers to optionally `org.apache.isis.applib.events.ui.LayoutUiEvent#setLayout(String)` change) the layout that is used.
 
 If a different layout value has been set, then a layout in the form `Xxx.layout-zzz.xml` use used (where `zzz` is the name of the layout).
 
-The algorithm for determining whether (and what type of) an event is sent depends on the value of the \{@link org.apache.isis.applib.annotation.ViewModelLayout#layoutUiEvent() @ViewModelLayout(layoutEvent=...)` for the domain object in question:
+The algorithm for determining whether (and what type of) an event is sent depends on the value of the `org.apache.isis.applib.annotation.ViewModelLayout#layoutUiEvent()` @ViewModelLayout(layoutEvent=...)} for the domain object in question:
 
 * If set to some subtype of LayoutUiEvent.Noop, then _no_ event is sent.
 * If set to some subtype of LayoutUiEvent.Default, then an event is sent _if and only if_ this configuration setting is set.
@@ -404,9 +404,9 @@ view-model-layout. +
 title-ui-event. +
 post-for-default
 |  true
-| Influences whether an should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService) whenever a view model (annotated with @ViewModel) is about to be rendered in the UI - thereby allowing subscribers to optionally change) the title that is used.
+| Influences whether an `org.apache.isis.applib.events.ui.TitleUiEvent` should be published (on the internal `org.apache.isis.applib.services.eventbus.EventBusService`) whenever a view model (annotated with @ViewModel) is about to be rendered in the UI - thereby allowing subscribers to optionally `org.apache.isis.applib.events.ui.TitleUiEvent#setTitle(String)` change) the title that is used.
 
-The algorithm for determining whether (and what type of) an event is sent depends on the value of the \{@link org.apache.isis.applib.annotation.ViewModelLayout#titleUiEvent() @ViewModelLayout(titleEvent=...)` for the domain object in question:
+The algorithm for determining whether (and what type of) an event is sent depends on the value of the `org.apache.isis.applib.annotation.ViewModelLayout#titleUiEvent()` @ViewModelLayout(titleEvent=...)} for the domain object in question:
 
 * If set to some subtype of TitleUiEvent.Noop, then _no_ event is sent.
 * If set to some subtype of TitleUiEvent.Default, then an event is sent _if and only if_ this configuration setting is set.
@@ -417,6 +417,6 @@ The algorithm for determining whether (and what type of) an event is sent depend
 view-model.validation. +
 semantic-checking.enable
 | 
-| Whether to check for inconsistencies between the usage of \{@link org.apache.isis.applib.annotation.ViewModel, and \{@link org.apache.isis.applib.annotation.ViewModelLayout.
+| Whether to check for inconsistencies between the usage of `org.apache.isis.applib.annotation.DomainObject`, `org.apache.isis.applib.annotation.ViewModel`, `org.apache.isis.applib.annotation.DomainObjectLayout` and `org.apache.isis.applib.annotation.ViewModelLayout`.
 
 
diff --git a/core/config/src/main/adoc/modules/config/examples/generated/isis.core.meta-model.introspector.adoc b/core/config/src/main/adoc/modules/config/examples/generated/isis.core.meta-model.introspector.adoc
index 9534929..8773d2e 100644
--- a/core/config/src/main/adoc/modules/config/examples/generated/isis.core.meta-model.introspector.adoc
+++ b/core/config/src/main/adoc/modules/config/examples/generated/isis.core.meta-model.introspector.adoc
@@ -4,7 +4,7 @@ lock-after-full-introspection
 |  true
 | If true, then no new specifications will be allowed to be loaded once introspection has been complete.
 
-Only applies if the introspector is configured to perform full introspection up-front (either because of or \{@link IntrospectionMode#LAZY_UNLESS_PRODUCTION when in production); otherwise is ignored.
+Only applies if the introspector is configured to perform full introspection up-front (either because of `IntrospectionMode#FULL` or `IntrospectionMode#LAZY_UNLESS_PRODUCTION` when in production); otherwise is ignored.
 
 
 | isis.core.meta-model. +
diff --git a/core/config/src/main/adoc/modules/config/examples/generated/isis.core.meta-model.validator.adoc b/core/config/src/main/adoc/modules/config/examples/generated/isis.core.meta-model.validator.adoc
index 67e14ac..8943250 100644
--- a/core/config/src/main/adoc/modules/config/examples/generated/isis.core.meta-model.validator.adoc
+++ b/core/config/src/main/adoc/modules/config/examples/generated/isis.core.meta-model.validator.adoc
@@ -25,18 +25,18 @@ validator.check-module-extent
 validator. +
 ensure-unique-object-types
 |  true
-| Whether to ensure that the object type of all objects (which can be set either explicitly using or `DomainService#objectType(), or can be inferred implicitly using a variety of mechanisms) must be unique with respect to all other object types.
+| Whether to ensure that the object type of all objects (which can be set either explicitly using `DomainObject#objectType()` or `DomainService#objectType()`, or can be inferred implicitly using a variety of mechanisms) must be unique with respect to all other object types.
 
-It is _highly advisable_ to leave this set as enabled (the default), and to also use explicit types (see \{@link #isExplicitObjectType()`.
+It is _highly advisable_ to leave this set as enabled (the default), and to also use explicit types (see `#isExplicitObjectType()`.
 
 
 | isis.core.meta-model. +
 validator. +
 explicit-object-type
 | 
-| Whether to ensure that the object type of all objects must be specified explicitly, using either or `DomainService#objectType().
+| Whether to ensure that the object type of all objects must be specified explicitly, using either `DomainObject#objectType()` or `DomainService#objectType()`.
 
-It is _highly advisable_ to leave this set as enabled (the default). These object types should also (of course) be unique - that can be checked by setting the \{@link #isEnsureUniqueObjectTypes()` config property.
+It is _highly advisable_ to leave this set as enabled (the default). These object types should also (of course) be unique - that can be checked by setting the `#isEnsureUniqueObjectTypes()` config property.
 
 
 | isis.core.meta-model. +
diff --git a/core/config/src/main/adoc/modules/config/examples/generated/isis.core.runtime-services.adoc b/core/config/src/main/adoc/modules/config/examples/generated/isis.core.runtime-services.adoc
index 82076b4..88d149b 100644
--- a/core/config/src/main/adoc/modules/config/examples/generated/isis.core.runtime-services.adoc
+++ b/core/config/src/main/adoc/modules/config/examples/generated/isis.core.runtime-services.adoc
@@ -1,7 +1,7 @@
 | isis.core.runtime-services. +
 application-features.init
 | 
-| Whether the (or the default implementation of that service, at least) should compute the set of `ApplicationFeature` that describe the metamodel \{@link ApplicationFeaturesInitConfiguration#EAGERLY eagerly, or lazily.
+| Whether the `org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository` (or the default implementation of that service, at least) should compute the set of `ApplicationFeature` that describe the metamodel eagerly, or lazily.
 
 
 | isis.core.runtime-services. +
diff --git a/core/config/src/main/adoc/modules/config/examples/generated/isis.viewer.restfulobjects.adoc b/core/config/src/main/adoc/modules/config/examples/generated/isis.viewer.restfulobjects.adoc
index 9dc2e2f..abbc31b 100644
--- a/core/config/src/main/adoc/modules/config/examples/generated/isis.viewer.restfulobjects.adoc
+++ b/core/config/src/main/adoc/modules/config/examples/generated/isis.viewer.restfulobjects.adoc
@@ -1,7 +1,7 @@
 | isis.viewer.restfulobjects. +
 base-uri
 | 
-| If left unset (the default), then the RO viewer will use the injected using @link javax.ws.rs.core.Context) to figure out the base Uri (used to render `href`s).
+| If left unset (the default), then the RO viewer will use the `javax.ws.rs.core.UriInfo` injected using @link javax.ws.rs.core.Context}) to figure out the base Uri (used to render `href`s).
 
 This will be correct much of the time, but will almost certainly be wrong if there is a reverse proxy.
 
diff --git a/core/config/src/main/adoc/modules/config/examples/generated/isis.viewer.wicket.adoc b/core/config/src/main/adoc/modules/config/examples/generated/isis.viewer.wicket.adoc
index 756f59d..d9c0f64 100644
--- a/core/config/src/main/adoc/modules/config/examples/generated/isis.viewer.wicket.adoc
+++ b/core/config/src/main/adoc/modules/config/examples/generated/isis.viewer.wicket.adoc
@@ -167,7 +167,7 @@ date-time-pattern
 |  dd-MM-yyyy HH:mm
 | The pattern used for rendering and parsing date/times.
 
-Each Date scalar panel will use or \{@link Wicket#getDateTimePattern() depending on its date type. In the case of panels with a date time picker, the pattern will be dynamically adjusted so that it can be used by the https://github.com/Eonasdan/bootstrap-datetimepicker[Bootstrap Datetime Picker] component (which uses http://momentjs.com/docs/#/parsing/string-format/[Moment.js formats], rather than those of regular Java code).
+Each Date scalar panel will use `Wicket#getDatePattern()` or `Wicket#getDateTimePattern()` depending on its date type. In the case of panels with a date time picker, the pattern will be dynamically adjusted so that it can be used by the https://github.com/Eonasdan/bootstrap-datetimepicker[Bootstrap Datetime Picker] component (which uses http://momentjs.com/docs/#/parsing/string-format/[Moment.js formats], rather than those of regular Java code).
 
 
 | isis.viewer.wicket. +
@@ -217,7 +217,7 @@ standalone-tables
 | isis.viewer.wicket. +
 max-title-length-in-tables
 |  12
-| The maximum number of characters to use to render the title of a domain object (alongside the icon) in any table, if not otherwise overridden by either or \{@link #getMaxTitleLengthInStandaloneTables().
+| The maximum number of characters to use to render the title of a domain object (alongside the icon) in any table, if not otherwise overridden by either `#getMaxTitleLengthInParentedTables()` or `#getMaxTitleLengthInStandaloneTables()`.
 
 If truncated, then the remainder of the title will be replaced with ellipses (...).
 
@@ -312,7 +312,7 @@ suppress-password-reset
 | 
 | Whether to suppress the password reset link on the sign-in page.
 
-Although this is disabled by default (in other words the 'reset password' link is not suppressed), note that in addition the application must provide an implementation of the as well as a configured `org.apache.isis.applib.services.userreg.EmailNotificationService (same conditions as for the \{@link #isSuppressSignUp()` sign-up link).
+Although this is disabled by default (in other words the 'reset password' link is not suppressed), note that in addition the application must provide an implementation of the `org.apache.isis.applib.services.userreg.UserRegistrationService` as well as a configured `org.apache.isis.applib.services.userreg.EmailNotificationService` (same conditions as for the `#isSuppressSignUp()` sign-up link).
 
 
 | isis.viewer.wicket. +
@@ -320,7 +320,7 @@ suppress-sign-up
 | 
 | Whether to suppress the sign-up link on the sign-in page.
 
-Although this is disabled by default (in other words the sign-up link is not suppressed), note that in addition the application must provide an implementation of the as well as a configured `org.apache.isis.applib.services.userreg.EmailNotificationService (same conditions as for the \{@link #isSuppressPasswordReset()` password reset link).
+Although this is disabled by default (in other words the sign-up link is not suppressed), note that in addition the application must provide an implementation of the `org.apache.isis.applib.services.userreg.UserRegistrationService` as well as a configured `org.apache.isis.applib.services.userreg.EmailNotificationService` (same conditions as for the `#isSuppressPasswordReset()` password reset link).
 
 
 | isis.viewer.wicket.themes. +
diff --git a/core/config/src/main/adoc/modules/config/pages/configuration-properties.adoc b/core/config/src/main/adoc/modules/config/pages/configuration-properties.adoc
index 191b96b..f2e97a5 100644
--- a/core/config/src/main/adoc/modules/config/pages/configuration-properties.adoc
+++ b/core/config/src/main/adoc/modules/config/pages/configuration-properties.adoc
@@ -111,7 +111,16 @@ include::refguide:config:example$generated/isis.persistence.jdo-datanucleus.adoc
 
 
 
-== JDO DataNucleus Persistence Pass-thru Settings
+== JDO DN Pass-thru
+
+The values of these configuration properties are passed through unchanged, with the `isis.persistence.jdo-datanucleus.impl` prefix stripped off.
+
+[NOTE]
+====
+Configuration properties keys under `datanucleus` need to be specified in `camelCase`.
+
+Configuration properties keys under `javax.jdo.option` need to be specified in `PascalCase`.
+====
 
 [cols="2a,2a,3a", options="header"]
 |===
diff --git a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
index 5a7cefe..9ad6b95 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
@@ -1975,7 +1975,7 @@ public class IsisConfiguration {
 
             /**
              * If left unset (the default), then the RO viewer will use the {@link javax.ws.rs.core.UriInfo}
-             * injected using  @link javax.ws.rs.core.Context}) to figure out the base Uri (used to render
+             * (injected using {@link javax.ws.rs.core.Context}) to figure out the base Uri (used to render
              * <code>href</code>s).
              *
              * <p>
@@ -2007,8 +2007,8 @@ public class IsisConfiguration {
         public static class Wicket {
 
             /**
-             * Specifies the subclass of <
-             * code>org.apache.isis.viewer.wicket.viewer.wicketapp.IsisWicketApplication</code> that is used to
+             * Specifies the subclass of
+             * <code>org.apache.isis.viewer.wicket.viewer.wicketapp.IsisWicketApplication</code> that is used to
              * bootstrap Wicket.
              *
              * <p>
@@ -2056,11 +2056,13 @@ public class IsisConfiguration {
              * The pattern used for rendering and parsing date/times.
              *
              * <p>
-             * Each Date scalar panel will use {@link Wicket#getDatePattern()} or {@link Wicket#getDateTimePattern()} depending on its
-             * date type.  In the case of panels with a date time picker, the pattern will be dynamically adjusted so that it can be
+             * Each Date scalar panel will use {@link Wicket#getDatePattern()} or {@link Wicket#getDateTimePattern()}
+             * depending on its date type.  In the case of panels with a date time picker, the pattern will be
+             * dynamically adjusted so that it can be
              * used by the <a href="https://github.com/Eonasdan/bootstrap-datetimepicker">Bootstrap Datetime Picker</a>
              * component (which uses <a href="http://momentjs.com/docs/#/parsing/string-format/">Moment.js formats</a>, rather
              * than those of regular Java code).
+             * </p>
              */
             @NotNull @NotEmpty
             private String dateTimePattern = "dd-MM-yyyy HH:mm";
@@ -2308,15 +2310,18 @@ public class IsisConfiguration {
                  * If not specified, the application.name is used instead.
                  * </p>
                  */
-                private String brandLogoHeader;
+                private Optional<String> brandLogoHeader = Optional.empty();
                 
                 /**
                  * Either the location of the image file (relative to the class-path resource root), 
-                 * or an absolute URL. 
-                 * This is rendered on the sign-in page. An image with a size of 400x40 works well. 
-                 * If not specified, the {@link Application#name} is used instead.
+                 * or an absolute URL.
+                 *
+                 * <p>
+                 * This is rendered on the sign-in page. An image with a size of 400x40 works well.
+                 * If not specified, the {@link Application#getName() application name} is used instead.
+                 * </p>
                  */
-                private String brandLogoSignin;
+                private Optional<String> brandLogoSignin = Optional.empty();
                 
                 /**
                  * URL of file to read any custom CSS, relative to <code>static</code> package on the class path.
@@ -2507,7 +2512,8 @@ public class IsisConfiguration {
             public static class DevelopmentUtilities {
 
                 /**
-                 * Determines whether debug bar and other stuff influenced by <tt>org.apache.wicket.settings.DebugSettings#isDevelopmentUtilitiesEnabled()</tt> is enabled or not.
+                 * Determines whether debug bar and other stuff influenced by
+                 * <code>DebugSettings#isDevelopmentUtilitiesEnabled()</code> is enabled or not.
                  *
                  * <p>
                  *     By default, depends on the mode (prototyping = enabled, server = disabled).  This property acts as an override.
diff --git a/core/config/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/core/config/src/main/resources/META-INF/additional-spring-configuration-metadata.json
index fd56d0c..e83d489 100644
--- a/core/config/src/main/resources/META-INF/additional-spring-configuration-metadata.json
+++ b/core/config/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -58,7 +58,12 @@
     },
     {
       "name": "isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionDriverName",
-      "type": "java.lang.String"
+      "providers": [{
+        "name": "class-reference",
+        "parameters": {
+          "target": "java.sql.Driver"
+        }
+      }]
     },
     {
       "name": "isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionURL",
diff --git a/scripts/generateConfigDocs.groovy b/scripts/generateConfigDocs.groovy
index 257f59e..843166f 100644
--- a/scripts/generateConfigDocs.groovy
+++ b/scripts/generateConfigDocs.groovy
@@ -261,8 +261,8 @@ System.out.println("");
 static String toAsciidoc(String str) {
 
     System.out.print(".");
-    str = str.replaceAll( /\{@link[ ]+?(.+?)[ ]+(.+?)[ ]*?}/, '$2')
-    str = str.replaceAll( /\{@link[ ]+?(.+?)[ ]*?}/, '`$1`')
+    str = str.replaceAll( /\{@link[ ]+?([^}]+?)[ ]+?([^}]+?)[ ]*?}/, '$2')
+    str = str.replaceAll( /\{@link[ ]+?([^}]+?)[ ]*?}/, '`$1`')
 
     File tf = File.createTempFile("input",".html")
     tf.write(str)   // write to the file
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandLogo.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandLogo.java
index ecf1b70..b8b00ac 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandLogo.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandLogo.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.widgets.navbar;
 
+import java.util.Optional;
+
 import javax.inject.Inject;
 
 import org.apache.wicket.markup.ComponentTag;
@@ -63,8 +65,15 @@ public class BrandLogo extends WebComponent {
     }
 
     private String url() {
-        String logoHeaderUrl = webAppContextPath.prependContextPathIfLocal(isisConfiguration.getViewer().getWicket().getApplication().getBrandLogoHeader());
-        String logoSigninUrl = webAppContextPath.prependContextPathIfLocal(isisConfiguration.getViewer().getWicket().getApplication().getBrandLogoSignin());
+        final String logoHeaderUrl =
+                isisConfiguration.getViewer().getWicket().getApplication().getBrandLogoHeader()
+                    .map(webAppContextPath::prependContextPathIfLocal)
+                    .orElse(null);
+
+        String logoSigninUrl =
+                isisConfiguration.getViewer().getWicket().getApplication().getBrandLogoSignin()
+                    .map(webAppContextPath::prependContextPathIfLocal)
+                    .orElse(null);
 
         return placement.urlFor(logoHeaderUrl, logoSigninUrl);
     }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandName.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandName.java
index 7f235cd..9d2e357 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandName.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandName.java
@@ -52,12 +52,6 @@ public class BrandName extends Label {
         super(id);
         this.placement = placement;
         
-        if(webAppContextPath!=null) {
-            applicationName = isisConfiguration.getViewer().getWicket().getApplication().getName();
-            logoHeaderUrl = webAppContextPath.prependContextPathIfLocal(isisConfiguration.getViewer().getWicket().getApplication().getBrandLogoHeader());
-            logoSigninUrl = webAppContextPath.prependContextPathIfLocal(isisConfiguration.getViewer().getWicket().getApplication().getBrandLogoSignin());
-        }
-
         setDefaultModel(Model.of(applicationName));
     }
 
@@ -65,6 +59,19 @@ public class BrandName extends Label {
     protected void onConfigure() {
         super.onConfigure();
 
+        if(webAppContextPath != null && isisConfiguration != null) {
+
+            applicationName = isisConfiguration.getViewer().getWicket().getApplication().getName();
+            logoHeaderUrl =
+                    isisConfiguration.getViewer().getWicket().getApplication().getBrandLogoHeader()
+                        .map(webAppContextPath::prependContextPathIfLocal)
+                        .orElse(null);
+            logoSigninUrl =
+                    isisConfiguration.getViewer().getWicket().getApplication().getBrandLogoSignin()
+                        .map(webAppContextPath::prependContextPathIfLocal)
+                        .orElse(null);
+        }
+
         setVisible(placement.urlFor(logoHeaderUrl, logoSigninUrl) == null);
     }
 }