This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch ISIS-3255 in repository https://gitbox.apache.org/repos/asf/isis.git
commit bbe77f5beee1d42b5f316e4888e357636993fce2 Author: Dan Haywood <[email protected]> AuthorDate: Fri Nov 4 00:00:26 2022 +0000 ISIS-3255: refining generation of config docs --- .../modules/ROOT/pages/updating-the-website.adoc | 8 + core/config/generateConfigDocs.groovy | 32 ++- core/config/pom.xml | 53 ++++- .../adoc/modules/config/pages/sections/Other.adoc | 26 ++- .../config/pages/sections/causeway.applib.adoc | 220 ++++++++++++++------- .../pages/sections/causeway.core.config.adoc | 2 +- .../pages/sections/causeway.core.meta-model.adoc | 4 +- .../causeway.core.meta-model.introspector.adoc | 34 ++-- .../causeway.core.meta-model.validator.adoc | 24 +-- .../sections/causeway.core.runtime-services.adoc | 86 ++++---- .../pages/sections/causeway.core.runtime.adoc | 4 +- .../config/pages/sections/causeway.extensions.adoc | 155 ++++++++++----- .../sections/causeway.persistence.schema.adoc | 8 +- .../pages/sections/causeway.security.keycloak.adoc | 77 +++++++- .../pages/sections/causeway.security.shiro.adoc | 2 +- .../pages/sections/causeway.security.spring.adoc | 4 +- .../config/pages/sections/causeway.testing.adoc | 14 +- .../sections/causeway.viewer.restfulobjects.adoc | 22 +-- .../pages/sections/causeway.viewer.wicket.adoc | 195 +++++++++++------- .../modules/config/pages/sections/datanucleus.adoc | 8 +- .../modules/config/pages/sections/eclipselink.adoc | 50 ++--- .../modules/config/pages/sections/resteasy.adoc | 2 +- .../core/config/CausewayConfiguration.java | 2 +- extensions/core/excel/fixture/pom.xml | 6 - .../ExecutionLogEntry_copyToOutbox.java | 6 +- preview.sh | 182 ++++++++++------- scripts/ci/_adoc-gen-config.sh | 5 +- 27 files changed, 783 insertions(+), 448 deletions(-) diff --git a/antora/components/comguide/modules/ROOT/pages/updating-the-website.adoc b/antora/components/comguide/modules/ROOT/pages/updating-the-website.adoc index 5d58cf379a..dc04bfd6fb 100644 --- a/antora/components/comguide/modules/ROOT/pages/updating-the-website.adoc +++ b/antora/components/comguide/modules/ROOT/pages/updating-the-website.adoc @@ -9,6 +9,14 @@ This branch can then be used for documentation updates. == Update docs +Prereqs: + +* jdk 11 +* mvn 3.x +* groovy 3.x +* pandoc 2.x +* dos2unix + In the regular `causeway` repo: * Check out the branch: diff --git a/core/config/generateConfigDocs.groovy b/core/config/generateConfigDocs.groovy index c6b81a5d18..411b120ef5 100644 --- a/core/config/generateConfigDocs.groovy +++ b/core/config/generateConfigDocs.groovy @@ -19,7 +19,7 @@ */ // -// groovy generateConfigDocs -f "target/classes/META-INF/spring-configuration-metadata.json" -o /tmp +// groovy generateConfigDocs -f "target/classes/META-INF/spring-configuration-metadata.json" -o /c/tmp import groovy.json.JsonSlurper @@ -194,36 +194,18 @@ groups+= new PropertyGroup() {{ searchOrder = 501 }} -groups+= new PropertyGroup() {{ - prefix = "causeway.subdomains" - name = "Subdomains" - searchOrder = 501 -}} - groups+= new PropertyGroup() {{ prefix = "causeway.testing" name = "Testing" searchOrder = 501 }} -groups+= new PropertyGroup() {{ - prefix = "causeway.mappings" - name = "Bounded Context Mappings" - searchOrder = 501 -}} - groups+= new PropertyGroup() {{ prefix = "causeway.incubator" name = "Incubator" searchOrder = 501 }} -groups+= new PropertyGroup() {{ - prefix = "causeway.legacy" - name = "Legacy" - searchOrder = 501 -}} - groups+= new PropertyGroup() {{ prefix = "" // 'causeway.objects', 'causeway.environment' name = "Other" @@ -369,8 +351,12 @@ static String toAsciidoc(String str) { if (str == null) return null; System.out.print("."); - str = str.replaceAll( /\{@link[ ]+?([^}]+?)[ ]+?([^}]+?)}/, '$2') - str = str.replaceAll( /\{@link (?:(?:[^}]|[.])+[.])*([^}]+)}/, '``$1``') + String orig = str; + + str = str.replaceAll( /\{@link[ ]+(?:[^ }]+)[^}]+?[ ]+([^})]+)}/, '$1') // {@link org.apache.causeway.applib.events.lifecycle.ObjectLoadedEvent.Noop ObjectLoadedEvent.Noop}: ObjectLoadedEvent.Noop + str = str.replaceAll( /\{@link[ ]+?(?:[^ }]+?[ ]+?([^})]+))}/, '$1') // {@link Foo foo bar} and {@link Foo#bar foo bar} : "foo bar" + str = str.replaceAll( /\{@link[ ]+?(?:[^}]+?[ ]+?([^})]+))}/, '$1') // {@link Foo#bar(abc, def) foo bar} and {@link Foo#bar() foo bar} : "foo bar" ; + str = str.replaceAll( /\{@link (?:(?:[^} ]|[.])+[.])*([^}]+)}/, '``$1``') // {@link org.apache.causeway.applib.annotation.Action#domainEvent()} : ``Action#domainEvent()`` str = str.replaceAll( /<tt>(?:(?:[^<]|[.])+[.])*([^<]+)<\/tt>/, '``$1``') str = str.replaceAll( /<code>(?:(?:[^<]|[.])+[.])*([^<]+)<\/code>/, '``$1``') str = str.replaceAll( /@apiNote -/, 'TIP:') @@ -385,6 +371,10 @@ static String toAsciidoc(String str) { File tf = File.createTempFile("input",".html") tf.write(str) // write to the file + if (str.contains("@link")) { + System.out.println(str); + } + String cmd = "pandoc --wrap=none -f html -t asciidoc " + tf.getCanonicalPath() String adoc = cmd.execute().text diff --git a/core/config/pom.xml b/core/config/pom.xml index 910489d8dd..734cf3f516 100644 --- a/core/config/pom.xml +++ b/core/config/pom.xml @@ -7,9 +7,9 @@ to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - + http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -55,20 +55,43 @@ </excludes> </resource> </resources> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <annotationProcessorPaths> + <path> + <!-- + as per https://github.com/spring-projects/spring-boot/issues/30986, must be before the spring-boot-configuration-processor + https://docs.spring.io/spring-boot/docs/2.7.5/reference/html/configuration-metadata.html#appendix.configuration-metadata.annotation-processor + --> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + </path> + <path> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-configuration-processor</artifactId> + <version>${spring-boot.version}</version> + </path> + </annotationProcessorPaths> + </configuration> + </plugin> + </plugins> </build> <dependencies> - + <dependency> <groupId>org.apache.causeway.core</groupId> <artifactId>causeway-applib</artifactId> </dependency> - + <dependency> <groupId>org.apache.causeway.commons</groupId> <artifactId>causeway-commons</artifactId> </dependency> - + <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> @@ -87,17 +110,26 @@ </exclusion> </exclusions> </dependency> - - - <!-- IDE support (optional) --> + + <!-- + as per https://github.com/spring-projects/spring-boot/issues/30986, must be before the spring-boot-configuration-processor + https://docs.spring.io/spring-boot/docs/2.7.5/reference/html/configuration-metadata.html#appendix.configuration-metadata.annotation-processor + --> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <scope>provided</scope> + </dependency> + + <!-- IDE support (optional) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> - + <!-- TESTING --> - + <dependency> <groupId>org.apache.causeway.core</groupId> <artifactId>causeway-core-internaltestsupport</artifactId> @@ -106,4 +138,5 @@ </dependencies> + </project> diff --git a/core/config/src/main/adoc/modules/config/pages/sections/Other.adoc b/core/config/src/main/adoc/modules/config/pages/sections/Other.adoc index 1d78fa1d94..2219349102 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/Other.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/Other.adoc @@ -15,10 +15,34 @@ include::../section-hooks/Other~pre.adoc[] [[causeway]] causeway -| +| | null +| +[[causeway.prototyping.h2-console.generate-random-web-admin-password]] +causeway.prototyping.h2-console. + +generate-random-web-admin-password + +| true +| Whether to generate a random password for access to the H2 Web-Console advanced features. + +If a password is generated, it is logged to the logging subsystem (Log4j2). + +Recommended (``true``) when ``#isWebAllowRemoteAccess()`` is also ``true``. + + +| +[[causeway.prototyping.h2-console.web-allow-remote-access]] +causeway.prototyping.h2-console. + +web-allow-remote-access + +| +| Whether to allow remote access to the H2 Web-Console, which is a potential security risk when no web-admin password is set. + +Corresponds to Spring Boot 'spring.h2.console.settings.web-allow-others'. + + |=== diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.applib.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.applib.adoc index ec605e68f9..15732f32c0 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.applib.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.applib.adoc @@ -17,7 +17,48 @@ causeway.applib.annotation. + action-layout.css-class-fa. + patterns -| +| [add.*:fa-plus-square, all. + +*:fa-list, approve. + +*:fa-thumbs-o-up, assign. + +*:fa-hand-o-right, calculate. + +*:fa-calculator, cancel. + +*:fa-stop, categorise. + +*:fa-folder-open-o, change. + +*:fa-edit, clear.*:fa-remove, copy. + +*:fa-copy, create. + +*:fa-plus, decline. + +*:fa-thumbs-o-down, delete. + +*:fa-trash, discard. + +*:fa-trash-o, download. + +*:fa-download, edit. + +*:fa-edit, execute. + +*:fa-bolt, export. + +*:fa-download, first. + +*:fa-star, find. + +*:fa-search, install. + +*:fa-wrench, list. + +*:fa-list, import. + +*:fa-upload, lookup. + +*:fa-search, maintain. + +*:fa-edit, move.*:fa-exchange, new. + +*:fa-plus, next. + +*:fa-step-forward, pause. + +*:fa-pause, previous. + +*:fa-step-backward, refresh. + +*:fa-sync, remove. + +*:fa-minus-square, renew. + +*:fa-redo, reset.*:fa-redo, resume. + +*:fa-play, run.*:fa-bolt, save. + +*:fa-floppy-o, search. + +*:fa-search, stop. + +*:fa-stop, suspend. + +*:fa-pause, switch. + +*:fa-exchange, terminate. + +*:fa-stop, update. + +*:fa-edit, upload. + +*:fa-upload, verify. + +*:fa-check-circle, view. + +*:fa-search] | Provides a mapping of patterns to font-awesome CSS classes, where the pattern is used to match against the name of the action method in order to determine a CSS class to use, for example on the action's menu icon if rendered by the Wicket viewer. Providing a default set of patterns encourages a common set of verbs to be used. @@ -31,7 +72,7 @@ causeway.applib.annotation. + action-layout.css-class-fa. + patterns-as-map -| +| | null @@ -40,7 +81,9 @@ patterns-as-map causeway.applib.annotation. + action-layout.css-class.patterns -| +| [delete.*:btn-danger, discard. + +*:btn-warning, remove. + +*:btn-warning] | Provides a mapping of patterns to CSS classes, where the pattern is used to match against the name of the action method in order to determine a CSS class to use, for example on the action's button if rendered by the Wicket viewer. Providing a default set of patterns encourages a common set of verbs to be used. @@ -54,7 +97,7 @@ causeway.applib.annotation. + action-layout.css-class. + patterns-as-map -| +| | null @@ -63,8 +106,8 @@ patterns-as-map causeway.applib.annotation.action. + command-publishing -| -| TODO[2464] semantic renaming audit/dispatch -> publishing The default for whether action invocations should be reified as a ``Command``, to be sent to any registered ``CommandSubscriber``s, either for auditing or for replayed against a secondary system, eg for regression testing. +| +| The default for whether action invocations should be reified as a ``Command``, to be sent to any registered ``CommandSubscriber``s, typically for auditing purposes. This setting can be overridden on a case-by-case basis using ``Action#commandPublishing()``. @@ -74,7 +117,7 @@ This setting can be overridden on a case-by-case basis using ``Action#commandPub causeway.applib.annotation.action. + domain-event.post-for-default -| +| true | Influences whether an ``ActionDomainEvent`` should be published (on the internal ``EventBusService``) whenever an action is being interacted with. Up to five different events can be fired during an interaction, with the event's phase determining which (hide, disable, validate, executing and executed). Subscribers can influence the behaviour at each of these phases. @@ -91,12 +134,12 @@ The algorithm for determining whether (and what type of) an event is actually se causeway.applib.annotation.action. + execution-publishing -| -| TODO[2464] semantic renaming audit/dispatch -> publishing The default for whether action invocations should be sent through to the ``ExecutionSubscriber`` for publishing. +| +| The default for whether action invocations should be sent through to the ``ExecutionSubscriber`` for publishing. -The service's publish method is called only once per transaction, with ``Execution`` collecting details of the identity of the target object, the action invoked, the action arguments and the returned object (if any). +The service's onExecution method is called only once per transaction, with ``Execution`` collecting details of the identity of the target object, the action invoked, the action arguments and the returned object (if any). -This setting can be overridden on a case-by-case basis using ``Action#executionDispatch()``. +This setting can be overridden on a case-by-case basis using ``Action#executionPublishing() Action#executionPublishing()``. | @@ -104,7 +147,7 @@ This setting can be overridden on a case-by-case basis using ``Action#executionD causeway.applib.annotation. + collection-layout.default-view -| +| | Defines the initial view to display collections when rendered. The value of this can be overridden on a case-by-case basis using ``CollectionLayout#defaultView()``. Note that this default configuration property is an enum and so defines only a fixed number of values, whereas the annotation returns a string; this is to allow for flexibility that individual viewers might support their own additional types. For example, the Wicket viewer supports @@ -115,18 +158,28 @@ The value of this can be overridden on a case-by-case basis using ``CollectionLa causeway.applib.annotation. + collection-layout.paged -| +| 12 | Defines the default number of objects that are shown in a "parented" collection of a domain object, result of invoking an action. This can be overridden on a case-by-case basis using ``CollectionLayout#paged()``. | -[[causeway.applib.annotation.collection.domain-event.post-for-default]] -causeway.applib.annotation.collection. + -domain-event.post-for-default +[[causeway.applib.annotation.collection-layout.table-decoration]] +causeway.applib.annotation. + +collection-layout.table-decoration + +| +| Defines whether the table representation of a collection should be decorated using a client-side Javascript library, eg for client-side paging and filtering. + | +[[causeway.applib.annotation.collection.domain-event.post-for-default]] +causeway.applib.annotation. + +collection.domain-event. + +post-for-default + +| true | Influences whether an ``CollectionDomainEvent`` should be published (on the internal ``EventBusService``) whenever a collection is being interacted with. Up to two different events can be fired during an interaction, with the event's phase determining which (hide, disable)Subscribers can influence the behaviour at each of these phases. @@ -145,7 +198,7 @@ domain-object-layout. + css-class-ui-event. + post-for-default -| +| | Influences whether an ``CssClassUiEvent`` should be published (on the internal ``EventBusService``) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally ``CssClassUiEvent#setCssClass(String)`` change) the CSS classes that are used. The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObjectLayout#cssClassUiEvent()`` @DomainObjectLayout(cssClassEvent=...)} for the domain object in question. @@ -163,7 +216,7 @@ causeway.applib.annotation. + domain-object-layout.icon-ui-event. + post-for-default -| +| | Influences whether an ``IconUiEvent`` should be published (on the internal ``EventBusService``) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally ``IconUiEvent#setIconName(String)`` change) the icon that is used. The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObjectLayout#iconUiEvent()`` @DomainObjectLayout(iconEvent=...)} for the domain object in question. @@ -181,7 +234,7 @@ causeway.applib.annotation. + domain-object-layout. + layout-ui-event.post-for-default -| +| | Influences whether an ``LayoutUiEvent`` should be published (on the internal ``EventBusService``) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally ``LayoutUiEvent#setLayout(String)`` change) the layout that is used. If a different layout value has been set, then a layout in the form ``xml`` use used (where ``zzz`` is the name of the layout). @@ -200,19 +253,29 @@ The default is ``false``, because otherwise the mere presence of ``@DomainObject causeway.applib.annotation. + domain-object-layout.paged -| +| 25 | Defines the default number of objects that are shown in a "standalone" collection obtained as the result of invoking an action. This can be overridden on a case-by-case basis using ``DomainObjectLayout#paged()``. +| +[[causeway.applib.annotation.domain-object-layout.table-decoration]] +causeway.applib.annotation. + +domain-object-layout. + +table-decoration + +| +| Defines whether the table representation of a standalone collection of this domain class should be decorated using a client-side Javascript library, eg for client-side paging and filtering. + + | [[causeway.applib.annotation.domain-object-layout.title-ui-event.post-for-default]] causeway.applib.annotation. + domain-object-layout. + title-ui-event.post-for-default -| +| | Influences whether an ``TitleUiEvent`` should be published (on the internal ``EventBusService``) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally ``TitleUiEvent#setTitle(String)`` change) the title that is used. The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObjectLayout#titleUiEvent()`` @DomainObjectLayout(titleEvent=...)} for the domain object in question. @@ -231,10 +294,10 @@ domain-object. + created-lifecycle-event. + post-for-default -| +| true | Influences whether an ``ObjectCreatedEvent`` should be published (on the internal ``EventBusService``) whenever a domain object has been created using ``FactoryService``. -The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(createdLifecycleEvent=...) for the domain object in question. +The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObject#createdLifecycleEvent() @DomainObject(createdLifecycleEvent=...)`` for the domain object in question. * If set to some subtype of ObjectCreatedEvent.Noop, then _no_ event is sent. * If set to some subtype of ObjectCreatedEvent.Default, then an event is sent _if and only if_ this configuration setting is set. @@ -246,10 +309,10 @@ The algorithm for determining whether (and what type of) an event is sent depend causeway.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 DomainObject#getEditing() +This setting can be overridden on a case-by-case basis using ``DomainObject#getEditing() DomainObject#getEditing()`` | @@ -258,8 +321,8 @@ causeway.applib.annotation. + domain-object. + entity-change-publishing -| -| TODO[2464] semantic renaming audit/dispatch -> publishing The default for whether _domain entities_ should be audited or not (meaning that any changes are sent through to ``EntityChangesSubscriber``s and sent through to ``EntityPropertyChangeSubscriber``. +| +| The default for whether _domain entities_ should be audited or not (meaning that any changes are sent through to ``EntityChangesSubscriber``s and sent through to ``EntityPropertyChangeSubscriber``. This setting can be overridden on a case-by-case basis using ``DomainObject#entityChangePublishing()`` @@ -273,10 +336,10 @@ domain-object. + loaded-lifecycle-event. + post-for-default -| +| true | Influences whether an ``ObjectLoadedEvent`` should be published (on the internal ``EventBusService``) whenever a domain _entity_ has been loaded from the persistence store. -The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(loadedLifecycleEvent=...) for the domain object in question. +The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObject#loadedLifecycleEvent() @DomainObject(loadedLifecycleEvent=...)`` for the domain object in question. * If set to some subtype of ObjectLoadedEvent.Noop, then _no_ event is sent. * If set to some subtype of ObjectCreatedEvent.Default, then an event is sent _if and only if_ this configuration setting is set. @@ -292,10 +355,10 @@ domain-object. + persisted-lifecycle-event. + post-for-default -| +| true | Influences whether an ``ObjectPersistedEvent`` should be published (on the internal ``EventBusService``) whenever a domain _entity_ has been persisted (for the first time) to the persistence store. -The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(persistedLifecycleEvent=...) for the domain object in question. +The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObject#persistedLifecycleEvent() @DomainObject(persistedLifecycleEvent=...)`` for the domain object in question. * If set to some subtype of ObjectPersistedEvent.Noop, then _no_ event is sent. * If set to some subtype of ObjectCreatedEvent.Default, then an event is sent _if and only if_ this configuration setting is set. @@ -311,10 +374,10 @@ domain-object. + persisting-lifecycle-event. + post-for-default -| +| true | Influences whether an ``ObjectPersistingEvent`` should be published (on the internal ``EventBusService``) whenever a domain _entity_ is about to be persisting (for the first time) to the persistence store. -The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(persistingLifecycleEvent=...) for the domain object in question. +The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObject#persistingLifecycleEvent() @DomainObject(persistingLifecycleEvent=...)`` for the domain object in question. * If set to some subtype of ObjectPersistingEvent.Noop, then _no_ event is sent. * If set to some subtype of ObjectCreatedEvent.Default, then an event is sent _if and only if_ this configuration setting is set. @@ -330,10 +393,10 @@ domain-object. + removing-lifecycle-event. + post-for-default -| +| true | Influences whether an ``ObjectRemovingEvent`` should be published (on the internal ``EventBusService``) whenever a persistent domain _entity_ is about to be removed (that is, deleted) from the persistence store. -The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(removingLifecycleEvent=...) for the domain object in question. +The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObject#removingLifecycleEvent() @DomainObject(removingLifecycleEvent=...)`` for the domain object in question. * If set to some subtype of ObjectRemovingEvent.Noop, then _no_ event is sent. * If set to some subtype of ObjectCreatedEvent.Default, then an event is sent _if and only if_ this configuration setting is set. @@ -351,10 +414,10 @@ domain-object. + updated-lifecycle-event. + post-for-default -| +| true | Influences whether an ``ObjectUpdatedEvent`` should be published (on the internal ``EventBusService``) whenever a persistent domain _entity_ has been updated in the persistence store. -The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(updatedLifecycleEvent=...) for the domain object in question. +The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObject#updatedLifecycleEvent() @DomainObject(updatedLifecycleEvent=...)`` for the domain object in question. * If set to some subtype of ObjectUpdatedEvent.Noop, then _no_ event is sent. * If set to some subtype of ObjectCreatedEvent.Default, then an event is sent _if and only if_ this configuration setting is set. @@ -370,10 +433,10 @@ domain-object. + updating-lifecycle-event. + post-for-default -| +| true | Influences whether an ``ObjectUpdatingEvent`` should be published (on the internal ``EventBusService``) whenever a persistent domain _entity_ is about to be updated in the persistence store. -The algorithm for determining whether (and what type of) an event is sent depends on the value of the @DomainObject(updatingLifecycleEvent=...) for the domain object in question. +The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObject#updatingLifecycleEvent() @DomainObject(updatingLifecycleEvent=...)`` for the domain object in question. * If set to some subtype of ObjectUpdatingEvent.Noop, then _no_ event is sent. * If set to some subtype of ObjectCreatedEvent.Default, then an event is sent _if and only if_ this configuration setting is set. @@ -387,7 +450,7 @@ Note: this applies only to domain entities, not to view models. causeway.applib.annotation. + parameter-layout.label-position -| +| | Defines the default position for the label for an action parameter. Can be overridden on a case-by-case basis using ``ParameterLayout#labelPosition()``. @@ -395,12 +458,24 @@ Can be overridden on a case-by-case basis using ``ParameterLayout#labelPosition( If left as ``LabelPosition#NOT_SPECIFIED`` and not overridden, then the position depends upon the viewer implementation. +| +[[causeway.applib.annotation.parameter.dependent-defaults-policy]] +causeway.applib.annotation. + +parameter. + +dependent-defaults-policy + +| +| Whether dependent parameters should be reset to their default if an earlier parameter changes its value, or whether instead a parameter value, once changed by the end-user, should never be overwritten even if the end-user changes an earlier parameter value. + +This setting can be overridden on a case-by-case basis using ``Parameter#dependentDefaultsPolicy() Parameter#dependentDefaultsPolicy()``. + + | [[causeway.applib.annotation.property-layout.label-position]] causeway.applib.annotation. + property-layout.label-position -| +| | Defines the default position for the label for a domain object property. Can be overridden on a case-by-case basis using ``ParameterLayout#labelPosition()``. @@ -410,21 +485,22 @@ If left as ``LabelPosition#NOT_SPECIFIED`` and not overridden, then the position | [[causeway.applib.annotation.property.command-publishing]] -causeway.applib.annotation.property. + -command-publishing +causeway.applib.annotation. + +property.command-publishing -| -| TODO[2464] semantic renaming audit/dispatch -> publishing The default for whether property edits should be reified as a ``Command``, to be sent to any registered ``CommandSubscriber``s, either for auditing or for replayed against a secondary system, eg for regression testing. +| +| The default for whether property edits should be reified as a ``Command``, to be sent to any registered ``CommandSubscriber``s, either for auditing or for replayed against a secondary system, eg for regression testing. -This setting can be overridden on a case-by-case basis using ``Property#commandDispatch()``. +This setting can be overridden on a case-by-case basis using ``Property#commandPublishing()``. | [[causeway.applib.annotation.property.domain-event.post-for-default]] -causeway.applib.annotation.property. + -domain-event.post-for-default +causeway.applib.annotation. + +property.domain-event. + +post-for-default -| +| true | Influences whether an ``PropertyDomainEvent`` should be published (on the internal ``EventBusService``) whenever an property is being interacted with. Up to five different events can be fired during an interaction, with the event's phase determining which (hide, disable, validate, executing and executed). Subscribers can influence the behaviour at each of these phases. @@ -438,15 +514,15 @@ The algorithm for determining whether (and what type of) an event is actually se | [[causeway.applib.annotation.property.execution-publishing]] -causeway.applib.annotation.property. + -execution-publishing +causeway.applib.annotation. + +property.execution-publishing -| -| TODO[2464] semantic renaming audit/dispatch -> publishing The default for whether property edits should be sent through to the ``ExecutionSubscriber`` for publishing. +| +| The default for whether property edits should be sent through to the ``ExecutionSubscriber`` for publishing. -The service's publish method is called only once per transaction, with ``Execution`` collecting details of the identity of the target object, the property edited, and the new value of the property. +The service's ``ExecutionSubscriber#onExecution(Execution)`` publish} method is called only once per transaction, with ``Execution`` collecting details of the identity of the target object, the property edited, and the new value of the property. -This setting can be overridden on a case-by-case basis using ``Property#publishing()``. +This setting can be overridden on a case-by-case basis using ``Property#executionPublishing()``. | @@ -456,10 +532,10 @@ view-model-layout. + css-class-ui-event. + post-for-default -| -| Influences whether an ``CssClassUiEvent`` should be published (on the internal ``EventBusService``) whenever a view model (annotated with @ViewModel) is about to be rendered in the UI - thereby allowing subscribers to optionally ``CssClassUiEvent#setCssClass(String)`` change) the CSS classes that are used. +| true +| Influences whether an ``CssClassUiEvent`` should be published (on the internal ``EventBusService``) whenever a view model (annotated with @DomainObject#nature of ``Nature#VIEW_MODEL``) is about to be rendered in the UI - thereby allowing subscribers to optionally ``CssClassUiEvent#setCssClass(String)`` change) the CSS classes that are used. -The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``ViewModelLayout#cssClassUiEvent()`` @ViewModelLayout(cssClassEvent=...)} for the domain object in question: +The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObjectLayout#cssClassUiEvent() @DomainObjectLayout(cssClassEvent=...)`` for the domain object in question: * If set to some subtype of CssClassUiEvent.Noop, then _no_ event is sent. * If set to some subtype of CssClassUiEvent.Default, then an event is sent _if and only if_ this configuration setting is set. @@ -472,10 +548,10 @@ causeway.applib.annotation. + view-model-layout.icon-ui-event. + post-for-default -| -| Influences whether an ``IconUiEvent`` should be published (on the internal ``EventBusService``) whenever a view model (annotated with @ViewModel) is about to be rendered in the UI - thereby allowing subscribers to optionally ``IconUiEvent#setIconName(String)`` change) the icon that is used. +| true +| Influences whether an ``IconUiEvent`` should be published (on the internal ``EventBusService``) whenever a view model (annotated with @DomainObject#nature of ``Nature#VIEW_MODEL``) is about to be rendered in the UI - thereby allowing subscribers to optionally ``IconUiEvent#setIconName(String)`` change) the icon that is used. -The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``ViewModelLayout#iconUiEvent()`` @ViewModelLayout(iconEvent=...)} for the domain object in question: +The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObjectLayout#iconUiEvent() @ViewModelLayout(iconEvent=...)`` for the domain object in question: * If set to some subtype of IconUiEvent.Noop, then _no_ event is sent. * If set to some subtype of IconUiEvent.Default, then an event is sent _if and only if_ this configuration setting is set. @@ -488,12 +564,12 @@ causeway.applib.annotation. + view-model-layout.layout-ui-event. + post-for-default -| -| Influences whether an ``LayoutUiEvent`` should be published (on the internal ``EventBusService``) whenever a view model (annotated with @ViewModel) is about to be rendered in the UI - thereby allowing subscribers to optionally ``LayoutUiEvent#setLayout(String)`` change) the layout that is used. +| true +| Influences whether an ``LayoutUiEvent`` should be published (on the internal ``EventBusService``) whenever a view model (annotated with @DomainObject#nature of ``Nature#VIEW_MODEL``) is about to be rendered in the UI - thereby allowing subscribers to optionally ``LayoutUiEvent#setLayout(String)`` change) the layout that is used. If a different layout value has been set, then a layout in the form ``xml`` use used (where ``zzz`` is the name of the layout). -The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``ViewModelLayout#layoutUiEvent()`` @ViewModelLayout(layoutEvent=...)} for the domain object in question: +The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObjectLayout#layoutUiEvent() @DomainObjectLayout(layoutEvent=...)`` for the domain object in question: * If set to some subtype of LayoutUiEvent.Noop, then _no_ event is sent. * If set to some subtype of LayoutUiEvent.Default, then an event is sent _if and only if_ this configuration setting is set. @@ -506,10 +582,10 @@ causeway.applib.annotation. + view-model-layout.title-ui-event. + post-for-default -| -| Influences whether an ``TitleUiEvent`` should be published (on the internal ``EventBusService``) whenever a view model (annotated with @ViewModel) is about to be rendered in the UI - thereby allowing subscribers to optionally ``TitleUiEvent#setTitle(String)`` change) the title that is used. +| true +| Influences whether an ``TitleUiEvent`` should be published (on the internal ``EventBusService``) whenever a view model (annotated with @DomainObject#nature of ``Nature#VIEW_MODEL``) is about to be rendered in the UI - thereby allowing subscribers to optionally ``TitleUiEvent#setTitle(String)`` change) the title that is used. -The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``ViewModelLayout#titleUiEvent()`` @ViewModelLayout(titleEvent=...)} for the domain object in question: +The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObjectLayout#titleUiEvent() @DomainObjectLayout(titleEvent=...)`` for the domain object in question: * If set to some subtype of TitleUiEvent.Noop, then _no_ event is sent. * If set to some subtype of TitleUiEvent.Default, then an event is sent _if and only if_ this configuration setting is set. @@ -518,12 +594,12 @@ The algorithm for determining whether (and what type of) an event is sent depend | [[causeway.applib.annotation.view-model.validation.semantic-checking.enable]] -causeway.applib.annotation.view-model. + -validation.semantic-checking. + -enable +causeway.applib.annotation. + +view-model.validation. + +semantic-checking.enable -| -| Whether to check for inconsistencies between the usage of ``DomainObject``, ``ViewModel``, ``DomainObjectLayout`` and ``ViewModelLayout``. +| +| Whether to check for inconsistencies between the usage of ``DomainObject`` and ``DomainObjectLayout``. diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.config.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.config.adoc index adf9b3cb34..b680e73c18 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.config.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.config.adoc @@ -17,7 +17,7 @@ causeway.core.config. + configuration-property-visibility- + policy -| +| | Configuration values might contain sensitive data, hence per default, configuration properties are only visible with the configuration-page when _prototyping_. Alternatively this policy can be set to either *always* show or *never* show. diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.meta-model.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.meta-model.adoc index 942592b5a1..a27314a92c 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.meta-model.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.meta-model.adoc @@ -16,7 +16,7 @@ include::../section-hooks/causeway.core.meta-model~pre.adoc[] causeway.core.meta-model. + filter-visibility -| +| true | Whether domain objects to which the current user does not have visibility access should be rendered within collections or drop-down choices/autocompletes. One reason this filtering may be necessary is for multi-tenanted applications, whereby an end-user should only be able to "see" what data that they own. For efficiency, the application should only query for objects that the end-user owns. This configuration property acts as a safety net to prevent the end-user from viewing domain objects _even if_ those domain objects were rehydrated from the persistence store. @@ -28,7 +28,7 @@ causeway.core.meta-model. + programming-model. + ignore-deprecated -| +| | If set, then any aspects of the programming model (as implemented by ``FacetFactory``s that have been indicated as deprecated will simply be ignored/excluded from the metamodel. diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.meta-model.introspector.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.meta-model.introspector.adoc index f31ac6d99b..003482e0a4 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.meta-model.introspector.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.meta-model.introspector.adoc @@ -13,10 +13,11 @@ include::../section-hooks/causeway.core.meta-model.introspector~pre.adoc[] |Description | [[causeway.core.meta-model.introspector.lock-after-full-introspection]] -causeway.core.meta-model.introspector. + +causeway.core.meta-model. + +introspector. + lock-after-full-introspection -| +| true | If true, then no new specifications will be allowed to be loaded once introspection has been complete. Only applies if the introspector is configured to perform full introspection up-front (either because of ``IntrospectionMode#FULL`` or ``IntrospectionMode#LAZY_UNLESS_PRODUCTION`` when in production); otherwise is ignored. @@ -24,10 +25,10 @@ Only applies if the introspector is configured to perform full introspection up- | [[causeway.core.meta-model.introspector.mode]] -causeway.core.meta-model.introspector. + -mode +causeway.core.meta-model. + +introspector.mode -| +| | Whether all known types should be fully introspected as part of the bootstrapping, or should only be partially introspected initially. Leaving this as lazy means that there's a chance that metamodel validation errors will not be discovered during bootstrap. That said, metamodel validation is still run incrementally for any classes introspected lazily after initial bootstrapping (unless ``#isValidateIncrementally()`` is disabled. @@ -35,21 +36,21 @@ Leaving this as lazy means that there's a chance that metamodel validation error | [[causeway.core.meta-model.introspector.parallelize]] -causeway.core.meta-model.introspector. + -parallelize +causeway.core.meta-model. + +introspector.parallelize -| -| Whether to perform introspection in parallel. Meant to speed up bootstrapping. +| +| Whether to perform metamodel introspection in parallel, intended to speed up bootstrapping. -For now this is _experimental_. Leave this disabled (the default). +For now this is _experimental_. We recommend this is left as disabled (the default). | [[causeway.core.meta-model.introspector.policy]] -causeway.core.meta-model.introspector. + -policy +causeway.core.meta-model. + +introspector.policy -| +| | Policy as to how introspection should process class members and supporting methods. Default is to only introspect public class members, while annotating these is optional. @@ -57,15 +58,16 @@ Default is to only introspect public class members, while annotating these is op | [[causeway.core.meta-model.introspector.validate-incrementally]] -causeway.core.meta-model.introspector. + +causeway.core.meta-model. + +introspector. + validate-incrementally -| +| true | If true, then metamodel validation is performed after any new specification has been loaded (after the initial bootstrapping). This does _not_ apply if the introspector is configured to perform full introspection up-front AND when the metamodel is locked after initial bootstrapping (because in that case the lock check will simply prevent any new specs from being loaded). But it will apply otherwise. -In particular, this setting _can_ still apply even if the introspection mode is set to full, because that in itself does not preclude some code from attempting to load some previously unknown type. For example, a fixture script could attempt to invoke an action on some new type using the ``WrapperFactory`` - this will cause introspection of that new type to be performed. +In particular, this setting _can_ still apply even if the mode is set to full, because that in itself does not preclude some code from attempting to load some previously unknown type. For example, a fixture script could attempt to invoke an action on some new type using the ``WrapperFactory`` - this will cause introspection of that new type to be performed. diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.meta-model.validator.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.meta-model.validator.adoc index e64b6a92a7..88d4841235 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.meta-model.validator.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.meta-model.validator.adoc @@ -17,7 +17,7 @@ causeway.core.meta-model.validator. + action-collection-parameter- + choices -| +| true | Whether to validate that any actions that accept action parameters have either a corresponding choices or auto-complete for that action parameter, or are associated with a collection of the appropriate type. @@ -26,12 +26,12 @@ choices causeway.core.meta-model.validator. + allow-deprecated -| +| true | This setting is used to determine whether the use of such deprecated features is allowed. If not allowed, then metamodel validation errors will be flagged. -Note that this settings has no effect if the programming model has been configured to ignore deprecated features (because in this case the programming model facets simply won't be included in the introspection process. +Note that this settings has no effect if the programming model has been configured to deprecated features (because in this case the programming model facets simply won't be included in the introspection process. | @@ -39,7 +39,7 @@ Note that this settings has no effect if the programming model has been configur causeway.core.meta-model.validator. + explicit-logical-type-names -| +| | Whether to ensure that the logical-type-name of all objects must be specified explicitly, using either ``Named``. It is _highly advisable_ to leave this set as enabled (the default). These logical-type-names should also (of course) be unique - among non-abstract types. @@ -51,7 +51,7 @@ causeway.core.meta-model.validator. + jaxb-view-model. + date-time-type-adapter -| +| true | If set, then ensures that for all properties of JAXB-style view models where the property's type is a date or time, then that property has been correctly annotated with @``XmlJavaTypeAdapter`` (so that the property's value can be converted into a serializable form). @@ -60,7 +60,7 @@ date-time-type-adapter causeway.core.meta-model.validator. + jaxb-view-model.no-arg-constructor -| +| | If set, then ensures that all JAXB-style view models have a no-arg constructor. @@ -69,7 +69,7 @@ jaxb-view-model.no-arg-constructor causeway.core.meta-model.validator. + jaxb-view-model.not-abstract -| +| true | If set, then ensures that all JAXB-style view models are concrete classes, not abstract. @@ -78,7 +78,7 @@ jaxb-view-model.not-abstract causeway.core.meta-model.validator. + jaxb-view-model.not-inner-class -| +| true | If set, then ensures that all JAXB-style view models are either top-level classes or nested static classes (in other words, checks that they are not anonymous, local nor nested non-static classes). @@ -88,7 +88,7 @@ causeway.core.meta-model.validator. + jaxb-view-model. + reference-type-adapter -| +| true | If set, then ensures that for all properties of JAXB-style view models where the property's type is an entity, then that entity's type has been correctly annotated with @``XmlJavaTypeAdapter`` (so that the property's value can be converted into a serializable form). @@ -97,7 +97,7 @@ reference-type-adapter causeway.core.meta-model.validator. + jdoql.from-clause -| +| true | If set, then ensures that the 'FROM' clause within any JDOQL ``@Query``s annotations relates to a known entity type, and moreover that that type is compatible with the type on which the annotation appears: meaning its either a supertype of or the same type as the annotated type. @@ -106,7 +106,7 @@ jdoql.from-clause causeway.core.meta-model.validator. + jdoql.variables-clause -| +| true | If set, then ensures that the 'VARIABLES' clause within any JDOQL ``@Query``s relates to a known entity type. @@ -115,7 +115,7 @@ jdoql.variables-clause causeway.core.meta-model.validator. + parallelize -| +| true | Whether to perform metamodel validation in parallel. diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.runtime-services.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.runtime-services.adoc index 831367b061..80ce5d2138 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.runtime-services.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.runtime-services.adoc @@ -16,52 +16,52 @@ include::../section-hooks/causeway.core.runtime-services~pre.adoc[] causeway.core.runtime-services. + application-features.init -| +| | Whether the ``ApplicationFeatureRepository`` (or the default implementation of that service, at least) should compute the set of ``ApplicationFeature`` that describe the metamodel eagerly, or lazily. | [[causeway.core.runtime-services.email.override.bcc]] -causeway.core.runtime-services.email. + -override.bcc +causeway.core.runtime-services. + +email.override.bcc -| +| | Intended for testing purposes only, if set then the requested ``bcc:`` of the email will be ignored, and instead sent to this email address instead. | [[causeway.core.runtime-services.email.override.cc]] -causeway.core.runtime-services.email. + -override.cc +causeway.core.runtime-services. + +email.override.cc -| +| | Intended for testing purposes only, if set then the requested ``cc:`` of the email will be ignored, and instead sent to this email address instead. | [[causeway.core.runtime-services.email.override.to]] -causeway.core.runtime-services.email. + -override.to +causeway.core.runtime-services. + +email.override.to -| +| | Intended for testing purposes only, if set then the requested ``to:`` of the email will be ignored, and instead sent to this email address instead. | [[causeway.core.runtime-services.email.port]] -causeway.core.runtime-services.email. + -port +causeway.core.runtime-services. + +email.port -| +| 587 | The port to use for sending email. | [[causeway.core.runtime-services.email.sender.address]] -causeway.core.runtime-services.email. + -sender.address +causeway.core.runtime-services. + +email.sender.address -| +| | Specifies the email address of the user sending the email. If the username is not specified, is also used as the username to connect to the SMTP service. @@ -71,10 +71,10 @@ This configuration property is mandatory (for the default implementation of the | [[causeway.core.runtime-services.email.sender.hostname]] -causeway.core.runtime-services.email. + -sender.hostname +causeway.core.runtime-services. + +email.sender.hostname -| +| | Specifies the host running the SMTP service. If not specified, then the value used depends upon the email implementation. The default implementation will use the ``host`` system property. @@ -82,10 +82,10 @@ If not specified, then the value used depends upon the email implementation. The | [[causeway.core.runtime-services.email.sender.password]] -causeway.core.runtime-services.email. + -sender.password +causeway.core.runtime-services. + +email.sender.password -| +| | Specifies the password (corresponding to the username to connect to the SMTP service. This configuration property is mandatory (for the default implementation of the ``EmailService``, at least). @@ -93,48 +93,48 @@ This configuration property is mandatory (for the default implementation of the | [[causeway.core.runtime-services.email.sender.username]] -causeway.core.runtime-services.email. + -sender.username +causeway.core.runtime-services. + +email.sender.username -| +| | Specifies the username to use to connect to the SMTP service. -If not specified, then the sender's email address will be used instead. +If not specified, then the sender's address will be used instead. | [[causeway.core.runtime-services.email.socket-connection-timeout]] -causeway.core.runtime-services.email. + -socket-connection-timeout +causeway.core.runtime-services. + +email.socket-connection-timeout -| +| 2000 | The maximum number of millseconds to wait to obtain a socket connection before timing out. | [[causeway.core.runtime-services.email.socket-timeout]] -causeway.core.runtime-services.email. + -socket-timeout +causeway.core.runtime-services. + +email.socket-timeout -| +| 2000 | The maximum number of millseconds to wait to obtain a socket before timing out. | [[causeway.core.runtime-services.email.throw-exception-on-fail]] -causeway.core.runtime-services.email. + -throw-exception-on-fail +causeway.core.runtime-services. + +email.throw-exception-on-fail -| -| If an email fails to send, whether to propagate the exception (meaning that potentially the end-user might see the exception), or whether instead to just indicate failure through the return value of the method (List, List, String, String, DataSource...) that's being called. +| true +| If an email fails to send, whether to propagate the exception (meaning that potentially the end-user might see the exception), or whether instead to just indicate failure through the return value of the method (``EmailService#send(List, List, List, String, String, DataSource...)`` that's being called. | [[causeway.core.runtime-services.email.tls.enabled]] -causeway.core.runtime-services.email. + -tls.enabled +causeway.core.runtime-services. + +email.tls.enabled -| +| true | Whether TLS encryption should be started (that is, ``STARTTLS``). @@ -143,7 +143,7 @@ tls.enabled causeway.core.runtime-services. + exception-recognizer.dae.disable -| +| | Whether the ``ExceptionRecognizer`` implementation for Spring's DataAccessException - which attempts to sanitize any exceptions arising from object stores - should be disabled (meaning that exceptions will potentially propagate as more serious to the end user). @@ -153,7 +153,7 @@ causeway.core.runtime-services. + repository-service. + disable-auto-flush -| +| | Normally any queries are automatically preceded by flushing pending executions. This key allows this behaviour to be disabled. @@ -166,7 +166,7 @@ NOTE: this key is redundant for JPA/EclipseLink, which supports its own auto-flu causeway.core.runtime-services. + translation.po.mode -| +| | Specifies the initial mode for obtaining/discovering translations. There are three modes: @@ -181,7 +181,7 @@ There are three modes: causeway.core.runtime-services. + translation.resource-location -| +| | Specifies the relative resource path to look for translation files. If \{@code null} uses \{@code servletContext.getResource("/WEB-INF/")}. diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.runtime.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.runtime.adoc index 4e2c7c3ff2..2da9ba5959 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.runtime.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.core.runtime.adoc @@ -15,7 +15,7 @@ include::../section-hooks/causeway.core.runtime~pre.adoc[] [[causeway.core.runtime.locale]] causeway.core.runtime.locale -| +| | If set, then overrides the application's ``Locale#getDefault()`` @@ -23,7 +23,7 @@ causeway.core.runtime.locale [[causeway.core.runtime.timezone]] causeway.core.runtime.timezone -| +| | If set, then override's the application's timezone. diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.extensions.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.extensions.adoc index a9d1ba2949..6d07b923b7 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.extensions.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.extensions.adoc @@ -11,12 +11,25 @@ include::../section-hooks/causeway.extensions~pre.adoc[] |Property |Default |Description +| +[[causeway.extensions.command-log.publish-policy]] +causeway.extensions.command-log. + +publish-policy + +| +| Whether commands should be published always, or only if a change in the system's state has been detected. + +In general, the default of ``PublishPolicy#ALWAYS`` should be used, _unless_ the _Audit Trail_ extension is also in use, which is able to advise on whether the systems state has changed. + +Put another way, if this policy is set to ``PublishPolicy#ONLY_IF_SYSTEM_CHANGED`` but the _Audit Trail_ extension is _not_ enabled, then nothing will be logged. + + | [[causeway.extensions.command-replay.analyser.exception.enabled]] causeway.extensions.command-replay. + analyser.exception.enabled -| +| true | null @@ -25,7 +38,7 @@ analyser.exception.enabled causeway.extensions.command-replay. + analyser.result.enabled -| +| true | null @@ -34,7 +47,7 @@ analyser.result.enabled causeway.extensions.command-replay. + batch-size -| +| 10 | null @@ -43,7 +56,7 @@ batch-size causeway.extensions.command-replay. + primary-access.base-url-restful -| +| | null @@ -52,7 +65,7 @@ primary-access.base-url-restful causeway.extensions.command-replay. + primary-access.base-url-wicket -| +| | null @@ -61,7 +74,7 @@ primary-access.base-url-wicket causeway.extensions.command-replay. + primary-access.password -| +| | null @@ -70,7 +83,7 @@ primary-access.password causeway.extensions.command-replay. + primary-access.user -| +| | null @@ -80,7 +93,7 @@ causeway.extensions.command-replay. + quartz-replicate-and-replay-job. + repeat-interval -| +| 10000 | Number of milliseconds before running again. @@ -90,7 +103,7 @@ causeway.extensions.command-replay. + quartz-replicate-and-replay-job. + start-delay -| +| 15000 | Number of milliseconds before starting the job. @@ -99,7 +112,8 @@ start-delay causeway.extensions.command-replay. + quartz-session.roles -| +| causewayModuleExtCommandReplaySeco + +ndaryRole | null @@ -108,7 +122,8 @@ quartz-session.roles causeway.extensions.command-replay. + quartz-session.user -| +| causewayModuleExtCommandReplaySeco + +ndaryUser | The user that runs the replay session secondary. @@ -117,7 +132,7 @@ quartz-session.user causeway.extensions.command-replay. + secondary-access.base-url-wicket -| +| | null @@ -126,8 +141,14 @@ secondary-access.base-url-wicket causeway.extensions.cors. + allow-credentials -| -| TODO missing java-doc +| +| Whether the resource supports user credentials. + +This flag is exposed as part of 'Access-Control-Allow-Credentials' header in a pre-flight response. It helps browser determine whether or not an actual request can be made using credentials. + +By default this is not set (i.e. user credentials are not supported). + +For more information, check the usage of the ``credentials`` init parameter for https://github.com/eBay/cors-filter[EBay CORSFilter]. | @@ -135,8 +156,10 @@ allow-credentials causeway.extensions.cors. + allowed-headers -| -| Which HTTP headers are allowed in a CORS request. +| +| Which HTTP headers can be allowed in a CORS request. + +These header will also be returned as part of 'Access-Control-Allow-Headers' header in a pre-flight response. For more information, check the usage of the ``headers`` init parameter for https://github.com/eBay/cors-filter[EBay CORSFilter]. @@ -146,9 +169,13 @@ For more information, check the usage of the ``headers`` init parameter for http causeway.extensions.cors. + allowed-methods -| +| | Which HTTP methods are permitted in a CORS request. +A comma separated list of HTTP methods that can be used to access the resource, using cross-origin requests. These are the methods which will also be included as part of 'Access-Control-Allow-Methods' header in a pre-flight response. + +Default is ``GET``, ``POST``, ``HEAD``, ``OPTIONS``. + For more information, check the usage of the ``methods`` init parameter for https://github.com/eBay/cors-filter[EBay CORSFilter]. @@ -157,10 +184,12 @@ For more information, check the usage of the ``methods`` init parameter for http causeway.extensions.cors. + allowed-origins -| +| * | Which origins are allowed to make CORS requests. -The default is the wildcard ("*") but this can be made more restrictive if necessary. +The default is the wildcard ("*"), meaning any origin is allowed to access the resource, but this can be made more restrictive if necessary using a whitelist of comma separated origins eg: + +``org`` For more information, check the usage of the ``origins`` init parameter for https://github.com/eBay/cors-filter[EBay CORSFilter]. @@ -170,41 +199,69 @@ For more information, check the usage of the ``origins`` init parameter for http causeway.extensions.cors. + exposed-headers -| +| Authorization | Which HTTP headers are exposed in a CORS request. +A comma separated list of headers other than the simple response headers that browsers are allowed to access. These are the headers which will also be included as part of 'Access-Control-Expose-Headers' header in the pre-flight response. + +Default is none. + For more information, check the usage of the ``headers`` init parameter for https://github.com/eBay/cors-filter[EBay CORSFilter]. +| +[[causeway.extensions.execution-outbox.rest-api.max-pending]] +causeway.extensions. + +execution-outbox.rest-api. + +max-pending + +| 100 +| The maximum number of interactions that will be returned when the REST API is polled. + + | [[causeway.extensions.secman.delegated-users.auto-create-policy]] causeway.extensions.secman. + delegated-users.auto-create-policy -| +| | Whether delegated users should be autocreated as locked (the default) or unlocked. BE AWARE THAT if any users are auto-created as unlocked, then the set of roles that they are given should be highly restricted !!! +NOTE also that this configuration policy is ignored if running secman with Spring OAuth2 or Keycloak as the authenticator; users are always auto-created. + + +| +[[causeway.extensions.secman.delegated-users.initial-role-names]] +causeway.extensions.secman. + +delegated-users.initial-role-names + +| +| The set of roles that users that have been automatically created are granted automatically. + +Typically the regular user role (as per ``role-name``, default value of ``causeway-ext-secman-user``) will be one of the roles listed here, to provide the ability for the end-user to logout, among other things (!). + | [[causeway.extensions.secman.permissions-evaluation-policy]] causeway.extensions.secman. + permissions-evaluation-policy -| +| | If there are conflicting (allow vs veto) permissions at the same scope, then this policy determines whether to prefer to allow the permission or to veto it. -This is only used if a ``PermissionsEvaluationService`` has not been declared explicitly. +This is only used an implementation of secman's ``PermissionsEvaluationService`` SPI has not been provided explicitly. | [[causeway.extensions.secman.seed.admin.namespace-permissions.additional]] -causeway.extensions.secman.seed.admin. + -namespace-permissions.additional +causeway.extensions.secman.seed. + +admin.namespace-permissions. + +additional -| -| An (optional) additional set of namespaces that the admin role is granted. +| +| An (optional) additional set of namespaces that the role is granted. These are in addition to the main namespaces granted. @@ -213,11 +270,11 @@ These are in addition to the main namespaces granted. | [[causeway.extensions.secman.seed.admin.namespace-permissions.sticky]] -causeway.extensions.secman.seed.admin. + -namespace-permissions.sticky +causeway.extensions.secman.seed. + +admin.namespace-permissions.sticky -| -| The set of namespaces to which the admin role is granted. +| +| The set of namespaces to which the role is granted. These namespaces are intended to be sufficient to allow users with this admin role to be able to administer the security module itself, for example to manage users and roles. The security user is not necessarily able to use the main business logic within the domain application itself, though. @@ -230,35 +287,35 @@ WARNING: normally these should not be overridden. Instead, specify additional na | [[causeway.extensions.secman.seed.admin.password]] -causeway.extensions.secman.seed.admin. + -password +causeway.extensions.secman.seed. + +admin.password -| -| The corresponding password for admin user. @see #getUserName() +| +| The corresponding password for user. @see #getUserName() | [[causeway.extensions.secman.seed.admin.role-name]] -causeway.extensions.secman.seed.admin. + -role-name +causeway.extensions.secman.seed. + +admin.role-name -| +| | The name of security admin role. -Users with this role (in particular, the default admin user are granted access to a set of namespaces (``NamespacePermissions#getSticky()`` and ``NamespacePermissions#getAdditional()``) which are intended to be sufficient to allow users with this admin role to be able to administer the security module itself, for example to manage users and roles. +Users with this role (in particular, the default user are granted access to a set of namespaces (``NamespacePermissions#getSticky()`` and ``NamespacePermissions#getAdditional()``) which are intended to be sufficient to allow users with this admin role to be able to administer the security module itself, for example to manage users and roles. @see Admin#getUserName() @see NamespacePermissions#getSticky() @see NamespacePermissions#getAdditional() | [[causeway.extensions.secman.seed.admin.user-name]] -causeway.extensions.secman.seed.admin. + -user-name +causeway.extensions.secman.seed. + +admin.user-name -| +| | The name of the security super user. -This user is automatically made a member of the admin role, from which it is granted permissions to administer other users. +This user is automatically made a member of the role, from which it is granted permissions to administer other users. The password for this user is set in ``Admin#getPassword()``. @@ -270,7 +327,7 @@ The password for this user is set in ``Admin#getPassword()``. causeway.extensions.secman.seed. + regular-user.role-name -| +| | The role name for regular users of the application, granting them access to basic security features. The exact set of permissions is hard-wired in the ``CausewayExtSecmanRegularUserRoleAndPermissions`` fixture. @@ -281,10 +338,10 @@ The exact set of permissions is hard-wired in the ``CausewayExtSecmanRegularUser causeway.extensions.secman. + user-menu-me-action-policy -| -| Whether the presence of SecMan should result in the automatic suppression of the ``UserMenu``'s me action. +| +| Whether the presence of SecMan should result in the automatic suppression of the ``UserMenu``'s ``me#act() me()`` action. -This is normally what is required as SecMan's ``ApplicationUser`` is a more comprehensive representation of the current user. If the default me action is not suppressed, then the end-user will see two actions with the name "me" in the tertiary menu. +This is normally what is required as SecMan's ``ApplicationUser`` is a more comprehensive representation of the current user. If the default ``me#act() me()`` action is not suppressed, then the end-user will see two actions with the name "me" in the tertiary menu. | @@ -293,7 +350,7 @@ causeway.extensions.secman. + user-registration. + initial-role-names -| +| | The set of roles that users registering with the app are granted automatically. If using the wicket viewer, also requires causeway.viewer.wicket.suppress-signup to be set ``false``, along with any other of its other prereqs. @@ -304,7 +361,7 @@ If using the wicket viewer, also requires causeway.viewer.wicket.suppress-signup causeway.extensions.session-log. + auto-logout-on-restart -| +| true | null diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.persistence.schema.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.persistence.schema.adoc index 3e702328fb..9811f8fec5 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.persistence.schema.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.persistence.schema.adoc @@ -16,7 +16,7 @@ include::../section-hooks/causeway.persistence.schema~pre.adoc[] causeway.persistence.schema. + additional-orm-files -| +| | Does lookup additional "mapping-files" in META-INF/orm-_name_.xml (equivalent to "mapping-file" entries in persistence.xml) and adds these to those that are already configured the _Spring Data_ way (if any). NOTE: not implemented for JDO @@ -25,7 +25,7 @@ additional-orm-files causeway.persistence.schema. + auto-create-schemas -| +| | List of additional schemas to be auto-created. Explicitly creates given list of schemas by using the specified ``#getCreateSchemaSqlTemplate()`` to generate the actual SQL statement against the configured data-source. @@ -38,10 +38,10 @@ This configuration mechanism does not consider any schema-auto-creation configur causeway.persistence.schema. + create-schema-sql-template -| +| CREATE SCHEMA IF NOT EXISTS %S | Vendor specific SQL syntax to create a DB schema. -This template is passed through schemaName) to make the actual SQL statement thats to be used against the configured data-source. +This template is passed through ``String#format(String, Object...)`` to make the actual SQL statement thats to be used against the configured data-source. Default template is \{@literal CREATE SCHEMA IF NOT EXISTS %S} with the schema name converted to upper-case. diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.security.keycloak.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.security.keycloak.adoc index b190b33410..86a5983b54 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.security.keycloak.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.security.keycloak.adoc @@ -13,26 +13,75 @@ include::../section-hooks/causeway.security.keycloak~pre.adoc[] |Description | [[causeway.security.keycloak.base-url]] -causeway.security.keycloak.base-url +causeway.security.keycloak. + +base-url -| +| | The base URL for the keycloak server. For example, if running a keycloak using Docker container, such as: .... - docker run -p 9090:8080 \ -e KEYCLOAK_USER=admin \ -e KEYCLOAK_PASSWORD=admin \ quay.io/keycloak/keycloak:14.0.0 + docker run -p 9090:8080 \ -e KEYCLOAK_USER=admin \ -e KEYCLOAK_PASSWORD=admin \ quay.io/keycloak/keycloak:19.0.1 .... , then the URL would be "http://localhost:9090/auth". +| +[[causeway.security.keycloak.client-role-prefix]] +causeway.security.keycloak. + +client-role-prefix + +| +| If ``#isExtractClientRoles()`` client roles are to be extracted}, this allows the resultant role to be optionally prefixed. + + +| +[[causeway.security.keycloak.extract-client-roles]] +causeway.security.keycloak. + +extract-client-roles + +| true +| Whether to (attempt to) extract client roles and copy into the ``DefaultOidcUser``. + +By default, client roles are extracted using the "User Client Role" mapping type, into a token claim name "resource_access.$\{client_id}.roles" + +This has been made a configuration option because some versions of Keycloak seemingly do not correctly extract these roles, see for example https://keycloak.discourse.group/t/resource-access-claim-missing-from-userinfo-until-i-change-the-name/1238/3[this discussion] and https://issues.redhat.com/browse/KEYCLOAK-9874[KEYCLOAK-9874]. + + +| +[[causeway.security.keycloak.extract-realm-roles]] +causeway.security.keycloak. + +extract-realm-roles + +| true +| Whether to (attempt to) extract realm roles and copy into the ``DefaultOidcUser``. + +By default, realm roles are obtained from the token claims using the "User Realm Role" mapping type, into a token claim name "realm_access.roles" + +This has been made a configuration option because some versions of Keycloak seemingly do not correctly extract these roles, see for example https://keycloak.discourse.group/t/resource-access-claim-missing-from-userinfo-until-i-change-the-name/1238/3[this discussion] and https://issues.redhat.com/browse/KEYCLOAK-9874[KEYCLOAK-9874]. + + +| +[[causeway.security.keycloak.extract-roles]] +causeway.security.keycloak. + +extract-roles + +| +| Whether to (attempt to) extract any available roles and into the ``DefaultOidcUser``. + +This is to support any custom mapping type which maps into a token claim name called simply "roles" + +This has been made a configuration option so that the workaround described in https://keycloak.discourse.group/t/resource-access-claim-missing-from-userinfo-until-i-change-the-name/1238/3[this discussion] and https://issues.redhat.com/browse/KEYCLOAK-9874[KEYCLOAK-9874] can be implemented. + + | [[causeway.security.keycloak.login-success-url]] causeway.security.keycloak. + login-success-url -| +| /wicket | Specifies where users will be redirected after authenticating successfully if they have not visited a secured page prior to authenticating or \{@code alwaysUse} is true. @@ -40,10 +89,28 @@ login-success-url [[causeway.security.keycloak.realm]] causeway.security.keycloak.realm -| +| | The name of the realm for the Apache Causeway application, as configured in Keycloak. +| +[[causeway.security.keycloak.realm-role-prefix]] +causeway.security.keycloak. + +realm-role-prefix + +| +| If roles are to be extracted, this allows the resultant role to be optionally prefixed. + + +| +[[causeway.security.keycloak.role-prefix]] +causeway.security.keycloak. + +role-prefix + +| +| If ``#isExtractRoles()`` roles are to be extracted}, this allows the resultant role to be optionally prefixed. + + |=== diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.security.shiro.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.security.shiro.adoc index fb86bd87a3..ecc0ff0cf1 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.security.shiro.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.security.shiro.adoc @@ -17,7 +17,7 @@ causeway.security.shiro. + 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/pages/sections/causeway.security.spring.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.security.spring.adoc index 36e38fcec2..23841ea9cf 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.security.spring.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.security.spring.adoc @@ -16,10 +16,10 @@ include::../section-hooks/causeway.security.spring~pre.adoc[] causeway.security.spring. + allow-csrf-filters -| +| | The framework on initialization by default disables any \{@code CsrfFilter}(s) it finds with _Spring Security_ registered filters. -Setting this option to \{@literal true} allows \{@code CsrfFilter}(s) to be configured. Yet EXPERIMENTAL. @see org.springframework.security.web.csrf.CsrfFilter @see "https://www.baeldung.com/spring-security-registered-filters" +Setting this option to \{@literal true} allows \{@code CsrfFilter}(s) to be configured. Yet EXPERIMENTAL. @see ``CsrfFilter`` @see "https://www.baeldung.com/spring-security-registered-filters" diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.testing.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.testing.adoc index bd66952bc6..c0aebc28e9 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.testing.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.testing.adoc @@ -17,7 +17,7 @@ causeway.testing.fixtures. + fixture-scripts-specification. + context-class -| +| | Specifies the base package from which to search for fixture scripts. Either this or packagePrefix must be specified. This property is used by preference. @@ -31,7 +31,7 @@ causeway.testing.fixtures. + fixture-scripts-specification. + multiple-execution-strategy -| +| | Indicates whether, if a fixture script (or more precisely any other fixture scripts of the same class) is encountered more than once in a graph of dependencies, it should be executed again or skipped. The default is to fixture scripts are executed only once per class. @@ -45,7 +45,7 @@ causeway.testing.fixtures. + fixture-scripts-specification. + non-persisted-objects-strategy -| +| | Indicates whether objects that are returned as a fixture result should be automatically persisted if required (the default) or not. @@ -55,7 +55,7 @@ causeway.testing.fixtures. + fixture-scripts-specification. + package-prefix -| +| | Specifies the base package from which to search for fixture scripts. Either this or ``#getContextClass()`` must be specified; ``#getContextClass()`` is used by preference. @@ -69,7 +69,7 @@ causeway.testing.fixtures. + fixture-scripts-specification. + recreate -| +| | null @@ -79,7 +79,7 @@ causeway.testing.fixtures. + fixture-scripts-specification. + run-script-default -| +| | null @@ -88,7 +88,7 @@ run-script-default causeway.testing.fixtures. + initial-script -| +| | Indicates the fixture script class to run initially. Intended for use when prototyping against an in-memory database (but will run in production mode as well if required). diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.viewer.restfulobjects.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.viewer.restfulobjects.adoc index d68d2235c5..460f8da29d 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.viewer.restfulobjects.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.viewer.restfulobjects.adoc @@ -16,7 +16,7 @@ include::../section-hooks/causeway.viewer.restfulobjects~pre.adoc[] causeway.viewer.restfulobjects. + authentication.strategy-class-name -| +| | Defaults to ``AuthenticationStrategyBasicAuth``. @@ -25,7 +25,7 @@ authentication.strategy-class-name causeway.viewer.restfulobjects. + base-uri -| +| | If left unset (the default), then the RO viewer will use the ``UriInfo`` (injected using ``Context``) to figure out the base Uri (used to render ``href``s). This will be correct much of the time, but will almost certainly be wrong if there is a reverse proxy. @@ -38,7 +38,7 @@ If set, eg ``com/``, then this value will be used instead. causeway.viewer.restfulobjects. + honor-ui-hints -| +| | Whether to enable the ``x-ro-follow-links`` support, to minimize round trips. The RO viewer provides the capability for the client to set the optional ``x-ro-follow-links`` query parameter, as described in section 34.4 of the RO spec v1.0. If used, the resultant representation includes the result of following the associated link, but through a server-side "join", somewhat akin to GraphQL. @@ -51,7 +51,7 @@ By default this functionality is disabled, this configuration property enables t causeway.viewer.restfulobjects. + object-property-values-only -| +| | When rendering domain objects, if set the representation returned is stripped back to a minimal set, excluding links to actions and collections and with a simplified representation of an object's properties. This is disabled by default. If enabled, then the representations returned are non-standard with respect to the RO Spec v1.0. @@ -62,7 +62,7 @@ This is disabled by default. If enabled, then the representations returned are n causeway.viewer.restfulobjects. + strict-accept-checking -| +| | If set, then any unrecognised ``Accept`` headers will result in an HTTP _Not Acceptable_ response code (406). @@ -71,7 +71,7 @@ strict-accept-checking causeway.viewer.restfulobjects. + suppress-described-by-links -| +| | If set, then the representations returned will omit any links to the formal domain-type representations. @@ -80,7 +80,7 @@ suppress-described-by-links causeway.viewer.restfulobjects. + suppress-member-disabled-reason -| +| | If set, then - should there be an interaction with an action, property or collection that is disabled - then this will prevent the ``disabledReason`` reason from being added to the returned representation. This is disabled by default. If enabled, then the representations returned are non-standard with respect to the RO Spec v1.0. @@ -91,7 +91,7 @@ This is disabled by default. If enabled, then the representations returned are n causeway.viewer.restfulobjects. + suppress-member-extensions -| +| | If set, then the ``x-causeway-format`` key (under ``extensions``) for properties will be suppressed. This is disabled by default. If enabled, then the representations returned are non-standard with respect to the RO Spec v1.0. @@ -102,7 +102,7 @@ This is disabled by default. If enabled, then the representations returned are n causeway.viewer.restfulobjects. + suppress-member-id -| +| | If set, then the ``id`` key for all members will be suppressed. This is disabled by default. If enabled, then the representations returned are non-standard with respect to the RO Spec v1.0. @@ -113,7 +113,7 @@ This is disabled by default. If enabled, then the representations returned are n causeway.viewer.restfulobjects. + suppress-member-links -| +| | If set, then the detail link (in other words ``]``) for all members will be suppressed. This is disabled by default. If enabled, then the representations returned are non-standard with respect to the RO Spec v1.0. @@ -124,7 +124,7 @@ This is disabled by default. If enabled, then the representations returned are n causeway.viewer.restfulobjects. + suppress-update-link -| +| | If set, then the update link (in other words `` ]`` to perform a bulk update of an object) will be suppressed. This is disabled by default. If enabled, then the representations returned are non-standard with respect to the RO Spec v1.0. diff --git a/core/config/src/main/adoc/modules/config/pages/sections/causeway.viewer.wicket.adoc b/core/config/src/main/adoc/modules/config/pages/sections/causeway.viewer.wicket.adoc index 3dba7d2cb4..99cc315c25 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/causeway.viewer.wicket.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/causeway.viewer.wicket.adoc @@ -13,9 +13,10 @@ include::../section-hooks/causeway.viewer.wicket~pre.adoc[] |Description | [[causeway.viewer.wicket.ajax-debug-mode]] -causeway.viewer.wicket.ajax-debug-mode +causeway.viewer.wicket. + +ajax-debug-mode -| +| | Whether the Ajax debug should be shown, by default this is disabled. @@ -23,7 +24,9 @@ causeway.viewer.wicket.ajax-debug-mode [[causeway.viewer.wicket.app]] causeway.viewer.wicket.app -| +| org.apache.causeway.viewer.wicket. + +viewer.wicketapp. + +CausewayWicketApplication | Specifies the subclass of ``CausewayWicketApplication`` that is used to bootstrap Wicket. There is usually very little reason to change this from its default. @@ -34,7 +37,7 @@ There is usually very little reason to change this from its default. causeway.viewer.wicket.application. + about -| +| | Label used on the about page. @@ -43,7 +46,7 @@ about causeway.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. @@ -54,17 +57,18 @@ This is rendered on the header panel. An image with a size of 160x40 works well. causeway.viewer.wicket.application. + brand-logo-signin -| +| | Either the location of the image file (relative to the class-path resource root), or an absolute URL. -This is rendered on the sign-in page. An image with a size of 400x40 works well. If not specified, the application name is used instead. +This is rendered on the sign-in page. An image with a size of 400x40 works well. If not specified, the name is used instead. | [[causeway.viewer.wicket.application.css]] -causeway.viewer.wicket.application.css +causeway.viewer.wicket.application. + +css -| +| | URL of file to read any custom CSS, relative to ``static`` package on the class path. A typical value is ``css``. This will result in this file being read from the ``static/css`` directory (because static resources such as CSS are mounted by Spring by default under ``static`` package). @@ -75,7 +79,7 @@ A typical value is ``css``. This will result in this file being read from the `` causeway.viewer.wicket.application. + favicon-url -| +| | Specifies the URL to use of the favIcon. This is expected to be a local resource. @@ -83,9 +87,10 @@ This is expected to be a local resource. | [[causeway.viewer.wicket.application.js]] -causeway.viewer.wicket.application.js +causeway.viewer.wicket.application. + +js -| +| | URL of file to read any custom JavaScript, relative to ``static`` package on the class path. A typical value is ``js``. This will result in this file being read from the ``static/js`` directory (because static resources such as CSS are mounted by Spring by default under ``static`` package). @@ -96,7 +101,7 @@ A typical value is ``js``. This will result in this file being read from the ``s causeway.viewer.wicket.application. + menubars-layout-xml -| +| menubars.layout.xml | Specifies the file name containing the menubars. This is expected to be a local resource. @@ -107,7 +112,7 @@ This is expected to be a local resource. causeway.viewer.wicket.application. + name -| +| Apache Causeway ™ | Identifies the application on the sign-in page (unless a sign-in image is configured) and on top-left in the header (unless a header image is configured). @@ -116,7 +121,7 @@ name causeway.viewer.wicket.application. + version -| +| | The version of the application, eg 1.0, 1.1, etc. If present, then this will be shown in the footer on every page as well as on the about page. @@ -126,7 +131,7 @@ If present, then this will be shown in the footer on every page as well as on th [[causeway.viewer.wicket.base-path]] causeway.viewer.wicket.base-path -| +| /wicket/ | The base path at which the Wicket viewer is mounted. @@ -135,7 +140,7 @@ causeway.viewer.wicket.base-path causeway.viewer.wicket. + bookmarked-pages.max-size -| +| 15 | Specifies the maximum number of bookmarks to show. These are aged out on an MRU-LRU basis. @@ -146,7 +151,7 @@ These are aged out on an MRU-LRU basis. causeway.viewer.wicket. + bookmarked-pages.show-chooser -| +| true | Whether the panel providing linsk to previously visited object should be accessible from the top-left of the header. @@ -156,7 +161,7 @@ causeway.viewer.wicket. + bookmarked-pages. + show-drop-down-on-footer -| +| true | Whether the drop-down list of previously visited objects should be shown in the footer. @@ -165,7 +170,7 @@ show-drop-down-on-footer causeway.viewer.wicket.breadcrumbs. + enabled -| +| true | Whether to enable the 'where am i' feature, in other words the breadcrumbs. @@ -174,16 +179,27 @@ enabled causeway.viewer.wicket.breadcrumbs. + max-parent-chain-length -| +| 64 | null +| +[[causeway.viewer.wicket.clear-field-button-enabled]] +causeway.viewer.wicket. + +clear-field-button-enabled + +| true +| Whether the clear-field-button, that allows to clear a null-able (optional) field (a property or a dialog argument) is enabled for rendering or not. + +The default is to enable (show) the clear-field-button. + + | [[causeway.viewer.wicket.clear-original-destination]] causeway.viewer.wicket. + clear-original-destination -| +| | If the end user uses a deep link to access the Wicket viewer, but is not authenticated, then this configuration property determines whether to continue through to that original destination once authenticated, or simply to go to the home page. The default behaviour is to honour the original destination requested. @@ -193,7 +209,7 @@ The default behaviour is to honour the original destination requested. [[causeway.viewer.wicket.credit]] causeway.viewer.wicket.credit -| +| | List of organisations or individuals to give credit to, shown as links and icons in the footer. A maximum of 3 credits can be specified. IntelliJ unfortunately does not provide IDE completion for lists of classes; YMMV. @@ -206,29 +222,33 @@ NOTE: For further discussion, see for example https://stackoverflow.com/question causeway.viewer.wicket.date-picker. + max-date -| +| 2100-01-01T00:00:00.000Z | Defines the first date available in the date picker. As per http://eonasdan.github.io/bootstrap-datetimepicker/Options/#maxdate, in ISO format (per https://github.com/moment/moment/issues/1407). +Use time zone 'Z', as the date/time picker UI component is not wired up to support time-zones. + | [[causeway.viewer.wicket.date-picker.min-date]] causeway.viewer.wicket.date-picker. + min-date -| +| 1900-01-01T00:00:00.000Z | Defines the first date available in the date picker. As per http://eonasdan.github.io/bootstrap-datetimepicker/Options/#maxdate, in ISO format (per https://github.com/moment/moment/issues/1407). +Use time zone 'Z', as the date/time picker UI component is not wired up to support time-zones. + | [[causeway.viewer.wicket.development-utilities.enable]] causeway.viewer.wicket. + development-utilities.enable -| +| | Determines whether debug bar and other stuff influenced by ``DebugSettings#isDevelopmentUtilitiesEnabled()`` is enabled or not. By default, depends on the mode (prototyping = enabled, server = disabled). This property acts as an override. @@ -238,7 +258,7 @@ By default, depends on the mode (prototyping = enabled, server = disabled). This [[causeway.viewer.wicket.dialog-mode]] causeway.viewer.wicket.dialog-mode -| +| | Whether the dialog mode rendered when invoking actions on domain objects should be to use the sidebar (the default) or to use a modal dialog. This can be overridden on a case-by-case basis using ``ActionLayout#promptStyle()``. @@ -249,7 +269,7 @@ This can be overridden on a case-by-case basis using ``ActionLayout#promptStyle( causeway.viewer.wicket. + dialog-mode-for-menu -| +| | Whether the dialog mode rendered when invoking actions on domain services (that is, menus) should be to use a modal dialog (the default) or to use the sidebar panel. This can be overridden on a case-by-case basis using ``ActionLayout#promptStyle()``. @@ -257,9 +277,10 @@ This can be overridden on a case-by-case basis using ``ActionLayout#promptStyle( | [[causeway.viewer.wicket.live-reload-url]] -causeway.viewer.wicket.live-reload-url +causeway.viewer.wicket. + +live-reload-url -| +| | If specified, then is rendered on each page to enable live reload. Configuring live reload also requires an appropriate plugin to the web browser (eg see http://livereload.com/[livereload.com] and a mechanism to trigger changes, eg by watching ``xml`` files. @@ -271,7 +292,7 @@ causeway.viewer.wicket. + max-title-length-in-parented- + tables -| +| -1 | null @@ -281,7 +302,7 @@ causeway.viewer.wicket. + max-title-length-in-standalone- + tables -| +| -1 | null @@ -290,7 +311,7 @@ tables causeway.viewer.wicket. + max-title-length-in-tables -| +| 12 | The maximum number of characters to use to render the title of a domain object (alongside the icon) in any table, if not otherwise overridden by either ``#getMaxTitleLengthInParentedTables()`` or ``#getMaxTitleLengthInStandaloneTables()``. If truncated, then the remainder of the title will be replaced with ellipses (...). @@ -298,10 +319,10 @@ If truncated, then the remainder of the title will be replaced with ellipses (.. | [[causeway.viewer.wicket.message-popups.error-delay]] -causeway.viewer.wicket.message-popups. + -error-delay +causeway.viewer.wicket. + +message-popups.error-delay -| +| 0ms | How long the error popup should display before disappearing. A value of 0 (the default) means do not disappear automatically. @@ -309,10 +330,10 @@ A value of 0 (the default) means do not disappear automatically. | [[causeway.viewer.wicket.message-popups.info-delay]] -causeway.viewer.wicket.message-popups. + -info-delay +causeway.viewer.wicket. + +message-popups.info-delay -| +| 3500ms | How long the info popup should display before disappearing. A value of 0 means do not disappear automatically. @@ -320,19 +341,20 @@ A value of 0 means do not disappear automatically. | [[causeway.viewer.wicket.message-popups.offset]] -causeway.viewer.wicket.message-popups. + -offset +causeway.viewer.wicket. + +message-popups.offset -| +| 100 | How far in from the edge the popup should display | [[causeway.viewer.wicket.message-popups.placement.horizontal]] -causeway.viewer.wicket.message-popups. + -placement.horizontal +causeway.viewer.wicket. + +message-popups.placement. + +horizontal -| +| | Whether to display popups aligned ot the left or right of the page. The default is to show them aligned to the right @@ -340,10 +362,10 @@ The default is to show them aligned to the right | [[causeway.viewer.wicket.message-popups.placement.vertical]] -causeway.viewer.wicket.message-popups. + -placement.vertical +causeway.viewer.wicket. + +message-popups.placement.vertical -| +| | Whether to display popups at the top or the bottom of the page. The default is to show them at the top. @@ -351,10 +373,10 @@ The default is to show them at the top. | [[causeway.viewer.wicket.message-popups.warning-delay]] -causeway.viewer.wicket.message-popups. + -warning-delay +causeway.viewer.wicket. + +message-popups.warning-delay -| +| 0ms | How long the warning popup should display before disappearing. A value of 0 (the default) means do not disappear automatically. @@ -366,7 +388,7 @@ causeway.viewer.wicket. + prevent-double-click-for-form- + submit -| +| true | Whether to disable a form submit button after it has been clicked, to prevent users causing an error if they do a double click. This behaviour is enabled by default, but can be disabled using this flag. @@ -376,7 +398,7 @@ causeway.viewer.wicket. + prevent-double-click-for-no-arg- + action -| +| true | Whether to disable a no-arg action button after it has been clicked, to prevent users causing an error if they do a double click. This behaviour is enabled by default, but can be disabled using this flag. @@ -384,9 +406,10 @@ This behaviour is enabled by default, but can be disabled using this flag. | [[causeway.viewer.wicket.prompt-style]] -causeway.viewer.wicket.prompt-style +causeway.viewer.wicket. + +prompt-style -| +| | Whether to use a modal dialog for property edits and for actions associated with properties. This can be overridden on a case-by-case basis using ``@PropertyLayout#promptStyle`` and ``@ActionLayout#promptStyle``. @@ -399,7 +422,7 @@ This behaviour is disabled by default; the viewer will use an inline prompt in t causeway.viewer.wicket. + redirect-even-if-same-object -| +| | Whether to redirect to a new page, even if the object being shown (after an action invocation or a property edit) is the same as the previous page. This behaviour is disabled by default; the viewer will update the existing page if it can, making for a smoother user experience. If enabled then this reinstates the pre-1.15.0 behaviour of redirecting in all cases. @@ -410,7 +433,7 @@ This behaviour is disabled by default; the viewer will update the existing page causeway.viewer.wicket.remember-me. + cookie-key -| +| causewayWicketRememberMe | If the "remember me" feature is available, specifies the key to hold the encrypted credentials in the cookie. @@ -419,7 +442,7 @@ cookie-key causeway.viewer.wicket.remember-me. + encryption-key -| +| | If the "remember me" feature is available, optionally specifies an encryption key (a complex string acting as salt to the encryption algorithm) for computing the encrypted credentials. If not set, then (in production mode) the Wicket viewer will compute a random key each time it is started. This will mean that any credentials stored between sessions will become invalid. @@ -434,10 +457,10 @@ In prototype mode this setting is effectively ignored, because the same key will causeway.viewer.wicket.remember-me. + suppress -| +| | Whether the sign-in page should have a "remember me" link (the default), or if it should be suppressed. -If "remember me" is available and checked, then the viewer will allow users to login based on encrypted credentials stored in a cookie. An encryption key can optionally be specified. +If "remember me" is available and checked, then the viewer will allow users to login based on encrypted credentials stored in a cookie. An key can optionally be specified. | @@ -446,7 +469,7 @@ causeway.viewer.wicket. + replace-disabled-tag-with-readonly- + tag -| +| true | In Firefox and more recent versions of Chrome 54+, cannot copy out of disabled fields; instead we use the readonly attribute (https://www.w3.org/TR/2014/REC-html5-20141028/forms.html#the-readonly-attribute) This behaviour is enabled by default but can be disabled using this flag @@ -456,7 +479,7 @@ This behaviour is enabled by default but can be disabled using this flag [[causeway.viewer.wicket.show-footer]] causeway.viewer.wicket.show-footer -| +| true | Whether to show the footer menu bar. This is enabled by default. @@ -467,7 +490,7 @@ This is enabled by default. causeway.viewer.wicket. + strip-wicket-tags -| +| true | Whether Wicket tags should be stripped from the markup. By default this is enabled, in other words Wicket tags are stripped. Please be aware that if tags are _not_ stripped, then this may break CSS rules on some browsers. @@ -478,7 +501,7 @@ By default this is enabled, in other words Wicket tags are stripped. Please be a causeway.viewer.wicket. + suppress-password-reset -| +| | Whether to suppress the password reset link on the sign-in page. Although this is disabled by default (in other words the 'reset password' link is not suppressed), note that in addition the application must provide an implementation of the ``UserRegistrationService`` as well as a configured ``EmailNotificationService`` (same conditions as for the ``#isSuppressSignUp()`` sign-up link). @@ -489,25 +512,46 @@ Although this is disabled by default (in other words the 'reset password' link i causeway.viewer.wicket. + suppress-sign-up -| +| | Whether to suppress the sign-up link on the sign-in page. Although this is disabled by default (in other words the sign-up link is not suppressed), note that in addition the application must provide an implementation of the ``UserRegistrationService`` as well as a configured ``EmailNotificationService`` (same conditions as for the ``#isSuppressPasswordReset()`` password reset link). | -[[causeway.viewer.wicket.themes.enabled]] -causeway.viewer.wicket.themes.enabled +[[causeway.viewer.wicket.table.decoration.data-tables-net.options]] +causeway.viewer.wicket.table. + +decoration.data-tables-net.options + +| +| If specified, then the string is passed verbatim as the initialization options for the https://datatables.net table decoration (as defined by ``DomainObjectLayout#tableDecoration()`` or by ``CollectionLayout#tableDecoration()``). + +For example, a value of "info: false, pagingType: 'numbers'" will result in datatables.net being initialized using: + +.... + $(document).ready(function () { $('table.table-decoration').DataTable({ info: false, pagingType: 'numbers' }); }); +.... + +thus switching off the info panel and using the simple 'numbers' paging type. + +@see https://datatables.net/examples/basic_init/index.html + | +[[causeway.viewer.wicket.themes.enabled]] +causeway.viewer.wicket.themes. + +enabled + +| | A comma separated list of enabled theme names, as defined by https://bootswatch.com. | [[causeway.viewer.wicket.themes.initial]] -causeway.viewer.wicket.themes.initial +causeway.viewer.wicket.themes. + +initial -| +| Flatly | The initial theme to use. Expected to be in the list of ``#getEnabled()`` themes. @@ -518,7 +562,7 @@ Expected to be in the list of ``#getEnabled()`` themes. causeway.viewer.wicket.themes. + show-chooser -| +| | Whether the theme chooser widget should be available in the footer. @@ -527,7 +571,7 @@ show-chooser causeway.viewer.wicket. + use-indicator-for-form-submit -| +| true | Whether to show an indicator for a form submit button that it has been clicked. This behaviour is enabled by default. @@ -538,7 +582,7 @@ This behaviour is enabled by default. causeway.viewer.wicket. + use-indicator-for-no-arg-action -| +| true | Whether to show an indicator for a no-arg action button that it has been clicked. This behaviour is enabled by default. @@ -546,9 +590,10 @@ This behaviour is enabled by default. | [[causeway.viewer.wicket.welcome.text]] -causeway.viewer.wicket.welcome.text +causeway.viewer.wicket.welcome. + +text -| +| | Text to be displayed on the application’s home page, used as a fallback if welcome.file is not specified. If a @HomePage action exists, then that will take precedence. @@ -557,7 +602,7 @@ causeway.viewer.wicket.welcome.text causeway.viewer.wicket. + wicket-source-plugin -| +| | Whether the Wicket source plugin should be enabled; if so, the markup includes links to the Wicket source. This behaviour is disabled by default. Please be aware that enabloing it can substantially impact performance. diff --git a/core/config/src/main/adoc/modules/config/pages/sections/datanucleus.adoc b/core/config/src/main/adoc/modules/config/pages/sections/datanucleus.adoc index e8ea744c04..d5e67ba7c8 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/datanucleus.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/datanucleus.adoc @@ -35,7 +35,7 @@ For more details, see https://www.datanucleus.org/products/accessplatform_6_0/jd [[datanucleus.cache.level2.type]] datanucleus.cache.level2.type -| +| soft | Name of the type of Level 2 Cache to use. Can be used to interface with external caching products. Use "none" to turn off L2 caching; other values include "soft", "weak", "javax.cache". @@ -55,7 +55,7 @@ datanucleus.identifier.case [[datanucleus.manage-relationships]] datanucleus.manage-relationships -| +| true | Whether DataNucleus will try to manage bidirectional relations, correcting the input objects so that all relations are consistent. This process runs when flush()/commit() is called. You can set it to false if you always set both sides of a relation when persisting/updating. @@ -69,7 +69,7 @@ datanucleus. + persistence-by-reachability-at- + commit -| +| true | Whether to run the "persistence-by-reachability" algorithm at commit time. This means that objects that were reachable at a call to makePersistent() but that are no longer persistent will be removed from persistence. For performance improvements, consider turning this off. @@ -146,7 +146,7 @@ For more details, see https://www.datanucleus.org/products/accessplatform_6_0/jd datanucleus.schema. + generate-database.mode -| +| none | Whether to eagerly create all tables at startup. For integration testing, this is generally preferred to using datanucleus.schema.autoCreateAll, because the ``autoCreateAll`` will only create tables lazily, when first persisted to. While lazily initialization is potentially quicker, it can cause issues (eg with rollup mapping to super class tables). diff --git a/core/config/src/main/adoc/modules/config/pages/sections/eclipselink.adoc b/core/config/src/main/adoc/modules/config/pages/sections/eclipselink.adoc index d56736bb5f..c83c5c5245 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/eclipselink.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/eclipselink.adoc @@ -32,7 +32,7 @@ database-event-listener [[eclipselink.cache.shared]] eclipselink.cache.shared -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#CHDEJCJJ[eclipselink.cache.shared] docs @@ -40,7 +40,7 @@ eclipselink.cache.shared [[eclipselink.cache.size]] eclipselink.cache.size -| +| 100 | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#CHDIGIEC[eclipselink.cache.size] docs @@ -57,7 +57,7 @@ eclipselink.cache.type eclipselink.concurrency.manager. + allow.concurrencyexception -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#concurrency.manager.allow.concurrencyexception[eclipselink.concurrency.manager.allow.concurrencyexception] docs @@ -66,7 +66,7 @@ allow.concurrencyexception eclipselink.concurrency.manager. + allow.interruptedexception -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#concurrency.manager.allow.interruptedexception[eclipselink.concurrency.manager.allow.interruptedexception] docs @@ -75,7 +75,7 @@ allow.interruptedexception eclipselink.concurrency.manager. + allow.readlockstacktrace -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#concurrency.manager.allow.readlockstacktrace[eclipselink.concurrency.manager.allow.readlockstacktrace] docs @@ -84,7 +84,7 @@ allow.readlockstacktrace eclipselink.concurrency.manager. + maxfrequencytodumpmassivemessage -| +| 60000 | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#concurrency.manager.maxfrequencytodumptinymessage[eclipselink.concurrency.manager.maxfrequencytodumpmassivemessage] docs @@ -93,7 +93,7 @@ maxfrequencytodumpmassivemessage eclipselink.concurrency.manager. + maxfrequencytodumptinymessage -| +| 40000 | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#concurrency.manager.maxfrequencytodumptinymessage[eclipselink.concurrency.manager.maxfrequencytodumptinymessage] docs @@ -102,7 +102,7 @@ maxfrequencytodumptinymessage eclipselink.concurrency.manager. + maxsleeptime -| +| 40000 | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#concurrency.manager.maxsleeptime[eclipselink.concurrency.manager.maxsleeptime] docs @@ -128,7 +128,7 @@ create-ddl-jdbc-file-name [[eclipselink.ddl-generation]] eclipselink.ddl-generation -| +| none | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#BABHEJJI[eclipselink.ddl-generation] docs @@ -137,7 +137,7 @@ eclipselink.ddl-generation eclipselink.ddl-generation. + output-mode -| +| database | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#BABCDHBB[eclipselink.ddl-generation.output-mode] docs @@ -204,7 +204,7 @@ eclipselink.id-validation eclipselink.jdbc. + allow-native-sql-queries -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#CIHHJBFB[eclipselink.jdbc.allow-native-sql-queries] docs @@ -212,7 +212,7 @@ allow-native-sql-queries [[eclipselink.jdbc.batch-writing]] eclipselink.jdbc.batch-writing -| +| none | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#CIHIAGAF[eclipselink.jdbc.batch-writing] docs @@ -229,7 +229,7 @@ size [[eclipselink.jdbc.cache-statements]] eclipselink.jdbc.cache-statements -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#CHDHAFAA[eclipselink.jdbc.cache-statements] docs @@ -246,7 +246,7 @@ size [[eclipselink.jdbc.native-sql]] eclipselink.jdbc.native-sql -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm[eclipselink.jdbc.native-sql] docs @@ -263,7 +263,7 @@ upper-case-column-names [[eclipselink.jpql.validation]] eclipselink.jpql.validation -| +| EclipseLink | null @@ -271,7 +271,7 @@ eclipselink.jpql.validation [[eclipselink.logging.connection]] eclipselink.logging.connection -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#CHDJCBIF[eclipselink.logging.connection] docs @@ -279,7 +279,7 @@ eclipselink.logging.connection [[eclipselink.logging.exceptions]] eclipselink.logging.exceptions -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#BEIFJBIE[eclipselink.logging.exceptions] docs @@ -303,7 +303,7 @@ eclipselink.logging.level [[eclipselink.logging.session]] eclipselink.logging.session -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#BEIHGGHH[eclipselink.logging.session] @@ -311,7 +311,7 @@ eclipselink.logging.session [[eclipselink.logging.thread]] eclipselink.logging.thread -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#BEIFFGGB[eclipselink.logging.thread] @@ -319,7 +319,7 @@ eclipselink.logging.thread [[eclipselink.logging.timestamp]] eclipselink.logging.timestamp -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#BEIJCEBJ[eclipselink.logging.timestamp] @@ -327,7 +327,7 @@ eclipselink.logging.timestamp [[eclipselink.profiler]] eclipselink.profiler -| +| NoProfiler | The "``profiler``" property configures the type of profiler used to capture runtime statistics. *Allowed Values:* @@ -403,7 +403,7 @@ eclipselink.weaving [[eclipselink.weaving.changetracking]] eclipselink.weaving.changetracking -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#CHDCEEFC[eclipse.weaving.changetracking] docs @@ -419,7 +419,7 @@ eclipselink.weaving.eager [[eclipselink.weaving.fetchgroups]] eclipselink.weaving.fetchgroups -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#CHDDIFGE[eclipse.weaving.fetchgroups] docs @@ -427,7 +427,7 @@ eclipselink.weaving.fetchgroups [[eclipselink.weaving.internal]] eclipselink.weaving.internal -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#BABJICDJ[eclipse.weaving.internal] docs @@ -435,7 +435,7 @@ eclipselink.weaving.internal [[eclipselink.weaving.lazy]] eclipselink.weaving.lazy -| +| true | @see https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#BABDBIFE[eclipse.weaving.lazy] docs diff --git a/core/config/src/main/adoc/modules/config/pages/sections/resteasy.adoc b/core/config/src/main/adoc/modules/config/pages/sections/resteasy.adoc index 2fdc595c96..87573ec1e9 100644 --- a/core/config/src/main/adoc/modules/config/pages/sections/resteasy.adoc +++ b/core/config/src/main/adoc/modules/config/pages/sections/resteasy.adoc @@ -35,7 +35,7 @@ There should be very little reason to change this from its default. [[resteasy.jaxrs.default-path]] resteasy.jaxrs.default-path -| +| /restful | The path at which the RO viewer should be mounted. Note that this is used rather than ``prefix`` because there is _NO_ implementation of ``Application``, so we rely on it being automatically created. diff --git a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java index caf986e5e0..4fee76a0bc 100644 --- a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java +++ b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java @@ -790,7 +790,7 @@ public class CausewayConfiguration { * <p> * The algorithm for determining whether (and what type of) an event is actually sent depends * on the value of the {@link org.apache.causeway.applib.annotation.Action#domainEvent()} for the - * action in question: + * action in question * </p> * * <ul> diff --git a/extensions/core/excel/fixture/pom.xml b/extensions/core/excel/fixture/pom.xml index 9fbb65bf79..5b3e5837ff 100644 --- a/extensions/core/excel/fixture/pom.xml +++ b/extensions/core/excel/fixture/pom.xml @@ -97,12 +97,6 @@ under the License. <artifactId>causeway-persistence-jdo-datanucleus</artifactId> </dependency> - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - <scope>provided</scope> - </dependency> - </dependencies> </project> diff --git a/extensions/core/executionrepublisher/applib/src/main/java/org/apache/causeway/extensions/executionrepublisher/applib/contributions/ExecutionLogEntry_copyToOutbox.java b/extensions/core/executionrepublisher/applib/src/main/java/org/apache/causeway/extensions/executionrepublisher/applib/contributions/ExecutionLogEntry_copyToOutbox.java index 870b1731a6..7e5173724a 100644 --- a/extensions/core/executionrepublisher/applib/src/main/java/org/apache/causeway/extensions/executionrepublisher/applib/contributions/ExecutionLogEntry_copyToOutbox.java +++ b/extensions/core/executionrepublisher/applib/src/main/java/org/apache/causeway/extensions/executionrepublisher/applib/contributions/ExecutionLogEntry_copyToOutbox.java @@ -22,10 +22,7 @@ package org.apache.causeway.extensions.executionrepublisher.applib.contributions import javax.inject.Inject; -import org.apache.causeway.applib.annotation.Action; -import org.apache.causeway.applib.annotation.ActionLayout; -import org.apache.causeway.applib.annotation.MemberSupport; -import org.apache.causeway.applib.annotation.SemanticsOf; +import org.apache.causeway.applib.annotation.*; import org.apache.causeway.extensions.executionlog.applib.dom.ExecutionLogEntry; import org.apache.causeway.extensions.executionlog.applib.dom.ExecutionLogEntryType; import org.apache.causeway.extensions.executionoutbox.applib.dom.ExecutionOutboxEntry; @@ -80,6 +77,7 @@ public class ExecutionLogEntry_copyToOutbox { return executionLogEntry; } + @Programmatic static ExecutionOutboxEntryType map(ExecutionLogEntryType executionType) { return executionType == ExecutionLogEntryType.ACTION_INVOCATION ? ExecutionOutboxEntryType.ACTION_INVOCATION diff --git a/preview.sh b/preview.sh index 361e237725..f519e9e6b3 100644 --- a/preview.sh +++ b/preview.sh @@ -20,6 +20,29 @@ # # +BASENAME_0=$(basename $0) + +usage() { + echo "" >&2 + echo "$BASENAME_0 options: " >&2 + echo " " >&2 + echo " Skip options: " >&2 + echo " -e|-E skip|only examples " >&2 + echo " -k|-K skip|only stale example check " >&2 + echo " -b|-B skip|only mvn -pl core/config " >&2 + echo " -c|-C skip|only config doc generation " >&2 + echo " -d|-D skip|only projdoc generation " >&2 + echo " -l|-L skip|only fix adoc line endings " >&2 + echo " -a|-A skip|only Antora generation " >&2 + echo " -s|-S skip|only serving generated site " >&2 + echo "" >&2 + echo " -y skip clear project site " >&2 + echo " -z skip cache (template) " >&2 + echo "" >&2 + echo " -f antora/playbooks/site-xxx.yml " >&2 + exit 1 +} + export ANTORA_CACHE_DIR=.antora-cache-dir export ANTORA_TARGET_SITE=antora/target/site @@ -36,115 +59,132 @@ BRANCH=$(git branch --show-current) DATE=$(date +%Y%m%d-%H%M) export REVISION="${BRANCH}.${DATE}" -while getopts 'ECDAKSLecdaksxylhf:' opt + +while getopts 'bBECDAKSLecdakszylhf:' opt do case $opt in - E) export SKIP_EXAMPLES=false + E) export EXAMPLES=exec forcing=true ;; - C) export SKIP_CONFIGS=false + B) export BUILD_CONFIGS=exec forcing=true ;; - D) export SKIP_PROJDOC_GENERATION=false + C) export CONFIGS=exec forcing=true ;; - L) export SKIP_FIX_ADOC_LINE_ENDINGS=false + D) export PROJDOC_GENERATION=exec forcing=true ;; - A) export SKIP_ANTORA_GENERATION=false - export SKIP_CLEAR_CACHE=false - export SKIP_CLEAR_PREVIOUS=false + L) export FIX_ADOC_LINE_ENDINGS=exec forcing=true ;; - K) export SKIP_STALE_EXAMPLE_CHECK=false + A) export ANTORA_GENERATION=exec + export CLEAR_CACHE=exec + export CLEAR_PREVIOUS=exec forcing=true ;; - S) export SKIP_SERVE=false + K) export STALE_EXAMPLE_CHECK=exec + forcing=true ;; + S) export SERVE=exec forcing=true ;; - e) export SKIP_EXAMPLES=true ;; - c) export SKIP_CONFIGS=true ;; - d) export SKIP_PROJDOC_GENERATION=true ;; - l) export SKIP_FIX_ADOC_LINE_ENDINGS=true ;; - a) export SKIP_ANTORA_GENERATION=true - export SKIP_CLEAR_CACHE=true - export SKIP_CLEAR_PREVIOUS=true + e) export EXAMPLES=skip ;; + b) export BUILD_CONFIGS=skip ;; + c) export CONFIGS=skip ;; + d) export PROJDOC_GENERATION=skip ;; + l) export FIX_ADOC_LINE_ENDINGS=skip ;; + a) export ANTORA_GENERATION=skip + export CLEAR_CACHE=skip + export CLEAR_PREVIOUS=skip ;; - k) export SKIP_STALE_EXAMPLE_CHECK=true ;; - s) export SKIP_SERVE=true ;; + k) export STALE_EXAMPLE_CHECK=skip ;; + s) export SERVE=skip ;; + + z) export CLEAR_CACHE=skip ;; + y) export CLEAR_PREVIOUS=skip ;; - x) export SKIP_CLEAR_CACHE=true ;; - y) export SKIP_CLEAR_PREVIOUS=true ;; f) PLAYBOOK_FILE=$OPTARG ;; - h) echo "" - echo "preview.sh options:" - echo "" - echo " Skip options:" - echo " -e skip examples" - echo " -k skip stale example check" - echo " -c skip config doc generation" - echo " -d skip projdoc generation" - echo " -l skip fix adoc line endings" - echo " -a skip Antora generation" - echo " -s skip serving generated site" - echo "" - echo " Force options (override skip):" - echo " -E force examples" - echo " -K force stale example check" - echo " -C force config doc generation" - echo " -D force projdoc generation" - echo " -L force fix adoc line endings" - echo " -A force Antora generation" - echo " -S force serving generated site" - echo "" - echo " -f antora/playbooks/site-xxx.yml" + h) usage exit 1 ;; *) echo "unknown option $opt - aborting" >&2 + usage exit 1 ;; esac done if [ "$forcing" = "true" ]; then - if [ -z "$SKIP_EXAMPLES" ]; then - export SKIP_EXAMPLES=true + if [ -z "$EXAMPLES" ]; then + export EXAMPLES=skip fi - if [ -z "$SKIP_CONFIGS" ]; then - export SKIP_CONFIGS=true + if [ -z "$BUILD_CONFIGS" ]; then + export BUILD_CONFIGS=skip fi - if [ -z "$SKIP_PROJDOC_GENERATION" ]; then - export SKIP_PROJDOC_GENERATION=true + if [ -z "$CONFIGS" ]; then + export CONFIGS=skip fi - if [ -z "$SKIP_FIX_ADOC_LINE_ENDINGS" ]; then - export SKIP_FIX_ADOC_LINE_ENDINGS=true + if [ -z "$PROJDOC_GENERATION" ]; then + export PROJDOC_GENERATION=skip fi - if [ -z "$SKIP_ANTORA_GENERATION" ]; then - export SKIP_ANTORA_GENERATION=true - export SKIP_CLEAR_CACHE=true - export SKIP_CLEAR_PREVIOUS=true + if [ -z "$FIX_ADOC_LINE_ENDINGS" ]; then + export FIX_ADOC_LINE_ENDINGS=skip fi - if [ -z "$SKIP_STALE_EXAMPLE_CHECK" ]; then - export SKIP_STALE_EXAMPLE_CHECK=true + if [ -z "$ANTORA_GENERATION" ]; then + export ANTORA_GENERATION=skip + export CLEAR_CACHE=skip + export CLEAR_PREVIOUS=skip fi - if [ -z "$SKIP_SERVE" ]; then - export SKIP_SERVE=true + if [ -z "$STALE_EXAMPLE_CHECK" ]; then + export STALE_EXAMPLE_CHECK=skip + fi + if [ -z "$SERVE" ]; then + export SERVE=skip fi fi echo "" -echo "SKIP_EXAMPLES : $SKIP_EXAMPLES" -echo "SKIP_STALE_EXAMPLE_CHECK : $SKIP_STALE_EXAMPLE_CHECK" -echo "SKIP_PROJDOC_GENERATION : $SKIP_PROJDOC_GENERATION" -echo "SKIP_FIX_ADOC_LINE_ENDINGS : $SKIP_FIX_ADOC_LINE_ENDINGS" -echo "SKIP_CONFIGS : $SKIP_CONFIGS" -echo "SKIP_ANTORA_GENERATION : $SKIP_ANTORA_GENERATION" -echo "SKIP_SERVE : $SKIP_SERVE" -echo "SKIP_CLEAR_PREVIOUS (site) : $SKIP_CLEAR_PREVIOUS" -echo "SKIP_CLEAR_CACHE (template): $SKIP_SKIP_CLEAR_CACHE" +echo "-e|-E skip|only examples : $EXAMPLES" +echo "-k|-K skip|only stale example check : $STALE_EXAMPLE_CHECK" +echo "-b|-B skip|only mvn -pl core/config : $BUILD_CONFIGS" +echo "-c|-C skip|only configs : $CONFIGS" +echo "-d|-D skip|only projdoc generation : $PROJDOC_GENERATION" +echo "-l|-L skip|only fix adoc line endings : $FIX_ADOC_LINE_ENDINGS" +echo "-a|-A skip|only antora generation : $ANTORA_GENERATION" +echo "-s|-S skip|only serve : $SERVE" +echo "-y skip clearing previous site : $CLEAR_PREVIOUS" +echo "-z skip clear cache (template) : $CLEAR_CACHE" echo "" -if [[ "$SKIP_CLEAR_CACHE" == "true" ]]; then +if [[ "$EXAMPLES" == "skip" ]]; then + export SKIP_EXAMPLES=true +fi +if [[ "$CONFIGS" == "skip" ]]; then + export SKIP_CONFIGS=true +fi +if [[ "$STALE_EXAMPLE_CHECK" == "skip" ]]; then + export SKIP_STALE_EXAMPLE_CHECK=true +fi +if [[ "$PROJDOC_GENERATION" == "skip" ]]; then + export SKIP_PROJDOC_GENERATION=true +fi +if [[ "$FIX_ADOC_LINE_ENDINGS" == "skip" ]]; then + export SKIP_FIX_ADOC_LINE_ENDINGS=true +fi +if [[ "$ANTORA_GENERATION" == "skip" ]]; then + export SKIP_ANTORA_GENERATION=true +fi +if [[ "$SERVE" == "skip" ]]; then + export SKIP_SERVE=true +fi + +if [[ "$BUILD_CONFIGS" == "skip" ]]; then + echo "skipping mvn -pl core/config" +else + mvn clean install -pl core/config +fi + +if [[ "$CLEAR_CACHE" == "skip" ]]; then echo "skipping clearing the Antora cache" else rm -rf $ANTORA_CACHE_DIR fi -if [[ "$SKIP_CLEAR_PREVIOUS" == "true" ]]; then +if [[ "$CLEAR_PREVIOUS" == "skip" ]]; then echo "skipping clearing any previous build site" else rm -rf $ANTORA_TARGET_SITE @@ -161,7 +201,7 @@ SECONDS=0 echo "\$PLAYBOOK_FILE = $PLAYBOOK_FILE" bash build-site.sh $PLAYBOOK_FILE || exit 1 -if [[ "$SKIP_SERVE" == "true" ]]; then +if [[ "$SERVE" == "skip" ]]; then echo "skipping serving" else echo "" diff --git a/scripts/ci/_adoc-gen-config.sh b/scripts/ci/_adoc-gen-config.sh index 878b7dc13f..153a9bd862 100644 --- a/scripts/ci/_adoc-gen-config.sh +++ b/scripts/ci/_adoc-gen-config.sh @@ -46,13 +46,14 @@ echo "" echo "\$GROOVY_CMD : ${GROOVY_CMD}" echo "\$DOS2UNIX_CMD : ${DOS2UNIX_CMD}" echo "" - -# for now meant to run with nightly builds only + +# for now meant to run with nightly builds only if [ -z "${GROOVY_CMD}" ]; then echo "doc gen: no groovy, skipping" else if [ ! -f "$PROJECT_ROOT_PATH/core/config/target/classes/META-INF/spring-configuration-metadata.json" ]; then echo "doc gen: no spring-configuration-metadata.json to parse: skipping" + echo " $PROJECT_ROOT_PATH/core/config/target/classes/META-INF/spring-configuration-metadata.json" else # generate automated site content (adoc files) echo "doc gen: generating config .adoc from Spring metadata ..."
