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/17 07:40:06 UTC

[isis] branch master updated (516620e -> eed8e94)

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

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


    from 516620e  ISIS-2264: docs
     new 7230320  ISIS-2264: adds some javadoc for some config properties
     new 3b147a0  ISIS-2264: adds some constraints for email config props.
     new 6139311  ISIS-2264: removes some redundant code in DN bootstrapping
     new cd28a7f  ISIS-2264: improves javadoc for some isis config props, is all.
     new 9c20b82  ISIS-2264: adds some further validation constraints for config properties.
     new eed8e94  ISIS-2264: sync adoc

The 6 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.


Summary of changes:
 .../config/examples/generated/isis.applib.adoc     |  65 ++-
 .../isis.persistence.jdo-datanucleus.impl.adoc     |  30 +-
 .../examples/generated/isis.security.shiro.adoc    |   3 +-
 .../examples/generated/isis.viewer.wicket.adoc     |   7 +-
 .../apache/isis/core/config/IsisConfiguration.java | 599 +++++++++++++++++++--
 .../persistence/PersistenceSessionFactory5.java    |  15 -
 .../pages/about/configuring-isis-to-use-shiro.adoc |   2 +-
 .../isis/viewer/wicket/ui/pages/PageAbstract.java  |   5 +-
 8 files changed, 634 insertions(+), 92 deletions(-)


[isis] 05/06: ISIS-2264: adds some further validation constraints for config properties.

Posted by da...@apache.org.
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 9c20b8217cdc2d3909ec3c9e42f9a9e7b66d448f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 08:18:07 2020 +0100

    ISIS-2264: adds some further validation constraints for config properties.
---
 .../apache/isis/core/config/IsisConfiguration.java | 44 +++++++++++-----------
 .../isis/viewer/wicket/ui/pages/PageAbstract.java  |  5 +--
 2 files changed, 25 insertions(+), 24 deletions(-)

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 324c940..ebf2835 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
@@ -1350,7 +1350,7 @@ public class IsisConfiguration {
              */
             private boolean ajaxDebugMode = false;
 
-            @javax.validation.constraints.Pattern(regexp="^[/].*[/]$")
+            @javax.validation.constraints.Pattern(regexp="^[/].*[/]$") @NotNull @NotEmpty
             private String basePath = "/wicket/";
 
             private boolean clearOriginalDestination = false;
@@ -1365,6 +1365,7 @@ public class IsisConfiguration {
              * component (which uses <a href="http://momentjs.com/docs/#/parsing/string-format/">Moment.js formats</a>, rather
              * than those of regular Java code).
              */
+            @NotNull @NotEmpty
             private String datePattern = "dd-MM-yyyy";
 
             /**
@@ -1377,13 +1378,14 @@ public class IsisConfiguration {
              * component (which uses <a href="http://momentjs.com/docs/#/parsing/string-format/">Moment.js formats</a>, rather
              * than those of regular Java code).
              */
+            @NotNull @NotEmpty
             private String dateTimePattern = "dd-MM-yyyy HH:mm";
 
             private DialogMode dialogMode = DialogMode.SIDEBAR;
 
             private DialogMode dialogModeForMenu = DialogMode.MODAL;
 
-            private String liveReloadUrl;
+            private Optional<String> liveReloadUrl;
 
             private int maxTitleLengthInTables = 12;
 
@@ -1471,6 +1473,7 @@ public class IsisConfiguration {
             /**
              * The pattern used for rendering and parsing timestamps.
              */
+            @NotNull @NotEmpty
             private String timestampPattern = "yyyy-MM-dd HH:mm:ss.SSS";
 
             /**
@@ -1501,16 +1504,18 @@ public class IsisConfiguration {
             public static class Application {
                 
                 /**
-                 * Label used on the about page. If not specified, then {@link Application#name} 
-                 * is used instead.
+                 * Label used on the about page.
                  */
                 private String about;
                 
                 /**
                  * Either the location of the image file (relative to the class-path resource root), 
                  * or an absolute URL.
+                 *
+                 * <p>
                  * This is rendered on the header panel. An image with a size of 160x40 works well.
                  * If not specified, the application.name is used instead.
+                 * </p>
                  */
                 private String brandLogoHeader;
                 
@@ -1538,16 +1543,20 @@ public class IsisConfiguration {
                  * URL of file to read any custom Javascript, relative to the class-path resource root.
                  */
                 private String js;
-                
-                // since 2.0
-                private String menubarsLayoutXml = "menubars.layout.xml"; 
-                
+
+                /**
+                 *
+                 */
+                @NotNull @NotEmpty
+                private String menubarsLayoutXml = "menubars.layout.xml";
+
                 /**
                  * Identifies the application on the sign-in page
-                 * (unless a {@link Application#brandLogoSignin} image is configured) and 
-                 * on top-left in the header 
+                 * (unless a {@link Application#brandLogoSignin} image is configured) and
+                 * on top-left in the header
                  * (unless a {@link Application#brandLogoHeader} image is configured).
                  */
+                @NotNull @NotEmpty
                 private String name = "Apache Isis ™";
                 
                 /**
@@ -1556,7 +1565,6 @@ public class IsisConfiguration {
                  * about page.
                  */
                 private String version;
-                
             }
             
             private final BookmarkedPages bookmarkedPages = new BookmarkedPages();
@@ -1606,11 +1614,13 @@ public class IsisConfiguration {
                 /**
                  * As per http://eonasdan.github.io/bootstrap-datetimepicker/Options/#maxdate, in ISO format (per https://github.com/moment/moment/issues/1407).
                  */
+                @NotEmpty @NotNull
                 private String minDate = "1900-01-01T00:00:00.000Z";
 
                 /**
                  * As per http://eonasdan.github.io/bootstrap-datetimepicker/Options/#maxdate, in ISO format (per https://github.com/moment/moment/issues/1407).
                  */
+                @NotEmpty @NotNull
                 private String maxDate = "2100-01-01T00:00:00.000Z";
             }
 
@@ -1652,8 +1662,10 @@ public class IsisConfiguration {
                  *     Expected to be in the list of {@link #getEnabled()} themes.
                  * </p>
                  */
+                @NotEmpty @NotNull
                 private String initial = "Flatly";
 
+                @NotEmpty @NotNull
                 private String provider = "org.apache.isis.viewer.wicket.ui.components.widgets.themepicker.IsisWicketThemeSupportDefault";
 
                 /**
@@ -1682,9 +1694,6 @@ public class IsisConfiguration {
                 private boolean enabled = true;
                 private int maxParentChainLength = 64;
             }
-
-            
-            
         }
     }
 
@@ -1888,13 +1897,6 @@ public class IsisConfiguration {
 
     }
 
-    //TODO no meta data yet ... https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-configuration-metadata.html#configuration-metadata-property-attributes
-    private final Value value = new Value();
-    @Data
-    public static class Value {
-
-
-    }
 
     private final Extensions extensions = new Extensions();
     @Data
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index 9f9b7fe..5347665 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -276,10 +276,9 @@ public abstract class PageAbstract extends WebPageBase implements ActionPromptPr
             response.render(JavaScriptReferenceHeaderItem.forUrl(applicationJs));
         }
 
-        String liveReloadUrl = getCommonContext().getConfiguration().getViewer().getWicket().getLiveReloadUrl();
-        if(liveReloadUrl != null) {
+        getCommonContext().getConfiguration().getViewer().getWicket().getLiveReloadUrl().ifPresent(liveReloadUrl -> {
             response.render(JavaScriptReferenceHeaderItem.forUrl(liveReloadUrl));
-        }
+        });
         if(isModernBrowser()) {
             addBootLint(response);
         }


[isis] 06/06: ISIS-2264: sync adoc

Posted by da...@apache.org.
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 eed8e9443231a4bcf91e5e9e4995408fe63098e4
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 08:23:04 2020 +0100

    ISIS-2264: sync adoc
---
 .../config/examples/generated/isis.applib.adoc     | 65 ++++++++++++++++------
 .../isis.persistence.jdo-datanucleus.impl.adoc     | 30 +++++-----
 .../examples/generated/isis.security.shiro.adoc    |  3 +-
 .../examples/generated/isis.viewer.wicket.adoc     |  7 ++-
 4 files changed, 68 insertions(+), 37 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 37582b5..221706f 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
@@ -52,21 +52,25 @@ domain-object-layout. +
 css-class-ui-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.ui.CssClassUiEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally {@link org.apache.isis.applib.events.ui.CssClassUiEvent#setCssClass(String)} change) the CSS classes that are used.  +
+     The algorithm for determining whether 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.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.ui.CssClassUiEvent.Noop CssClassUiEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some subtype of         {@l [...]
 
 | isis.applib.annotation. +
 domain-object-layout. +
 icon-ui-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.ui.IconUiEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally {@link org.apache.isis.applib.events.ui.IconUiEvent#setIconName(String)} change) the icon that is used.  +
+     The algorithm for determining whether 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.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.ui.IconUiEvent.Noop IconUiEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some subtype of         {@link org.apache.i [...]
 
 | isis.applib.annotation. +
 domain-object-layout. +
 layout-ui-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.ui.LayoutUiEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally {@link 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</code>     use used (where `zzz</code> is the name of the layout).   +
+     The algorithm for determining whether 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.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.ui.LayoutUiEvent.Noop LayoutUiEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some subtype of         {@link org. [...]
 
 | isis.applib.annotation. +
 domain-object-layout.paged
@@ -78,71 +82,91 @@ domain-object-layout. +
 title-ui-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.ui.TitleUiEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally {@link org.apache.isis.applib.events.ui.TitleUiEvent#setTitle(String)} change) the title that is used.  +
+     The algorithm for determining whether 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.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.ui.TitleUiEvent.Noop TitleUiEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some subtype of         {@link org.apac [...]
 
 | isis.applib.annotation. +
 domain-object.auditing
 | 
-| 
+|  The default for whether _domain entities</i> should be audited or not (meaning that any changes are sent through to the {@link org.apache.isis.applib.services.audit.AuditerService}.  +
+ This setting can be overridden on a case-by-case basis using {@link DomainObject#getAuditing() DomainObject#getAuditing()}   +
+     Note: this applies only to domain entities, not view models. 
 
 | isis.applib.annotation. +
 domain-object. +
 created-lifecycle-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a domain object has been created using {@link org.apache.isis.applib.services.factory.FactoryService}..  +
+     The algorithm for determining whether 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.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent.Noop ObjectCreatedEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some subtype o [...]
 
 | isis.applib.annotation. +
 domain-object.editing
 | 
-| 
+|  The default for whether the properties of domain objects can be edited, or whether instead they can be modified only using actions (or programmatically as a side-effect of actions on other objects).  +
+ This setting can be overridden on a case-by-case basis using {@link DomainObject#getEditing()  DomainObject#getEditing()} 
 
 | isis.applib.annotation. +
 domain-object. +
 loaded-lifecycle-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a domain _entity</i> has been loaded from the persistence store.  +
+     The algorithm for determining whether an event is sent depends on the value of the     {@link org.apache.isis.applib.annotation.DomainObject#loadedLifecycleEvent() @DomainObject(loadedLifecycleEvent=...)} for the     domain object in question.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent.Noop ObjectLoadedEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some subtype of    [...]
+     Note: this applies only to domain entities, not to view models. 
 
 | isis.applib.annotation. +
 domain-object. +
 persisted-lifecycle-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a domain _entity</i> has been persisted (for the first time) to the persistence store.  +
+     The algorithm for determining whether an event is sent depends on the value of the     {@link org.apache.isis.applib.annotation.DomainObject#persistedLifecycleEvent() @DomainObject(persistedLifecycleEvent=...)} for the     domain object in question.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent.Noop ObjectPersistedEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some s [...]
+     Note: this applies only to domain entities, not to view models. 
 
 | isis.applib.annotation. +
 domain-object. +
 persisting-lifecycle-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a domain _entity</i> is about to be persisting (for the first time) to the persistence store.  +
+     The algorithm for determining whether an event is sent depends on the value of the     {@link org.apache.isis.applib.annotation.DomainObject#persistingLifecycleEvent() @DomainObject(persistingLifecycleEvent=...)} for the     domain object in question.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent.Noop ObjectPersistingEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to so [...]
+     Note: this applies only to domain entities, not to view models. 
 
 | isis.applib.annotation. +
 domain-object.publishing
 | 
-| 
+|  The default for whether the properties of domain objects can be edited, or whether instead changed objects should be sent through to the {@link 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 {@link PublishedObjects} collecting details of     all changed domain objects.   +
+  This setting can be overridden on a case-by-case basis using {@link DomainObject#getPublishing() DomainObject#getPublishing()}. 
 
 | isis.applib.annotation. +
 domain-object. +
 removing-lifecycle-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a persistent domain _entity</i> is about to be removed (that is, deleted) from the persistence store.  +
+     The algorithm for determining whether an event is sent depends on the value of the     {@link org.apache.isis.applib.annotation.DomainObject#removingLifecycleEvent() @DomainObject(removingLifecycleEvent=...)} for the     domain object in question.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent.Noop ObjectRemovingEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some subty [...]
+     Note: this applies only to domain entities, not to view models.   +
+     Note: There is no corresponding `removed</code> callback, because (for the JDO persistence store at least)     it is not possible to interact with a domain entity once it has been deleted. 
 
 | isis.applib.annotation. +
 domain-object. +
 updated-lifecycle-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a persistent domain _entity</i> has been updated in the persistence store.  +
+     The algorithm for determining whether an event is sent depends on the value of the     {@link org.apache.isis.applib.annotation.DomainObject#updatedLifecycleEvent() @DomainObject(updatedLifecycleEvent=...)} for the     domain object in question.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent.Noop ObjectUpdatedEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some subtype o [...]
+     Note: this applies only to domain entities, not to view models. 
 
 | isis.applib.annotation. +
 domain-object. +
 updating-lifecycle-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a persistent domain _entity</i> is about to be updated in the persistence store.  +
+     The algorithm for determining whether an event is sent depends on the value of the     {@link org.apache.isis.applib.annotation.DomainObject#updatingLifecycleEvent() @DomainObject(updatingLifecycleEvent=...)} for the     domain object in question.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent.Noop ObjectUpdatingEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some subty [...]
+     Note: this applies only to domain entities, not to view models. 
 
 | isis.applib.annotation. +
 parameter-layout. +
@@ -177,28 +201,33 @@ view-model-layout. +
 css-class-ui-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.ui.CssClassUiEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a view model (annotated with {@link org.apache.isis.applib.annotation.ViewModel @ViewModel}) is about to be rendered in the UI - thereby allowing subscribers to optionally {@link org.apache.isis.applib.events.ui.CssClassUiEvent#setCssClass(String)} change) the CSS classes that are used.  +
+     The algorithm for determining whether 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.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.ui.CssClassUiEvent.Noop CssClassUiEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some subtype of         {@link or [...]
 
 | isis.applib.annotation. +
 view-model-layout. +
 icon-ui-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.ui.IconUiEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a view model (annotated with {@link org.apache.isis.applib.annotation.ViewModel @ViewModel}) is about to be rendered in the UI - thereby allowing subscribers to optionally {@link org.apache.isis.applib.events.ui.IconUiEvent#setIconName(String)} change) the icon that is used.  +
+     The algorithm for determining whether 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.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.ui.IconUiEvent.Noop IconUiEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some subtype of         {@link org.apache.isis.ap [...]
 
 | isis.applib.annotation. +
 view-model-layout. +
 layout-ui-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.ui.LayoutUiEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a view model (annotated with {@link org.apache.isis.applib.annotation.ViewModel @ViewModel}) is about to be rendered in the UI - thereby allowing subscribers to optionally {@link 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</code>     use used (where `zzz</code> is the name of the layout).   +
+     The algorithm for determining whether 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.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.ui.LayoutUiEvent.Noop LayoutUiEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some subtype of         {@link org.apache [...]
 
 | isis.applib.annotation. +
 view-model-layout. +
 title-ui-event. +
 post-for-default
 |  true
-| 
+|  Influences whether an {@link org.apache.isis.applib.events.ui.TitleUiEvent} should be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService}) whenever a view model (annotated with {@link org.apache.isis.applib.annotation.ViewModel @ViewModel}) is about to be rendered in the UI - thereby allowing subscribers to optionally {@link org.apache.isis.applib.events.ui.TitleUiEvent#setTitle(String)} change) the title that is used.  +
+     The algorithm for determining whether 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.  <ul>     <li>         If set to some subtype of         {@link org.apache.isis.applib.events.ui.TitleUiEvent.Noop TitleUiEvent.Noop},         then _no</i> event is sent.     </li>     <li>         If set to some subtype of         {@link org.apache.isi [...]
 
 | isis.applib.annotation. +
 view-model.validation. +
diff --git a/core/config/src/main/adoc/modules/config/examples/generated/isis.persistence.jdo-datanucleus.impl.adoc b/core/config/src/main/adoc/modules/config/examples/generated/isis.persistence.jdo-datanucleus.impl.adoc
index e28fe3a..6a29259 100644
--- a/core/config/src/main/adoc/modules/config/examples/generated/isis.persistence.jdo-datanucleus.impl.adoc
+++ b/core/config/src/main/adoc/modules/config/examples/generated/isis.persistence.jdo-datanucleus.impl.adoc
@@ -47,7 +47,7 @@ connection-factory-name
 | 
 |  The JNDI name for a connection factory for transactional connections. 	 +
  	    For RBDMS, it must be a JNDI name that points to a javax.sql.DataSource object. 	  +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
+     See also `additional-spring-configuration-metadata.json</tt> (PascalCasing instead of kebab-casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
 
 | isis.persistence. +
 jdo-datanucleus.impl. +
@@ -56,7 +56,7 @@ connection-factory2-name
 | 
 |  The JNDI name for a connection factory for non-transactional connections. 	 +
  	    For RBDMS, it must be a JNDI name that points to a javax.sql.DataSource object. 	  +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
+     See also `additional-spring-configuration-metadata.json</tt> (PascalCasing instead of kebab-casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
 
 | isis.persistence. +
 jdo-datanucleus.impl. +
@@ -64,7 +64,7 @@ datanucleus. +
 connection-password-decrypter
 | 
 |  Name of a class that implements `org.datanucleus.store.connection.DecryptionProvider</tt> and should only be specified if the password is encrypted in the persistence properties.  +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
+     See also `additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
 
 | isis.persistence. +
 jdo-datanucleus.impl. +
@@ -79,8 +79,8 @@ class-name
 |  org.apache.isis.persistence. +
 jdo.datanucleus5.datanucleus. +
 JDOStateManagerForIsis
-|  New feature in DN 3.2.3; enables dependency injection into entities  +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing). 
+|  Enables dependency injection into entities  +
+     See also `additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing). 
 
 | isis.persistence. +
 jdo-datanucleus.impl. +
@@ -96,7 +96,7 @@ persistence-unit-load-classes
 |  true
 |  Used when we have specified the persistence-unit name for a PMF/EMF and where we want the 	datastore "tables" for all classes of that persistence-unit loading up into the StoreManager.  +
      Defaults to true, which is the opposite of DataNucleus' own default.     (The reason that DN defaults to false is because some databases are slow so such an     operation would slow down the startup process).   +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
+     See also `additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
 
 | isis.persistence. +
 jdo-datanucleus.impl. +
@@ -113,7 +113,7 @@ auto-create-all
 | 
 |  Whether DN should automatically create the database schema on bootstrapping.  +
      This should be set to `true</tt> when running against an in-memory database, but     set to `false</tt> when running against a persistent database (use something like     flyway instead to manage schema evolution).   +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing).  @implNote - this config property isn't used by the core framework, but is used by one the flyway extension.
+     See also `additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).  @implNote - this config property isn't used by the core framework, but is used by one the flyway extension.
 
 | isis.persistence. +
 jdo-datanucleus.impl. +
@@ -121,7 +121,7 @@ datanucleus.schema. +
 auto-create-database
 | 
 |  Previously we defaulted this property to "true", but that could cause the target database to be modified  +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
+     See also `additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
 
 | isis.persistence. +
 jdo-datanucleus.impl. +
@@ -143,7 +143,7 @@ datanucleus.schema. +
 validate-all
 |  true
 |   +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
+     See also `additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
 
 | isis.persistence. +
 jdo-datanucleus.impl. +
@@ -172,7 +172,7 @@ datanucleus.transaction-type
 | 
 |  Type of transaction to use.  +
  If running under JavaSE the default is RESOURCE_LOCAL, and if running under JavaEE the default is JTA.   +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
+     See also `additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).  @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
 
 | isis.persistence. +
 jdo-datanucleus.impl.javax. +
@@ -213,7 +213,7 @@ jdo.option. +
 connection-driver-name
 | 
 |  JDBC driver used by DataNucleus Object store to connect.  +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing).  @implNote - this config property isn't used by the framework, but provided as a convenience for IDE autocomplete (and is mandatory if using JDO Datanucleus).
+     See also `additional-spring-configuration-metadata.json</tt> (PascalCasing instead of kebab-casing).  @implNote - this config property isn't used by the framework, but provided as a convenience for IDE autocomplete (and is mandatory if using JDO Datanucleus).
 
 | isis.persistence. +
 jdo-datanucleus.impl.javax. +
@@ -221,14 +221,14 @@ jdo.option. +
 connection-password
 | 
 |  Password for the user account used by DataNucleus Object store to connect.  +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing).  @implNote - this config property isn't used by the framework, but provided as a convenience for IDE autocomplete.  It is not necessarily mandatory, some databases accept an empty password.
+     See also `additional-spring-configuration-metadata.json</tt> (PascalCasing instead of kebab-casing).  @implNote - this config property isn't used by the framework, but provided as a convenience for IDE autocomplete.  It is not necessarily mandatory, some databases accept an empty password.
 
 | isis.persistence. +
 jdo-datanucleus.impl.javax. +
 jdo.option.connection-url
 | 
 |  URL used by DataNucleus Object store to connect.  +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing).  @implNote - some extensions (H2Console, MsqlDbManager) peek at this URL to determine if they should be enabled.  Note that it is also mandatory if using JDO Datanucleus.
+     See also `additional-spring-configuration-metadata.json</tt> (PascalCasing instead of kebab-casing).  @implNote - some extensions (H2Console, MsqlDbManager) peek at this URL to determine if they should be enabled.  Note that it is also mandatory if using JDO Datanucleus.
 
 | isis.persistence. +
 jdo-datanucleus.impl.javax. +
@@ -236,7 +236,7 @@ jdo.option. +
 connection-user-name
 | 
 |  User account used by DataNucleus Object store to connect.  +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing).  @implNote - this config property isn't used by the framework, but provided as a convenience for IDE autocomplete (and is mandatory if using JDO Datanucleus).
+     See also `additional-spring-configuration-metadata.json</tt> (PascalCasing instead of kebab-casing).  @implNote - this config property isn't used by the framework, but provided as a convenience for IDE autocomplete (and is mandatory if using JDO Datanucleus).
 
 | isis.persistence. +
 jdo-datanucleus.impl.javax. +
@@ -246,5 +246,5 @@ class
 |  org.datanucleus.api.jdo. +
 JDOPersistenceManagerFactory
 |   +
-     See also `additional-spring-configuration-metadata.json</tt> (change casing).  @implNote - changing this property from its default is used to enable the flyway extension (in combination with {@link Datanucleus.Schema#isAutoCreateAll()}
+     See also `additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).  @implNote - changing this property from its default is used to enable the flyway extension (in combination with {@link Datanucleus.Schema#isAutoCreateAll()}
 
diff --git a/core/config/src/main/adoc/modules/config/examples/generated/isis.security.shiro.adoc b/core/config/src/main/adoc/modules/config/examples/generated/isis.security.shiro.adoc
index 9067e26..99618ff 100644
--- a/core/config/src/main/adoc/modules/config/examples/generated/isis.security.shiro.adoc
+++ b/core/config/src/main/adoc/modules/config/examples/generated/isis.security.shiro.adoc
@@ -2,5 +2,6 @@
 auto-logout-if-already- +
 authenticated
 | 
-| 
+|  If the Shiro subject is found to be still authenticated, then will be logged out anyway and then re-authenticated.  +
+ Applies only to the Restful Objects viewer. 
 
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 8c0b5a9..049224c 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
@@ -12,12 +12,13 @@ IsisWicketApplication
 | isis.viewer.wicket. +
 application.about
 | 
-|  Label used on the about page. If not specified, then {@link Application#name}  is used instead.
+|  Label used on the about page.
 
 | isis.viewer.wicket. +
 application.brand-logo-header
 | 
-|  Either the location of the image file (relative to the class-path resource root),  or an absolute URL. This is rendered on the header panel. An image with a size of 160x40 works well. If not specified, the application.name is used instead.
+|  Either the location of the image file (relative to the class-path resource root),  or an absolute URL.  +
+ This is rendered on the header panel. An image with a size of 160x40 works well. If not specified, the application.name is used instead. 
 
 | isis.viewer.wicket. +
 application.brand-logo-signin
@@ -54,7 +55,7 @@ menubars-layout-xml
 | isis.viewer.wicket. +
 application.name
 |  Apache Isis ™
-|  Identifies the application on the sign-in page (unless a {@link Application#brandLogoSignin} image is configured) and  on top-left in the header  (unless a {@link Application#brandLogoHeader} image is configured).
+|  Identifies the application on the sign-in page (unless a {@link Application#brandLogoSignin} image is configured) and on top-left in the header (unless a {@link Application#brandLogoHeader} image is configured).
 
 | isis.viewer.wicket. +
 application.version


[isis] 02/06: ISIS-2264: adds some constraints for email config props.

Posted by da...@apache.org.
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 3b147a0c96440a65b171fa38762282fbcd6d0f49
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 08:00:05 2020 +0100

    ISIS-2264: adds some constraints for email config props.
---
 .../src/main/java/org/apache/isis/core/config/IsisConfiguration.java | 5 +++++
 1 file changed, 5 insertions(+)

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 e6d6f50..a15a3bc 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
@@ -30,6 +30,7 @@ import java.util.regex.Pattern;
 
 import javax.inject.Inject;
 import javax.inject.Named;
+import javax.validation.constraints.Email;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -970,8 +971,11 @@ public class IsisConfiguration {
                 private final Override override = new Override();
                 @Data
                 public static class Override {
+                    @javax.validation.constraints.Email
                     private String to;
+                    @javax.validation.constraints.Email
                     private String cc;
+                    @javax.validation.constraints.Email
                     private String bcc;
                 }
 
@@ -981,6 +985,7 @@ public class IsisConfiguration {
                     private String hostname;
                     private String username;
                     private String password;
+                    @javax.validation.constraints.Email
                     private String address;
                 }
 


[isis] 04/06: ISIS-2264: improves javadoc for some isis config props, is all.

Posted by da...@apache.org.
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 cd28a7f5c72fb6bd965338b15c8893b405ef3a7f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 08:11:43 2020 +0100

    ISIS-2264: improves javadoc for some isis config props, is all.
---
 .../apache/isis/core/config/IsisConfiguration.java | 31 +++++++++++-----------
 1 file changed, 16 insertions(+), 15 deletions(-)

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 2c59e0f..324c940 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
@@ -1069,6 +1069,7 @@ public class IsisConfiguration {
                 @Data
                 public static class Datanucleus {
 
+
                     /**
                      * 	The JNDI name for a connection factory for transactional connections.
                      *
@@ -1077,7 +1078,7 @@ public class IsisConfiguration {
                      * 	</p>
                      *
                      * <p>
-                     *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                     *     See also <tt>additional-spring-configuration-metadata.json</tt> (PascalCasing instead of kebab-casing).
                      * </p>
                      *
                      * @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
@@ -1092,7 +1093,7 @@ public class IsisConfiguration {
                      * 	</p>
                      *
                      * <p>
-                     *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                     *     See also <tt>additional-spring-configuration-metadata.json</tt> (PascalCasing instead of kebab-casing).
                      * </p>
                      *
                      * @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
@@ -1105,7 +1106,7 @@ public class IsisConfiguration {
                      * and should only be specified if the password is encrypted in the persistence properties.
                      *
                      * <p>
-                     *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                     *     See also <tt>additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).
                      * </p>
                      *
                      * @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
@@ -1124,7 +1125,7 @@ public class IsisConfiguration {
                      * </p>
                      *
                      * <p>
-                     *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                     *     See also <tt>additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).
                      * </p>
                      *
                      * @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
@@ -1144,7 +1145,7 @@ public class IsisConfiguration {
                      * </p>
                      *
                      * <p>
-                     *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                     *     See also <tt>additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).
                      * </p>
                      *
                      * @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
@@ -1179,10 +1180,10 @@ public class IsisConfiguration {
                     @Data
                     public static class ObjectProvider {
                         /**
-                         * New feature in DN 3.2.3; enables dependency injection into entities
+                         * Enables dependency injection into entities
                          *
                          * <p>
-                         *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                         *     See also <tt>additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).
                          * </p>
                          */
                         @NotNull @NotEmpty
@@ -1201,7 +1202,7 @@ public class IsisConfiguration {
                          * </p>
                          *
                          * <p>
-                         *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                         *     See also <tt>additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).
                          * </p>
                          *
                          *
@@ -1214,7 +1215,7 @@ public class IsisConfiguration {
                          * to be modified
                          *
                          * <p>
-                         *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                         *     See also <tt>additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).
                          * </p>
                          *
                          * @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
@@ -1223,7 +1224,7 @@ public class IsisConfiguration {
 
                         /**
                          * <p>
-                         *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                         *     See also <tt>additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).
                          * </p>
                          *
                          * @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
@@ -1240,7 +1241,7 @@ public class IsisConfiguration {
 
                         /**
                          * <p>
-                         *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                         *     See also <tt>additional-spring-configuration-metadata.json</tt> (camelCasing instead of kebab-casing).
                          * </p>
                          *
                          * @implNote - changing this property from its default is used to enable the flyway extension (in combination with {@link Datanucleus.Schema#isAutoCreateAll()}
@@ -1255,7 +1256,7 @@ public class IsisConfiguration {
                              * JDBC driver used by DataNucleus Object store to connect.
                              *
                              * <p>
-                             *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                             *     See also <tt>additional-spring-configuration-metadata.json</tt> (PascalCasing instead of kebab-casing).
                              * </p>
                              *
                              * @implNote - this config property isn't used by the framework, but provided as a convenience for IDE autocomplete (and is mandatory if using JDO Datanucleus).
@@ -1265,7 +1266,7 @@ public class IsisConfiguration {
                              * URL used by DataNucleus Object store to connect.
                              *
                              * <p>
-                             *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                             *     See also <tt>additional-spring-configuration-metadata.json</tt> (PascalCasing instead of kebab-casing).
                              * </p>
                              *
                              * @implNote - some extensions (H2Console, MsqlDbManager) peek at this URL to determine if they should be enabled.  Note that it is also mandatory if using JDO Datanucleus.
@@ -1275,7 +1276,7 @@ public class IsisConfiguration {
                              * User account used by DataNucleus Object store to connect.
                              *
                              * <p>
-                             *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                             *     See also <tt>additional-spring-configuration-metadata.json</tt> (PascalCasing instead of kebab-casing).
                              * </p>
                              *
                              * @implNote - this config property isn't used by the framework, but provided as a convenience for IDE autocomplete (and is mandatory if using JDO Datanucleus).
@@ -1285,7 +1286,7 @@ public class IsisConfiguration {
                              * Password for the user account used by DataNucleus Object store to connect.
                              *
                              * <p>
-                             *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
+                             *     See also <tt>additional-spring-configuration-metadata.json</tt> (PascalCasing instead of kebab-casing).
                              * </p>
                              *
                              * @implNote - this config property isn't used by the framework, but provided as a convenience for IDE autocomplete.  It is not necessarily mandatory, some databases accept an empty password.


[isis] 03/06: ISIS-2264: removes some redundant code in DN bootstrapping

Posted by da...@apache.org.
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 6139311636610665f7bf1f8c7521f44e766b800b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 08:11:28 2020 +0100

    ISIS-2264: removes some redundant code in DN bootstrapping
    
    these config props already have default values in IsisConfiguration, so no need to force them in programmatically also.  Instead we just use javax validation to ensure they are not overridden to an empty or null value etc.
---
 .../org/apache/isis/core/config/IsisConfiguration.java    |  5 +++++
 .../persistence/PersistenceSessionFactory5.java           | 15 ---------------
 2 files changed, 5 insertions(+), 15 deletions(-)

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 a15a3bc..2c59e0f 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
@@ -31,6 +31,8 @@ import java.util.regex.Pattern;
 import javax.inject.Inject;
 import javax.inject.Named;
 import javax.validation.constraints.Email;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -1169,6 +1171,7 @@ public class IsisConfiguration {
                              *
                              * @implNote - this config property isn't used by the framework, but is provided as a convenience for IDE autocomplete.
                              */
+                            @NotNull @NotEmpty
                             private String type = "none";
                         }
                     }
@@ -1182,6 +1185,7 @@ public class IsisConfiguration {
                          *     See also <tt>additional-spring-configuration-metadata.json</tt> (change casing).
                          * </p>
                          */
+                        @NotNull @NotEmpty
                         private String className = "org.apache.isis.persistence.jdo.datanucleus5.datanucleus.JDOStateManagerForIsis";
                     }
                     private final Schema schema = new Schema();
@@ -1241,6 +1245,7 @@ public class IsisConfiguration {
                          *
                          * @implNote - changing this property from its default is used to enable the flyway extension (in combination with {@link Datanucleus.Schema#isAutoCreateAll()}
                          */
+                        @NotNull @NotEmpty
                         private String persistenceManagerFactoryClass = "org.datanucleus.api.jdo.JDOPersistenceManagerFactory";
 
                         private final Option option = new Option();
diff --git a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/PersistenceSessionFactory5.java b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/PersistenceSessionFactory5.java
index 017ea91..f435b12 100644
--- a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/PersistenceSessionFactory5.java
+++ b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/PersistenceSessionFactory5.java
@@ -135,19 +135,6 @@ implements PersistenceSessionFactory, FixturesInstalledStateHolder {
         props.putAll(dnSettings.getAsMap());
         DataNucleusContextUtil.putMetaModelContext(props, metaModelContext);
 
-        // new feature in DN 3.2.3; enables dependency injection into entities
-        putIfNotPresent(props, PropertyNames.PROPERTY_OBJECT_PROVIDER_CLASS_NAME, JDOStateManagerForIsis.class.getName());
-        
-        putIfNotPresent(props, "javax.jdo.PersistenceManagerFactoryClass", JDOPersistenceManagerFactory.class.getName());
-
-        // previously we defaulted this property to "true", but that could cause the target database to be modified
-        putIfNotPresent(props, PropertyNames.PROPERTY_SCHEMA_AUTOCREATE_DATABASE, Boolean.FALSE.toString());
-
-        putIfNotPresent(props, PropertyNames.PROPERTY_SCHEMA_VALIDATE_ALL, Boolean.TRUE.toString());
-        putIfNotPresent(props, PropertyNames.PROPERTY_CACHE_L2_TYPE, "none");
-
-        putIfNotPresent(props, PropertyNames.PROPERTY_PERSISTENCE_UNIT_LOAD_CLASSES, Boolean.TRUE.toString());
-
         String connectionFactoryName = (String) props.get(PropertyNames.PROPERTY_CONNECTION_FACTORY_NAME);
         if(connectionFactoryName != null) {
             String connectionFactory2Name = (String) props.get(PropertyNames.PROPERTY_CONNECTION_FACTORY2_NAME);
@@ -180,8 +167,6 @@ implements PersistenceSessionFactory, FixturesInstalledStateHolder {
                 log.info("using JDBC connection '{}'", 
                         props.get("javax.jdo.option.ConnectionURL"));
             }
-
-
         }
         
         return props;


[isis] 01/06: ISIS-2264: adds some javadoc for some config properties

Posted by da...@apache.org.
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 7230320ed322d52c3435026a8df612487609521b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 07:31:47 2020 +0100

    ISIS-2264: adds some javadoc for some config properties
---
 .../apache/isis/core/config/IsisConfiguration.java | 514 +++++++++++++++++++++
 .../pages/about/configuring-isis-to-use-shiro.adoc |   2 +-
 2 files changed, 515 insertions(+), 1 deletion(-)

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 a9482af..e6d6f50 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
@@ -36,9 +36,12 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.core.env.ConfigurableEnvironment;
 import org.springframework.validation.annotation.Validated;
 
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.DomainObjectLayout;
 import org.apache.isis.applib.annotation.LabelPosition;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.applib.services.publish.PublishedObjects;
 import org.apache.isis.core.config.metamodel.facets.AuditObjectsConfiguration;
 import org.apache.isis.core.config.metamodel.facets.CommandActionsConfiguration;
 import org.apache.isis.core.config.metamodel.facets.CommandPropertiesConfiguration;
@@ -78,6 +81,14 @@ public class IsisConfiguration {
         private final Shiro shiro = new Shiro();
         @Data
         public static class Shiro {
+            /**
+             * If the Shiro subject is found to be still authenticated, then will be logged out anyway and then
+             * re-authenticated.
+             *
+             * <p>
+             * Applies only to the Restful Objects viewer.
+             * </p>
+             */
             private boolean autoLogoutIfAlreadyAuthenticated = false;
         }
     }
@@ -99,51 +110,305 @@ public class IsisConfiguration {
             @Data
             public static class DomainObject {
 
+                /**
+                 * The default for whether <i>domain entities</i> should be audited or not (meaning that any changes are
+                 * sent through to the {@link org.apache.isis.applib.services.audit.AuditerService}.
+                 *
+                 * <p>
+                 * This setting can be overridden on a case-by-case basis using {@link DomainObject#getAuditing() DomainObject#getAuditing()}
+                 * </p>
+                 *
+                 * <p>
+                 *     Note: this applies only to domain entities, not view models.
+                 * </p>
+                 */
                 private AuditObjectsConfiguration auditing = AuditObjectsConfiguration.NONE;
 
+                /**
+                 * The default for whether the properties of domain objects can be edited, or whether instead they
+                 * can be modified only using actions (or programmatically as a side-effect of actions on other objects).
+                 *
+                 * <p>
+                 * This setting can be overridden on a case-by-case basis using {@link DomainObject#getEditing()  DomainObject#getEditing()}
+                 * </p>
+                 */
                 private EditingObjectsConfiguration editing = EditingObjectsConfiguration.TRUE;
 
+                /**
+                 * The default for whether the properties of domain objects can be edited, or whether instead changed
+                 * objects should be sent through to the {@link org.apache.isis.applib.services.publish.PublisherService}
+                 * for publishing.
+                 *
+                 * <p>
+                 *     The service's {@link org.apache.isis.applib.services.publish.PublisherService#publish(PublishedObjects) publish}
+                 *     method is called only once per transaction, with {@link PublishedObjects} collecting details of
+                 *     all changed domain objects.
+                 * </p>
+                 *
+                 * <p>
+                 *  This setting can be overridden on a case-by-case basis using {@link DomainObject#getPublishing() DomainObject#getPublishing()}.
+                 * </p>
+                 */
                 private PublishObjectsConfiguration publishing = PublishObjectsConfiguration.NONE;
 
                 private final CreatedLifecycleEvent createdLifecycleEvent = new CreatedLifecycleEvent();
                 @Data
                 public static class CreatedLifecycleEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a domain object has been created using {@link org.apache.isis.applib.services.factory.FactoryService}..
+                     *
+                     * <p>
+                     *     The algorithm for determining whether 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.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent.Noop ObjectCreatedEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent.Default ObjectCreatedEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     */
                     private boolean postForDefault = true;
                 }
 
                 private final LoadedLifecycleEvent loadedLifecycleEvent = new LoadedLifecycleEvent();
                 @Data
                 public static class LoadedLifecycleEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a domain <i>entity</i> has been loaded from the persistence store.
+                     *
+                     * <p>
+                     *     The algorithm for determining whether an event is sent depends on the value of the
+                     *     {@link org.apache.isis.applib.annotation.DomainObject#loadedLifecycleEvent() @DomainObject(loadedLifecycleEvent=...)} for the
+                     *     domain object in question.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent.Noop ObjectLoadedEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent.Default ObjectCreatedEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     *
+                     * <p>
+                     *     Note: this applies only to domain entities, not to view models.
+                     * </p>
+                     */
                     private boolean postForDefault = true;
                 }
 
                 private final PersistingLifecycleEvent persistingLifecycleEvent = new PersistingLifecycleEvent();
                 @Data
                 public static class PersistingLifecycleEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a domain <i>entity</i> is about to be persisting (for the first time) to the persistence store.
+                     *
+                     * <p>
+                     *     The algorithm for determining whether an event is sent depends on the value of the
+                     *     {@link org.apache.isis.applib.annotation.DomainObject#persistingLifecycleEvent() @DomainObject(persistingLifecycleEvent=...)} for the
+                     *     domain object in question.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent.Noop ObjectPersistingEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent.Default ObjectCreatedEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     *
+                     * <p>
+                     *     Note: this applies only to domain entities, not to view models.
+                     * </p>
+                     */
                     private boolean postForDefault = true;
                 }
 
                 private final PersistedLifecycleEvent persistedLifecycleEvent = new PersistedLifecycleEvent();
                 @Data
                 public static class PersistedLifecycleEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a domain <i>entity</i> has been persisted (for the first time) to the persistence store.
+                     *
+                     * <p>
+                     *     The algorithm for determining whether an event is sent depends on the value of the
+                     *     {@link org.apache.isis.applib.annotation.DomainObject#persistedLifecycleEvent() @DomainObject(persistedLifecycleEvent=...)} for the
+                     *     domain object in question.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent.Noop ObjectPersistedEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent.Default ObjectCreatedEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     *
+                     * <p>
+                     *     Note: this applies only to domain entities, not to view models.
+                     * </p>
+                     */
                     private boolean postForDefault = true;
                 }
 
                 private final RemovingLifecycleEvent removingLifecycleEvent = new RemovingLifecycleEvent();
                 @Data
                 public static class RemovingLifecycleEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a persistent domain <i>entity</i> is about to be removed (that is, deleted)
+                     * from the persistence store.
+                     *
+                     * <p>
+                     *     The algorithm for determining whether an event is sent depends on the value of the
+                     *     {@link org.apache.isis.applib.annotation.DomainObject#removingLifecycleEvent() @DomainObject(removingLifecycleEvent=...)} for the
+                     *     domain object in question.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent.Noop ObjectRemovingEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent.Default ObjectCreatedEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     *
+                     * <p>
+                     *     Note: this applies only to domain entities, not to view models.
+                     * </p>
+                     *
+                     * <p>
+                     *     Note: There is no corresponding <code>removed</code> callback, because (for the JDO persistence store at least)
+                     *     it is not possible to interact with a domain entity once it has been deleted.
+                     * </p>
+                     */
                     private boolean postForDefault = true;
                 }
 
                 private final UpdatedLifecycleEvent updatedLifecycleEvent = new UpdatedLifecycleEvent();
                 @Data
                 public static class UpdatedLifecycleEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a persistent domain <i>entity</i> has been updated in the persistence store.
+                     *
+                     * <p>
+                     *     The algorithm for determining whether an event is sent depends on the value of the
+                     *     {@link org.apache.isis.applib.annotation.DomainObject#updatedLifecycleEvent() @DomainObject(updatedLifecycleEvent=...)} for the
+                     *     domain object in question.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent.Noop ObjectUpdatedEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent.Default ObjectCreatedEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     *
+                     * <p>
+                     *     Note: this applies only to domain entities, not to view models.
+                     * </p>
+                     */
                     private boolean postForDefault = true;
                 }
 
                 private final UpdatingLifecycleEvent updatingLifecycleEvent = new UpdatingLifecycleEvent();
                 @Data
                 public static class UpdatingLifecycleEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a persistent domain <i>entity</i> is about to be updated in the persistence store.
+                     *
+                     * <p>
+                     *     The algorithm for determining whether an event is sent depends on the value of the
+                     *     {@link org.apache.isis.applib.annotation.DomainObject#updatingLifecycleEvent() @DomainObject(updatingLifecycleEvent=...)} for the
+                     *     domain object in question.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent.Noop ObjectUpdatingEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent.Default ObjectCreatedEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     *
+                     * <p>
+                     *     Note: this applies only to domain entities, not to view models.
+                     * </p>
+                     */
                     private boolean postForDefault = true;
                 }
 
@@ -158,24 +423,145 @@ public class IsisConfiguration {
                 private final CssClassUiEvent cssClassUiEvent = new CssClassUiEvent();
                 @Data
                 public static class CssClassUiEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.ui.CssClassUiEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to
+                     * optionally {@link org.apache.isis.applib.events.ui.CssClassUiEvent#setCssClass(String)} change)
+                     * the CSS classes that are used.
+                     *
+                     * <p>
+                     *     The algorithm for determining whether 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.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.CssClassUiEvent.Noop CssClassUiEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.CssClassUiEvent.Default CssClassUiEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     */
                     private boolean postForDefault = true;
                 }
 
                 private final IconUiEvent iconUiEvent = new IconUiEvent();
                 @Data
                 public static class IconUiEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.ui.IconUiEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to
+                     * optionally {@link org.apache.isis.applib.events.ui.IconUiEvent#setIconName(String)} change)
+                     * the icon that is used.
+                     *
+                     * <p>
+                     *     The algorithm for determining whether 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.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.IconUiEvent.Noop IconUiEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.IconUiEvent.Default IconUiEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     */
                     private boolean postForDefault = true;
                 }
 
                 private final LayoutUiEvent layoutUiEvent = new LayoutUiEvent();
                 @Data
                 public static class LayoutUiEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.ui.LayoutUiEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to
+                     * optionally {@link org.apache.isis.applib.events.ui.LayoutUiEvent#setLayout(String)} change)
+                     * the layout that is used.
+                     *
+                     * <p>
+                     *     If a different layout value has been set, then a layout in the form <code>Xxx.layout-zzz.xml</code>
+                     *     use used (where <code>zzz</code> is the name of the layout).
+                     * </p>
+                     *
+                     * <p>
+                     *     The algorithm for determining whether 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.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.LayoutUiEvent.Noop LayoutUiEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.LayoutUiEvent.Default LayoutUiEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     */
                     private boolean postForDefault = true;
                 }
 
                 private final TitleUiEvent titleUiEvent = new TitleUiEvent();
                 @Data
                 public static class TitleUiEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.ui.TitleUiEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to
+                     * optionally {@link org.apache.isis.applib.events.ui.TitleUiEvent#setTitle(String)} change)
+                     * the title that is used.
+                     *
+                     * <p>
+                     *     The algorithm for determining whether 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.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.TitleUiEvent.Noop TitleUiEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.TitleUiEvent.Default TitleUiEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     */
                     private boolean postForDefault = true;
                 }
 
@@ -283,24 +669,152 @@ public class IsisConfiguration {
                 private final CssClassUiEvent cssClassUiEvent = new CssClassUiEvent();
                 @Data
                 public static class CssClassUiEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.ui.CssClassUiEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a view model (annotated with
+                     * {@link org.apache.isis.applib.annotation.ViewModel @ViewModel}) is about to be rendered in the
+                     * UI - thereby allowing subscribers to optionally
+                     * {@link org.apache.isis.applib.events.ui.CssClassUiEvent#setCssClass(String)} change) the CSS
+                     * classes that are used.
+                     *
+                     * <p>
+                     *     The algorithm for determining whether 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.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.CssClassUiEvent.Noop CssClassUiEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.CssClassUiEvent.Default CssClassUiEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     */
                     private boolean postForDefault =true;
                 }
 
                 private final IconUiEvent iconUiEvent = new IconUiEvent();
                 @Data
                 public static class IconUiEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.ui.IconUiEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a view model (annotated with
+                     * {@link org.apache.isis.applib.annotation.ViewModel @ViewModel}) is about to be rendered in the
+                     * UI - thereby allowing subscribers to optionally
+                     * {@link org.apache.isis.applib.events.ui.IconUiEvent#setIconName(String)} change) the icon that
+                     * is used.
+                     *
+                     * <p>
+                     *     The algorithm for determining whether 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.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.IconUiEvent.Noop IconUiEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.IconUiEvent.Default IconUiEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     */
                     private boolean postForDefault =true;
                 }
 
                 private final LayoutUiEvent layoutUiEvent = new LayoutUiEvent();
                 @Data
                 public static class LayoutUiEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.ui.LayoutUiEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a view model (annotated with
+                     * {@link org.apache.isis.applib.annotation.ViewModel @ViewModel}) is about to be rendered in the
+                     * UI - thereby allowing subscribers to optionally
+                     * {@link org.apache.isis.applib.events.ui.LayoutUiEvent#setLayout(String)} change) the layout that is used.
+                     *
+                     * <p>
+                     *     If a different layout value has been set, then a layout in the form <code>Xxx.layout-zzz.xml</code>
+                     *     use used (where <code>zzz</code> is the name of the layout).
+                     * </p>
+                     *
+                     * <p>
+                     *     The algorithm for determining whether 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.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.LayoutUiEvent.Noop LayoutUiEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.LayoutUiEvent.Default LayoutUiEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     */
                     private boolean postForDefault =true;
                 }
 
                 private final TitleUiEvent titleUiEvent = new TitleUiEvent();
                 @Data
                 public static class TitleUiEvent {
+                    /**
+                     * Influences whether an {@link org.apache.isis.applib.events.ui.TitleUiEvent} should
+                     * be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
+                     * whenever a view model (annotated with
+                     * {@link org.apache.isis.applib.annotation.ViewModel @ViewModel}) is about to be rendered in the
+                     * UI - thereby allowing subscribers to
+                     * optionally {@link org.apache.isis.applib.events.ui.TitleUiEvent#setTitle(String)} change)
+                     * the title that is used.
+                     *
+                     * <p>
+                     *     The algorithm for determining whether 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.
+                     * </p>
+                     *
+                     * <ul>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.TitleUiEvent.Noop TitleUiEvent.Noop},
+                     *         then <i>no</i> event is sent.
+                     *     </li>
+                     *     <li>
+                     *         If set to some subtype of
+                     *         {@link org.apache.isis.applib.events.ui.TitleUiEvent.Default TitleUiEvent.Default},
+                     *         then an event is sent <i>if and only if</i> this configuration setting is set.
+                     *     </li>
+                     *     <li>
+                     *         If set to any other subtype, then an event <i>is</i> sent.
+                     *     </li>
+                     * </ul>
+                     */
                     private boolean postForDefault =true;
                 }
             }
diff --git a/security/shiro/src/main/adoc/modules/shiro/pages/about/configuring-isis-to-use-shiro.adoc b/security/shiro/src/main/adoc/modules/shiro/pages/about/configuring-isis-to-use-shiro.adoc
index d05d063..4692cdd 100644
--- a/security/shiro/src/main/adoc/modules/shiro/pages/about/configuring-isis-to-use-shiro.adoc
+++ b/security/shiro/src/main/adoc/modules/shiro/pages/about/configuring-isis-to-use-shiro.adoc
@@ -46,7 +46,7 @@ This can be configured in `authentication_shiro.properties` file:
 
 [source,ini]
 ----
-isis.authentication.shiro.autoLogoutIfAlreadyAuthenticated=false
+isis.security.shiro.autoLogoutIfAlreadyAuthenticated=false
 ----
 
 This configuration property only comes into effect for the xref:vro:ROOT:about.adoc[Restful Objects viewer]; if set then the Shiro subject - if found to be still authenticated - will be logged out anyway and then re-authenticated.