You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2019/11/18 09:08:13 UTC
[isis] branch master updated (876e1e0 -> 71e3e5c)
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git.
from 876e1e0 ISIS-1297: reverts hello world app to use shiro
new 8b71ae8 ISIS-2062: tidying up refguide and userguide docs.
new b0c90bd ISIS-2062: reorganises security guide
new 71e3e5c ISIS-2062: fixes nav bar for secman modules
The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../refguide/modules/ROOT/pages/about.adoc | 2 +-
.../refguide/modules/ROOT/partials/module-nav.adoc | 1 -
.../security/modules/ROOT/pages/about.adoc | 10 +-
...c => domain-services-api-for-applications.adoc} | 3 +-
.../modules/ROOT/partials/component-nav.adoc | 5 +
.../security/modules/ROOT/partials/module-nav.adoc | 3 +-
antora/components/userguide/modules/ROOT/nav.adoc | 1 -
.../userguide/modules/ROOT/pages/about.adoc | 13 +-
.../userguide/modules/btb/pages/about.adoc | 2 +-
.../pages/programming-model/custom-validator.adoc | 2 +-
.../userguide/modules/fun/pages/about.adoc | 3 +-
core/applib/src/main/_adoc/antora.yml | 2 -
.../main/_adoc/modules/applib-ant/_attributes.adoc | 6 -
.../_adoc/modules/applib-ant/attachments/.gitkeep | 0
.../_adoc/modules/applib-ant/examples/.gitkeep | 0
.../main/_adoc/modules/applib-ant/images/.gitkeep | 0
.../ActionLayout/bookmarking.png | Bin 93128 -> 0 bytes
.../ActionLayout/position-BELOW.png | Bin 8122 -> 0 bytes
.../ActionLayout/position-PANEL.png | Bin 6912 -> 0 bytes
.../ActionLayout/position-PANEL_DROPDOWN.png | Bin 9009 -> 0 bytes
.../ActionLayout/position-RIGHT.png | Bin 9430 -> 0 bytes
.../CollectionLayout/sortedby-dependencies.png | Bin 23917 -> 0 bytes
.../DomainObjectLayout/bookmarking-nested.png | Bin 103969 -> 0 bytes
.../DomainObjectLayout/bookmarking.png | Bin 93128 -> 0 bytes
.../DomainServiceLayout/menuBar-primary.png | Bin 115609 -> 0 bytes
.../DomainServiceLayout/menuBar-secondary.png | Bin 124133 -> 0 bytes
.../DomainServiceLayout/menuBar-tertiary.png | Bin 112894 -> 0 bytes
.../DomainServiceLayout/menuOrder.png | Bin 44876 -> 0 bytes
.../reference-annotations/HomePage/HomePage.png | Bin 134848 -> 0 bytes
.../PropertyLayout/labelPosition-LEFT.png | Bin 1534 -> 0 bytes
.../PropertyLayout/labelPosition-NONE.png | Bin 3367 -> 0 bytes
.../PropertyLayout/labelPosition-TOP.png | Bin 2355 -> 0 bytes
.../PropertyLayout/labelPosition-boolean-LEFT.png | Bin 6037 -> 0 bytes
.../PropertyLayout/labelPosition-boolean-RIGHT.png | Bin 5818 -> 0 bytes
.../src/main/_adoc/modules/applib-ant/nav.adoc | 1 -
.../_adoc/modules/applib-ant/pages/Action.adoc | 144 -------
.../applib-ant/pages/Action/_attributes.adoc | 4 -
.../applib-ant/pages/Action/associateWith.adoc | 67 ----
.../modules/applib-ant/pages/Action/command.adoc | 419 ---------------------
.../applib-ant/pages/Action/domainEvent.adoc | 195 ----------
.../modules/applib-ant/pages/Action/hidden.adoc | 57 ---
.../modules/applib-ant/pages/Action/invokeOn.adoc | 64 ----
.../applib-ant/pages/Action/publishing.adoc | 57 ---
.../applib-ant/pages/Action/restrictTo.adoc | 30 --
.../modules/applib-ant/pages/Action/semantics.adoc | 91 -----
.../modules/applib-ant/pages/Action/typeOf.adoc | 37 --
.../modules/applib-ant/pages/ActionLayout.adoc | 121 ------
.../applib-ant/pages/ActionLayout/_attributes.adoc | 4 -
.../applib-ant/pages/ActionLayout/bookmarking.adoc | 60 ---
.../pages/ActionLayout/contributedAs.adoc | 54 ---
.../applib-ant/pages/ActionLayout/cssClass.adoc | 44 ---
.../applib-ant/pages/ActionLayout/cssClassFa.adoc | 43 ---
.../applib-ant/pages/ActionLayout/describedAs.adoc | 40 --
.../applib-ant/pages/ActionLayout/hidden.adoc | 61 ---
.../applib-ant/pages/ActionLayout/named.adoc | 48 ---
.../applib-ant/pages/ActionLayout/position.adoc | 74 ----
.../applib-ant/pages/ActionLayout/promptStyle.adoc | 62 ---
.../applib-ant/pages/ActionLayout/redirect.adoc | 62 ---
.../_adoc/modules/applib-ant/pages/Collection.adoc | 103 -----
.../applib-ant/pages/Collection/_attributes.adoc | 4 -
.../applib-ant/pages/Collection/domainEvent.adoc | 177 ---------
.../applib-ant/pages/Collection/editing.adoc | 58 ---
.../applib-ant/pages/Collection/hidden.adoc | 63 ----
.../applib-ant/pages/Collection/notPersisted.adoc | 63 ----
.../applib-ant/pages/Collection/typeOf.adoc | 30 --
.../modules/applib-ant/pages/CollectionLayout.adoc | 117 ------
.../pages/CollectionLayout/_attributes.adoc | 4 -
.../pages/CollectionLayout/cssClass.adoc | 41 --
.../pages/CollectionLayout/defaultView.adoc | 39 --
.../pages/CollectionLayout/describedAs.adoc | 31 --
.../applib-ant/pages/CollectionLayout/hidden.adoc | 63 ----
.../applib-ant/pages/CollectionLayout/named.adoc | 55 ---
.../applib-ant/pages/CollectionLayout/paged.adoc | 46 ---
.../pages/CollectionLayout/sortedBy.adoc | 50 ---
.../_adoc/modules/applib-ant/pages/Column.adoc | 151 --------
.../_adoc/modules/applib-ant/pages/Digits.adoc | 33 --
.../modules/applib-ant/pages/Discriminator.adoc | 72 ----
.../modules/applib-ant/pages/DomainObject.adoc | 151 --------
.../applib-ant/pages/DomainObject/_attributes.adoc | 4 -
.../pages/DomainObject/actionDomainEvent.adoc | 45 ---
.../applib-ant/pages/DomainObject/auditing.adoc | 38 --
.../pages/DomainObject/autoCompleteRepository.adoc | 102 -----
.../applib-ant/pages/DomainObject/bounding.adoc | 40 --
.../pages/DomainObject/collectionDomainEvent.adoc | 62 ---
.../pages/DomainObject/createdLifecycleEvent.adoc | 108 ------
.../applib-ant/pages/DomainObject/editing.adoc | 61 ---
.../pages/DomainObject/loadedLifecycleEvent.adoc | 100 -----
.../applib-ant/pages/DomainObject/mixinMethod.adoc | 40 --
.../applib-ant/pages/DomainObject/nature.adoc | 80 ----
.../applib-ant/pages/DomainObject/objectType.adoc | 64 ----
.../DomainObject/persistedLifecycleEvent.adoc | 107 ------
.../DomainObject/persistingLifecycleEvent.adoc | 108 ------
.../pages/DomainObject/propertyDomainEvent.adoc | 62 ---
.../applib-ant/pages/DomainObject/publishing.adoc | 54 ---
.../pages/DomainObject/removingLifecycleEvent.adoc | 109 ------
.../pages/DomainObject/updatedLifecycleEvent.adoc | 107 ------
.../pages/DomainObject/updatingLifecycleEvent.adoc | 109 ------
.../applib-ant/pages/DomainObjectLayout.adoc | 135 -------
.../pages/DomainObjectLayout/_attributes.adoc | 4 -
.../pages/DomainObjectLayout/bookmarking.adoc | 71 ----
.../pages/DomainObjectLayout/cssClass.adoc | 43 ---
.../pages/DomainObjectLayout/cssClassFa.adoc | 45 ---
.../pages/DomainObjectLayout/cssClassUiEvent.adoc | 124 ------
.../pages/DomainObjectLayout/describedAs.adoc | 34 --
.../pages/DomainObjectLayout/iconUiEvent.adoc | 119 ------
.../pages/DomainObjectLayout/layoutUiEvent.adoc | 118 ------
.../applib-ant/pages/DomainObjectLayout/named.adoc | 49 ---
.../applib-ant/pages/DomainObjectLayout/paged.adoc | 42 ---
.../pages/DomainObjectLayout/plural.adoc | 27 --
.../pages/DomainObjectLayout/titleUiEvent.adoc | 117 ------
.../modules/applib-ant/pages/DomainService.adoc | 70 ----
.../pages/DomainService/_attributes.adoc | 4 -
.../applib-ant/pages/DomainService/nature.adoc | 94 -----
.../applib-ant/pages/DomainService/objectType.adoc | 58 ---
.../pages/DomainService/repositoryFor.adoc | 26 --
.../applib-ant/pages/DomainServiceLayout.adoc | 76 ----
.../pages/DomainServiceLayout/_attributes.adoc | 4 -
.../pages/DomainServiceLayout/menuBar.adoc | 43 ---
.../pages/DomainServiceLayout/menuOrder.adoc | 69 ----
.../pages/DomainServiceLayout/named.adoc | 41 --
.../_adoc/modules/applib-ant/pages/Facets.adoc | 13 -
.../_adoc/modules/applib-ant/pages/HomePage.adoc | 50 ---
.../_adoc/modules/applib-ant/pages/Inject.adoc | 145 -------
.../applib-ant/pages/MemberGroupLayout.adoc | 17 -
.../modules/applib-ant/pages/MemberOrder.adoc | 26 --
.../applib-ant/pages/MemberOrder/_attributes.adoc | 4 -
.../modules/applib-ant/pages/MemberOrder/name.adoc | 13 -
.../applib-ant/pages/MemberOrder/sequence.adoc | 12 -
.../_adoc/modules/applib-ant/pages/MinLength.adoc | 28 --
.../main/_adoc/modules/applib-ant/pages/Mixin.adoc | 38 --
.../applib-ant/pages/Mixin/_attributes.adoc | 4 -
.../modules/applib-ant/pages/Mixin/method.adoc | 41 --
.../modules/applib-ant/pages/NotPersistent.adoc | 16 -
.../_adoc/modules/applib-ant/pages/Nullable.adoc | 52 ---
.../_adoc/modules/applib-ant/pages/Parameter.adoc | 98 -----
.../applib-ant/pages/Parameter/_attributes.adoc | 4 -
.../applib-ant/pages/Parameter/fileAccept.adoc | 37 --
.../applib-ant/pages/Parameter/maxLength.adoc | 35 --
.../applib-ant/pages/Parameter/mustSatisfy.adoc | 65 ----
.../applib-ant/pages/Parameter/optionality.adoc | 42 ---
.../applib-ant/pages/Parameter/regexPattern.adoc | 42 ---
.../modules/applib-ant/pages/ParameterLayout.adoc | 117 ------
.../pages/ParameterLayout/_attributes.adoc | 4 -
.../applib-ant/pages/ParameterLayout/cssClass.adoc | 40 --
.../pages/ParameterLayout/describedAs.adoc | 32 --
.../pages/ParameterLayout/labelPosition.adoc | 45 ---
.../pages/ParameterLayout/multiLine.adoc | 32 --
.../applib-ant/pages/ParameterLayout/named.adoc | 60 ---
.../pages/ParameterLayout/renderedAsDayBefore.adoc | 42 ---
.../pages/ParameterLayout/typicalLength.adoc | 39 --
.../_adoc/modules/applib-ant/pages/Pattern.adoc | 51 ---
.../applib-ant/pages/PersistenceCapable.adoc | 102 -----
.../modules/applib-ant/pages/PostConstruct.adoc | 45 ---
.../_adoc/modules/applib-ant/pages/PreDestroy.adoc | 51 ---
.../_adoc/modules/applib-ant/pages/PrimaryKey.adoc | 19 -
.../modules/applib-ant/pages/Programmatic.adoc | 25 --
.../_adoc/modules/applib-ant/pages/Property.adoc | 183 ---------
.../applib-ant/pages/Property/_attributes.adoc | 4 -
.../modules/applib-ant/pages/Property/command.adoc | 268 -------------
.../applib-ant/pages/Property/domainEvent.adoc | 161 --------
.../modules/applib-ant/pages/Property/editing.adoc | 49 ---
.../applib-ant/pages/Property/fileAccept.adoc | 34 --
.../modules/applib-ant/pages/Property/hidden.adoc | 77 ----
.../applib-ant/pages/Property/maxLength.adoc | 57 ---
.../applib-ant/pages/Property/mustSatisfy.adoc | 59 ---
.../applib-ant/pages/Property/notPersisted.adoc | 69 ----
.../applib-ant/pages/Property/optionality.adoc | 144 -------
.../applib-ant/pages/Property/projecting.adoc | 39 --
.../applib-ant/pages/Property/publishing.adoc | 54 ---
.../applib-ant/pages/Property/regexPattern.adoc | 39 --
.../modules/applib-ant/pages/PropertyLayout.adoc | 153 --------
.../pages/PropertyLayout/_attributes.adoc | 4 -
.../applib-ant/pages/PropertyLayout/cssClass.adoc | 39 --
.../pages/PropertyLayout/describedAs.adoc | 25 --
.../applib-ant/pages/PropertyLayout/hidden.adoc | 81 ----
.../pages/PropertyLayout/labelPosition.adoc | 94 -----
.../applib-ant/pages/PropertyLayout/multiLine.adoc | 35 --
.../applib-ant/pages/PropertyLayout/named.adoc | 54 ---
.../applib-ant/pages/PropertyLayout/navigable.adoc | 26 --
.../pages/PropertyLayout/promptStyle.adoc | 29 --
.../pages/PropertyLayout/renderedAsDayBefore.adoc | 46 ---
.../pages/PropertyLayout/typicalLength.adoc | 31 --
.../pages/PropertyLayout/unchanging.adoc | 34 --
.../modules/applib-ant/pages/RequestScoped.adoc | 48 ---
.../main/_adoc/modules/applib-ant/pages/Title.adoc | 57 ---
.../_adoc/modules/applib-ant/pages/ViewModel.adoc | 70 ----
.../applib-ant/pages/ViewModel/_attributes.adoc | 4 -
.../applib-ant/pages/ViewModel/objectType.adoc | 64 ----
.../modules/applib-ant/pages/ViewModelLayout.adoc | 123 ------
.../pages/ViewModelLayout/_attributes.adoc | 4 -
.../pages/ViewModelLayout/bookmarking.adoc | 12 -
.../applib-ant/pages/ViewModelLayout/cssClass.adoc | 11 -
.../pages/ViewModelLayout/cssClassFa.adoc | 13 -
.../pages/ViewModelLayout/cssClassUiEvent.adoc | 12 -
.../pages/ViewModelLayout/describedAs.adoc | 11 -
.../pages/ViewModelLayout/iconUiEvent.adoc | 15 -
.../pages/ViewModelLayout/layoutUiEvent.adoc | 12 -
.../applib-ant/pages/ViewModelLayout/named.adoc | 11 -
.../applib-ant/pages/ViewModelLayout/paged.adoc | 10 -
.../applib-ant/pages/ViewModelLayout/plural.adoc | 15 -
.../pages/ViewModelLayout/titleUiEvent.adoc | 12 -
.../applib-ant/pages/XmlJavaTypeAdapter.adoc | 25 --
.../modules/applib-ant/pages/XmlRootElement.adoc | 66 ----
.../modules/applib-ant/pages/_attributes.adoc | 4 -
.../main/_adoc/modules/applib-ant/pages/aaa.adoc | 15 -
.../modules/applib-ant/pages/aaa/_attributes.adoc | 4 -
.../_adoc/modules/applib-ant/pages/aaa/jdo.adoc | 113 ------
.../_adoc/modules/applib-ant/pages/aaa/jee.adoc | 86 -----
.../_adoc/modules/applib-ant/pages/aaa/main.adoc | 103 -----
.../_adoc/modules/applib-ant/pages/aaa/other.adoc | 51 ---
.../modules/applib-ant/pages/aaa/partial.adoc | 66 ----
.../main/_adoc/modules/applib-ant/pages/about.adoc | 29 --
.../modules/applib-ant/partials/_attributes.adoc | 4 -
.../modules/applib-ant/partials/module-nav.adoc | 40 --
.../main/_adoc/modules/applib-cm/_attributes.adoc | 6 -
.../_adoc/modules/applib-cm/attachments/.gitkeep | 0
.../main/_adoc/modules/applib-cm/examples/.gitkeep | 0
.../reference-classes/issue-in-more-detail.png | Bin 7905 -> 0 bytes
.../prefixes/choices/dependent.png | Bin 71875 -> 0 bytes
.../reserved/cssClass/strikethrough.png | Bin 134835 -> 0 bytes
.../reserved/iconName/differing.pdn | Bin 28973 -> 0 bytes
.../reserved/iconName/differing.png | Bin 9326 -> 0 bytes
.../reserved/iconName/png-files.png | Bin 2843 -> 0 bytes
.../applib-cm/images/value-types/markup.png | Bin 19232 -> 0 bytes
.../src/main/_adoc/modules/applib-cm/nav.adoc | 1 -
.../_adoc/modules/applib-cm/pages/_attributes.adoc | 4 -
.../main/_adoc/modules/applib-cm/pages/about.adoc | 11 -
.../_adoc/modules/applib-cm/pages/classes.adoc | 25 --
.../_adoc/modules/applib-cm/pages/methods.adoc | 15 -
.../applib-cm/pages/methods/_attributes.adoc | 4 -
.../modules/applib-cm/pages/methods/lifecycle.adoc | 63 ----
.../pages/methods/lifecycle/_attributes.adoc | 4 -
.../applib-cm/pages/methods/lifecycle/jdo-api.adoc | 52 ---
.../pages/methods/lifecycle/persisted.adoc | 15 -
.../pages/methods/lifecycle/persisting.adoc | 15 -
.../applib-cm/pages/methods/lifecycle/removed.adoc | 15 -
.../pages/methods/lifecycle/removing.adoc | 15 -
.../applib-cm/pages/methods/lifecycle/updated.adoc | 17 -
.../pages/methods/lifecycle/updating.adoc | 14 -
.../modules/applib-cm/pages/methods/prefixes.adoc | 217 -----------
.../modules/applib-cm/pages/methods/reserved.adoc | 52 ---
.../main/_adoc/modules/applib-cm/pages/rgcms.adoc | 7 -
.../modules/applib-cm/partials/_attributes.adoc | 4 -
.../modules/applib-cm/partials/module-nav.adoc | 6 -
.../main/_adoc/modules/applib-svc/_attributes.adoc | 6 -
.../_adoc/modules/applib-svc/attachments/.gitkeep | 0
.../_adoc/modules/applib-svc/examples/.gitkeep | 0
.../reference-services-api/acceptheaderservice.png | Bin 10997 -> 0 bytes
.../acceptheaderservice.pptx | Bin 46935 -> 0 bytes
.../ErrorReportingService/kitchensink-example.png | Bin 180602 -> 0 bytes
.../action-invocation-published-to-stderr.png | Bin 22377 -> 0 bytes
.../changed-object-published-to-stderr.png | Bin 16645 -> 0 bytes
.../PublishingService/yuml.me-23db58a4.png | Bin 96892 -> 0 bytes
.../UserProfileService/todoapp.png | Bin 65234 -> 0 bytes
.../images/reference-services/categories.png | Bin 35572 -> 0 bytes
.../images/reference-services/categories.pptx | Bin 41617 -> 0 bytes
.../reference-services/commands-and-events.png | Bin 88211 -> 0 bytes
.../reference-services/commands-and-events.pptx | Bin 43798 -> 0 bytes
.../src/main/_adoc/modules/applib-svc/nav.adoc | 1 -
.../modules/applib-svc/pages/_attributes.adoc | 4 -
.../main/_adoc/modules/applib-svc/pages/about.adoc | 12 -
.../applib-svc/pages/application-layer-api.adoc | 161 --------
.../ActionInvocationContext.adoc | 102 -----
.../application-layer-api/BackgroundService.adoc | 121 ------
.../BackgroundCommandExecution.adoc | 25 --
.../BackgroundService/Quartz.adoc | 165 --------
.../BackgroundService/_attributes.adoc | 4 -
.../application-layer-api/CommandContext.adoc | 222 -----------
.../CommandExecutorService.adoc | 45 ---
.../application-layer-api/DtoMappingHelper.adoc | 27 --
.../application-layer-api/InteractionContext.adoc | 202 ----------
.../application-layer-api/MessageService.adoc | 65 ----
.../SessionManagementService.adoc | 47 ---
.../pages/application-layer-api/TitleService.adoc | 57 ---
.../application-layer-api/TransactionService.adoc | 118 ------
.../application-layer-api/WrapperFactory.adoc | 189 ----------
.../pages/application-layer-api/_attributes.adoc | 4 -
.../applib-svc/pages/application-layer-spi.adoc | 83 ----
.../BackgroundCommandService.adoc | 107 ------
.../application-layer-spi/CommandService.adoc | 108 ------
.../application-layer-spi/HealthCheckService.adoc | 55 ---
.../HomePageProviderService.adoc | 31 --
.../pages/application-layer-spi/_attributes.adoc | 4 -
.../applib-svc/pages/bootstrapping-spi.adoc | 46 ---
.../bootstrapping-spi/ClassDiscoveryService.adoc | 54 ---
.../pages/bootstrapping-spi/_attributes.adoc | 4 -
.../modules/applib-svc/pages/core-domain-api.adoc | 109 ------
.../pages/core-domain-api/ClockService.adoc | 104 -----
.../core-domain-api/ConfigurationService.adoc | 81 ----
.../pages/core-domain-api/EventBusService.adoc | 418 --------------------
.../pages/core-domain-api/FactoryService.adoc | 63 ----
.../pages/core-domain-api/Scratchpad.adoc | 115 ------
.../pages/core-domain-api/UserService.adoc | 66 ----
.../pages/core-domain-api/_attributes.adoc | 4 -
.../modules/applib-svc/pages/integration-api.adoc | 94 -----
.../pages/integration-api/BookmarkService.adoc | 114 ------
.../pages/integration-api/EmailService.adoc | 246 ------------
.../pages/integration-api/JaxbService.adoc | 57 ---
.../pages/integration-api/MementoService.adoc | 124 ------
.../pages/integration-api/XmlSnapshotService.adoc | 208 ----------
.../pages/integration-api/_attributes.adoc | 4 -
.../main/_adoc/modules/applib-svc/pages/intro.adoc | 205 ----------
.../modules/applib-svc/pages/metadata-api.adoc | 95 -----
.../metadata-api/ApplicationFeatureRepository.adoc | 76 ----
.../pages/metadata-api/LayoutService.adoc | 103 -----
.../pages/metadata-api/MetamodelService.adoc | 90 -----
.../pages/metadata-api/ServiceRegistry.adoc | 57 ---
.../pages/metadata-api/SwaggerService.adoc | 69 ----
.../applib-svc/pages/metadata-api/_attributes.adoc | 4 -
.../applib-svc/pages/persistence-layer-api.adoc | 86 -----
.../pages/persistence-layer-api/H2ManagerMenu.adoc | 91 -----
.../persistence-layer-api/HsqlDbManagerMenu.adoc | 45 ---
.../persistence-layer-api/IsisJdoSupport.adoc | 282 --------------
.../persistence-layer-api/MetricsService.adoc | 40 --
.../persistence-layer-api/QueryResultsCache.adoc | 115 ------
.../persistence-layer-api/RepositoryService.adoc | 271 -------------
.../pages/persistence-layer-api/_attributes.adoc | 4 -
.../applib-svc/pages/persistence-layer-spi.adoc | 82 ----
.../persistence-layer-spi/AuditerService.adoc | 109 ------
.../persistence-layer-spi/PublisherService.adoc | 134 -------
.../UserRegistrationService.adoc | 94 -----
.../pages/persistence-layer-spi/_attributes.adoc | 4 -
.../applib-svc/pages/presentation-layer-api.adoc | 76 ----
.../AcceptHeaderService.adoc | 65 ----
.../presentation-layer-api/BookmarkUiService.adoc | 32 --
.../ConfigurationViewService.adoc | 9 -
.../presentation-layer-api/DeepLinkService.adoc | 38 --
.../presentation-layer-api/GuiceBeanProvider.adoc | 88 -----
.../pages/presentation-layer-api/_attributes.adoc | 4 -
.../applib-svc/pages/presentation-layer-spi.adoc | 201 ----------
.../ContentMappingService.adoc | 79 ----
.../EmailNotificationService.adoc | 68 ----
.../ErrorReportingService.adoc | 107 ------
.../ExceptionRecognizer.adoc | 150 --------
.../presentation-layer-spi/GridLoaderService.adoc | 42 ---
.../pages/presentation-layer-spi/GridService.adoc | 72 ----
.../presentation-layer-spi/GridSystemService.adoc | 64 ----
.../pages/presentation-layer-spi/HintStore.adoc | 100 -----
.../presentation-layer-spi/LocaleProvider.adoc | 58 ---
.../MenuBarsLoaderService.adoc | 32 --
.../presentation-layer-spi/MenuBarsService.adoc | 35 --
.../presentation-layer-spi/RoutingService.adoc | 71 ----
.../SessionLoggingService.adoc | 41 --
.../TableColumnOrderService.adoc | 47 ---
.../presentation-layer-spi/TranslationService.adoc | 103 -----
.../TranslationsResolver.adoc | 54 ---
.../presentation-layer-spi/UrlEncodingService.adoc | 50 ---
.../presentation-layer-spi/UserProfileService.adoc | 48 ---
.../pages/presentation-layer-spi/_attributes.adoc | 4 -
.../_adoc/modules/applib-svc/pages/testing.adoc | 106 ------
.../pages/testing/ExecutionParametersService.adoc | 29 --
.../applib-svc/pages/testing/FixtureScripts.adoc | 62 ---
.../FixtureScriptsSpecificationProvider.adoc | 71 ----
.../applib-svc/pages/testing/SudoService.adoc | 126 -------
.../pages/testing/SwitchUserService.adoc | 41 --
.../modules/applib-svc/partials/_attributes.adoc | 4 -
.../modules/applib-svc/partials/module-nav.adoc | 120 ------
.../src/main/doc/modules/applib-ant/pages/aaa.adoc | 15 -
.../main/doc/modules/applib-ant/pages/about.adoc | 10 +-
.../pages/{aaa => about}/_attributes.adoc | 0
.../applib-ant/pages/{aaa => about}/jdo.adoc | 0
.../applib-ant/pages/{aaa => about}/jee.adoc | 0
.../applib-ant/pages/{aaa => about}/main.adoc | 0
.../applib-ant/pages/{aaa => about}/other.adoc | 0
.../applib-ant/pages/{aaa => about}/partial.adoc | 0
.../modules/applib-ant/partials/module-nav.adoc | 1 -
.../main/doc/modules/applib-cm/pages/rgcms.adoc | 2 +-
.../main/doc/modules/applib-svc/pages/about.adoc | 198 ++++++++++
.../main/doc/modules/applib-svc/pages/intro.adoc | 205 ----------
.../modules/applib-svc/partials/module-nav.adoc | 4 -
.../src/main/doc/modules/config/pages/about.adoc | 21 +-
.../modules/config/pages/configuration-files.adoc | 2 +
.../doc/modules/config/pages/configuring-core.adoc | 6 +-
.../config/pages/specifying-components.adoc | 2 +-
.../src/main/doc/modules/schema/pages/about.adoc | 3 +
.../src/main/doc/modules/bypass/pages/about.adoc | 20 +
.../pages/configuring-isis-to-use-bypass.adoc | 22 --
.../doc/modules/bypass/partials/module-nav.adoc | 3 +-
.../src/main/doc/modules/keycloak/pages/about.adoc | 2 +-
.../doc/modules/shiro-realm-jdbc/_attributes.adoc | 6 -
.../modules/shiro-realm-jdbc/attachments/.gitkeep | 0
.../doc/modules/shiro-realm-jdbc/examples/.gitkeep | 0
.../configure-shiro-to-use-custom-jdbc-realm.png | Bin 33149 -> 0 bytes
.../src/main/doc/modules/shiro-realm-jdbc/nav.adoc | 1 -
.../shiro-realm-jdbc/pages/_attributes.adoc | 4 -
.../shiro-realm-jdbc/partials/_attributes.adoc | 4 -
.../shiro-realm-jdbc/partials/module-nav.adoc | 1 -
.../images/activeds-ldap-groups.png | Bin 128224 -> 0 bytes
.../images/activeds-ldap-mojo-partition.png | Bin 123256 -> 0 bytes
.../images/activeds-ldap-mojo-root-dse.png | Bin 113723 -> 0 bytes
.../images/activeds-ldap-sasl-authentication.png | Bin 119544 -> 0 bytes
.../images/activeds-ldap-users.png | Bin 123030 -> 0 bytes
.../configure-shiro-to-use-isis-ldap-realm.PNG | Bin 32310 -> 0 bytes
.../shiro-realm-ldap/partials/module-nav.adoc | 2 +-
.../configure-isis-to-use-shiro.png | Bin
.../ini/configure-shiro-to-use-ini-realm.png} | Bin
.../configure-shiro-to-use-custom-jdbc-realm.png | Bin
.../configure-shiro-to-use-isis-ldap-realm.png} | Bin
.../src/main/doc/modules/shiro/pages/about.adoc | 10 +
.../modules/shiro/pages/about}/_attributes.adoc | 0
.../{ => about}/configuring-isis-to-use-shiro.adoc | 2 +-
.../{ => about}/enhanced-wildcard-permission.adoc | 0
.../modules/shiro/pages/{ => about}/ini-realm.adoc | 2 +-
.../pages/about/jdbc-realm.adoc} | 2 +-
.../pages/about/ldap-realm.adoc} | 12 +-
.../modules/shiro/pages/{ => about}/run-as.adoc | 0
.../shiro/pages/{ => about}/shiro-caching.adoc | 0
.../doc/modules/shiro/partials/module-nav.adoc | 10 +-
extensions/security/secman/src/main/doc/antora.yml | 2 +-
.../main/doc/modules/ROOT/partials/module-nav.adoc | 1 -
preview-scratch.sh | 2 +-
preview.sh | 2 +-
site-scratch.yml | 46 +--
413 files changed, 315 insertions(+), 19641 deletions(-)
rename antora/components/security/modules/ROOT/pages/{api-for-applications.adoc => domain-services-api-for-applications.adoc} (98%)
delete mode 100644 core/applib/src/main/_adoc/antora.yml
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/attachments/.gitkeep
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/examples/.gitkeep
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/.gitkeep
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/bookmarking.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-BELOW.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-PANEL.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-PANEL_DROPDOWN.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-RIGHT.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/CollectionLayout/sortedby-dependencies.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainObjectLayout/bookmarking-nested.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainObjectLayout/bookmarking.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuBar-primary.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuBar-secondary.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuBar-tertiary.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuOrder.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/HomePage/HomePage.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-LEFT.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-NONE.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-TOP.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-boolean-LEFT.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-boolean-RIGHT.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/nav.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Action.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Action/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Action/associateWith.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Action/command.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Action/domainEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Action/hidden.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Action/invokeOn.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Action/publishing.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Action/restrictTo.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Action/semantics.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Action/typeOf.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/bookmarking.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/contributedAs.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/cssClass.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/cssClassFa.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/describedAs.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/hidden.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/named.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/position.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/promptStyle.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/redirect.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Collection.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/domainEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/editing.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/hidden.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/notPersisted.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/typeOf.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/cssClass.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/defaultView.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/describedAs.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/hidden.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/named.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/paged.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/sortedBy.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Column.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Digits.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Discriminator.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/actionDomainEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/auditing.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/autoCompleteRepository.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/bounding.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/collectionDomainEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/createdLifecycleEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/editing.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/loadedLifecycleEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/mixinMethod.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/nature.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/objectType.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/persistedLifecycleEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/persistingLifecycleEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/propertyDomainEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/publishing.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/removingLifecycleEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/updatedLifecycleEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/updatingLifecycleEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/bookmarking.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/cssClass.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/cssClassFa.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/cssClassUiEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/describedAs.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/iconUiEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/layoutUiEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/named.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/paged.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/plural.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/titleUiEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/nature.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/objectType.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/repositoryFor.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/menuBar.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/menuOrder.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/named.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Facets.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/HomePage.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Inject.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/MemberGroupLayout.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder/name.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder/sequence.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/MinLength.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Mixin.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Mixin/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Mixin/method.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/NotPersistent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Nullable.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/fileAccept.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/maxLength.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/mustSatisfy.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/optionality.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/regexPattern.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/cssClass.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/describedAs.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/labelPosition.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/multiLine.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/named.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/renderedAsDayBefore.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/typicalLength.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Pattern.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PersistenceCapable.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PostConstruct.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PreDestroy.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PrimaryKey.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Programmatic.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property/command.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property/domainEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property/editing.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property/fileAccept.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property/hidden.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property/maxLength.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property/mustSatisfy.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property/notPersisted.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property/optionality.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property/projecting.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property/publishing.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Property/regexPattern.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PropertyLayout.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PropertyLayout/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PropertyLayout/cssClass.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PropertyLayout/describedAs.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PropertyLayout/hidden.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PropertyLayout/labelPosition.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PropertyLayout/multiLine.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PropertyLayout/named.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PropertyLayout/navigable.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PropertyLayout/promptStyle.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PropertyLayout/renderedAsDayBefore.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PropertyLayout/typicalLength.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/PropertyLayout/unchanging.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/RequestScoped.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/Title.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModel.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModel/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModel/objectType.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModelLayout.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModelLayout/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModelLayout/bookmarking.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModelLayout/cssClass.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModelLayout/cssClassFa.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModelLayout/cssClassUiEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModelLayout/describedAs.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModelLayout/iconUiEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModelLayout/layoutUiEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModelLayout/named.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModelLayout/paged.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModelLayout/plural.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/ViewModelLayout/titleUiEvent.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/XmlJavaTypeAdapter.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/XmlRootElement.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/aaa.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/aaa/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/aaa/jdo.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/aaa/jee.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/aaa/main.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/aaa/other.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/aaa/partial.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/pages/about.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/partials/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-ant/partials/module-nav.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/attachments/.gitkeep
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/examples/.gitkeep
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/images/reference-classes/issue-in-more-detail.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/images/reference-methods/prefixes/choices/dependent.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/images/reference-methods/reserved/cssClass/strikethrough.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/images/reference-methods/reserved/iconName/differing.pdn
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/images/reference-methods/reserved/iconName/differing.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/images/reference-methods/reserved/iconName/png-files.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/images/value-types/markup.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/nav.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/about.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/classes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/methods.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/methods/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/methods/lifecycle.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/methods/lifecycle/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/methods/lifecycle/jdo-api.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/methods/lifecycle/persisted.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/methods/lifecycle/persisting.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/methods/lifecycle/removed.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/methods/lifecycle/removing.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/methods/lifecycle/updated.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/methods/lifecycle/updating.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/methods/prefixes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/methods/reserved.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/pages/rgcms.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/partials/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-cm/partials/module-nav.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/attachments/.gitkeep
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/examples/.gitkeep
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/images/reference-services-api/acceptheaderservice.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/images/reference-services-api/acceptheaderservice.pptx
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/images/reference-services-spi/ErrorReportingService/kitchensink-example.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/images/reference-services-spi/EventSerializer/action-invocation-published-to-stderr.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/images/reference-services-spi/EventSerializer/changed-object-published-to-stderr.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/images/reference-services-spi/PublishingService/yuml.me-23db58a4.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/images/reference-services-spi/UserProfileService/todoapp.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/images/reference-services/categories.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/images/reference-services/categories.pptx
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/images/reference-services/commands-and-events.png
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/images/reference-services/commands-and-events.pptx
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/nav.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/about.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/ActionInvocationContext.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/BackgroundService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/BackgroundService/BackgroundCommandExecution.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/BackgroundService/Quartz.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/BackgroundService/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/CommandContext.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/CommandExecutorService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/DtoMappingHelper.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/InteractionContext.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/MessageService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/SessionManagementService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/TitleService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/TransactionService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/WrapperFactory.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-api/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-spi.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-spi/BackgroundCommandService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-spi/CommandService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-spi/HealthCheckService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-spi/HomePageProviderService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/application-layer-spi/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/bootstrapping-spi.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/bootstrapping-spi/ClassDiscoveryService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/bootstrapping-spi/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/core-domain-api.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/core-domain-api/ClockService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/core-domain-api/ConfigurationService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/core-domain-api/EventBusService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/core-domain-api/FactoryService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/core-domain-api/Scratchpad.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/core-domain-api/UserService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/core-domain-api/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/integration-api.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/integration-api/BookmarkService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/integration-api/EmailService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/integration-api/JaxbService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/integration-api/MementoService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/integration-api/XmlSnapshotService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/integration-api/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/intro.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/metadata-api.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/metadata-api/ApplicationFeatureRepository.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/metadata-api/LayoutService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/metadata-api/MetamodelService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/metadata-api/ServiceRegistry.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/metadata-api/SwaggerService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/metadata-api/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/persistence-layer-api.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/persistence-layer-api/H2ManagerMenu.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/persistence-layer-api/HsqlDbManagerMenu.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/persistence-layer-api/IsisJdoSupport.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/persistence-layer-api/MetricsService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/persistence-layer-api/QueryResultsCache.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/persistence-layer-api/RepositoryService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/persistence-layer-api/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/persistence-layer-spi.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/persistence-layer-spi/AuditerService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/persistence-layer-spi/PublisherService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/persistence-layer-spi/UserRegistrationService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/persistence-layer-spi/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-api.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-api/AcceptHeaderService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-api/BookmarkUiService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-api/ConfigurationViewService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-api/DeepLinkService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-api/GuiceBeanProvider.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-api/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/ContentMappingService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/EmailNotificationService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/ErrorReportingService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/ExceptionRecognizer.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/GridLoaderService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/GridService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/GridSystemService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/HintStore.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/LocaleProvider.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/MenuBarsLoaderService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/MenuBarsService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/RoutingService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/SessionLoggingService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/TableColumnOrderService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/TranslationService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/TranslationsResolver.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/UrlEncodingService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/UserProfileService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/presentation-layer-spi/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/testing.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/testing/ExecutionParametersService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/testing/FixtureScripts.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/testing/FixtureScriptsSpecificationProvider.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/testing/SudoService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/pages/testing/SwitchUserService.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/partials/_attributes.adoc
delete mode 100644 core/applib/src/main/_adoc/modules/applib-svc/partials/module-nav.adoc
delete mode 100644 core/applib/src/main/doc/modules/applib-ant/pages/aaa.adoc
rename core/applib/src/main/doc/modules/applib-ant/pages/{aaa => about}/_attributes.adoc (100%)
rename core/applib/src/main/doc/modules/applib-ant/pages/{aaa => about}/jdo.adoc (100%)
rename core/applib/src/main/doc/modules/applib-ant/pages/{aaa => about}/jee.adoc (100%)
rename core/applib/src/main/doc/modules/applib-ant/pages/{aaa => about}/main.adoc (100%)
rename core/applib/src/main/doc/modules/applib-ant/pages/{aaa => about}/other.adoc (100%)
rename core/applib/src/main/doc/modules/applib-ant/pages/{aaa => about}/partial.adoc (100%)
delete mode 100644 core/applib/src/main/doc/modules/applib-svc/pages/intro.adoc
delete mode 100644 core/security/bypass/src/main/doc/modules/bypass/pages/configuring-isis-to-use-bypass.adoc
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/_attributes.adoc
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/attachments/.gitkeep
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/examples/.gitkeep
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/images/configure-shiro-to-use-custom-jdbc-realm.png
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/nav.adoc
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/pages/_attributes.adoc
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/partials/_attributes.adoc
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/partials/module-nav.adoc
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-groups.png
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-mojo-partition.png
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-mojo-root-dse.png
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-sasl-authentication.png
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-users.png
delete mode 100644 core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/configure-shiro-to-use-isis-ldap-realm.PNG
rename core/security/shiro/src/main/doc/modules/shiro/images/{security/security-apis-impl => configuration}/configure-isis-to-use-shiro.png (100%)
rename core/security/shiro/src/main/doc/modules/shiro/images/{security/security-apis-impl/configure-shiro-to-use-ini-realm.PNG => configuration/configuring-shiro/ini/configure-shiro-to-use-ini-realm.png} (100%)
rename core/security/shiro/src/main/doc/modules/shiro/images/{security/security-apis-impl => configuration/configuring-shiro/jdbc}/configure-shiro-to-use-custom-jdbc-realm.png (100%)
rename core/security/shiro/src/main/doc/modules/shiro/images/{security/security-apis-impl/configure-shiro-to-use-isis-ldap-realm.PNG => configuration/configuring-shiro/ldap/configure-shiro-to-use-isis-ldap-realm.png} (100%)
rename core/{applib/src/main/_adoc/modules/applib-svc/pages/testing => security/shiro/src/main/doc/modules/shiro/pages/about}/_attributes.adoc (100%)
rename core/security/shiro/src/main/doc/modules/shiro/pages/{ => about}/configuring-isis-to-use-shiro.adoc (96%)
rename core/security/shiro/src/main/doc/modules/shiro/pages/{ => about}/enhanced-wildcard-permission.adoc (100%)
rename core/security/shiro/src/main/doc/modules/shiro/pages/{ => about}/ini-realm.adoc (96%)
rename core/security/shiro/src/main/doc/modules/{shiro-realm-jdbc/pages/about.adoc => shiro/pages/about/jdbc-realm.adoc} (95%)
rename core/security/shiro/src/main/doc/modules/{shiro-realm-ldap/pages/about.adoc => shiro/pages/about/ldap-realm.adoc} (85%)
rename core/security/shiro/src/main/doc/modules/shiro/pages/{ => about}/run-as.adoc (100%)
rename core/security/shiro/src/main/doc/modules/shiro/pages/{ => about}/shiro-caching.adoc (100%)
[isis] 01/03: ISIS-2062: tidying up refguide and userguide docs.
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 8b71ae83511b56e2bfbb14a85800bedda574c3c6
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Nov 18 07:36:15 2019 +0000
ISIS-2062: tidying up refguide and userguide docs.
---
.../refguide/modules/ROOT/pages/about.adoc | 2 +-
.../refguide/modules/ROOT/partials/module-nav.adoc | 1 -
antora/components/userguide/modules/ROOT/nav.adoc | 1 -
.../userguide/modules/ROOT/pages/about.adoc | 13 +-
.../userguide/modules/btb/pages/about.adoc | 2 +-
.../pages/programming-model/custom-validator.adoc | 2 +-
.../userguide/modules/fun/pages/about.adoc | 3 +-
core/applib/src/main/_adoc/antora.yml | 2 -
.../main/_adoc/modules/applib-ant/_attributes.adoc | 6 -
.../_adoc/modules/applib-ant/attachments/.gitkeep | 0
.../_adoc/modules/applib-ant/examples/.gitkeep | 0
.../main/_adoc/modules/applib-ant/images/.gitkeep | 0
.../ActionLayout/bookmarking.png | Bin 93128 -> 0 bytes
.../ActionLayout/position-BELOW.png | Bin 8122 -> 0 bytes
.../ActionLayout/position-PANEL.png | Bin 6912 -> 0 bytes
.../ActionLayout/position-PANEL_DROPDOWN.png | Bin 9009 -> 0 bytes
.../ActionLayout/position-RIGHT.png | Bin 9430 -> 0 bytes
.../CollectionLayout/sortedby-dependencies.png | Bin 23917 -> 0 bytes
.../DomainObjectLayout/bookmarking-nested.png | Bin 103969 -> 0 bytes
.../DomainObjectLayout/bookmarking.png | Bin 93128 -> 0 bytes
.../DomainServiceLayout/menuBar-primary.png | Bin 115609 -> 0 bytes
.../DomainServiceLayout/menuBar-secondary.png | Bin 124133 -> 0 bytes
.../DomainServiceLayout/menuBar-tertiary.png | Bin 112894 -> 0 bytes
.../DomainServiceLayout/menuOrder.png | Bin 44876 -> 0 bytes
.../reference-annotations/HomePage/HomePage.png | Bin 134848 -> 0 bytes
.../PropertyLayout/labelPosition-LEFT.png | Bin 1534 -> 0 bytes
.../PropertyLayout/labelPosition-NONE.png | Bin 3367 -> 0 bytes
.../PropertyLayout/labelPosition-TOP.png | Bin 2355 -> 0 bytes
.../PropertyLayout/labelPosition-boolean-LEFT.png | Bin 6037 -> 0 bytes
.../PropertyLayout/labelPosition-boolean-RIGHT.png | Bin 5818 -> 0 bytes
.../src/main/_adoc/modules/applib-ant/nav.adoc | 1 -
.../_adoc/modules/applib-ant/pages/Action.adoc | 144 -------
.../applib-ant/pages/Action/_attributes.adoc | 4 -
.../applib-ant/pages/Action/associateWith.adoc | 67 ----
.../modules/applib-ant/pages/Action/command.adoc | 419 ---------------------
.../applib-ant/pages/Action/domainEvent.adoc | 195 ----------
.../modules/applib-ant/pages/Action/hidden.adoc | 57 ---
.../modules/applib-ant/pages/Action/invokeOn.adoc | 64 ----
.../applib-ant/pages/Action/publishing.adoc | 57 ---
.../applib-ant/pages/Action/restrictTo.adoc | 30 --
.../modules/applib-ant/pages/Action/semantics.adoc | 91 -----
.../modules/applib-ant/pages/Action/typeOf.adoc | 37 --
.../modules/applib-ant/pages/ActionLayout.adoc | 121 ------
.../applib-ant/pages/ActionLayout/_attributes.adoc | 4 -
.../applib-ant/pages/ActionLayout/bookmarking.adoc | 60 ---
.../pages/ActionLayout/contributedAs.adoc | 54 ---
.../applib-ant/pages/ActionLayout/cssClass.adoc | 44 ---
.../applib-ant/pages/ActionLayout/cssClassFa.adoc | 43 ---
.../applib-ant/pages/ActionLayout/describedAs.adoc | 40 --
.../applib-ant/pages/ActionLayout/hidden.adoc | 61 ---
.../applib-ant/pages/ActionLayout/named.adoc | 48 ---
.../applib-ant/pages/ActionLayout/position.adoc | 74 ----
.../applib-ant/pages/ActionLayout/promptStyle.adoc | 62 ---
.../applib-ant/pages/ActionLayout/redirect.adoc | 62 ---
.../_adoc/modules/applib-ant/pages/Collection.adoc | 103 -----
.../applib-ant/pages/Collection/_attributes.adoc | 4 -
.../applib-ant/pages/Collection/domainEvent.adoc | 177 ---------
.../applib-ant/pages/Collection/editing.adoc | 58 ---
.../applib-ant/pages/Collection/hidden.adoc | 63 ----
.../applib-ant/pages/Collection/notPersisted.adoc | 63 ----
.../applib-ant/pages/Collection/typeOf.adoc | 30 --
.../modules/applib-ant/pages/CollectionLayout.adoc | 117 ------
.../pages/CollectionLayout/_attributes.adoc | 4 -
.../pages/CollectionLayout/cssClass.adoc | 41 --
.../pages/CollectionLayout/defaultView.adoc | 39 --
.../pages/CollectionLayout/describedAs.adoc | 31 --
.../applib-ant/pages/CollectionLayout/hidden.adoc | 63 ----
.../applib-ant/pages/CollectionLayout/named.adoc | 55 ---
.../applib-ant/pages/CollectionLayout/paged.adoc | 46 ---
.../pages/CollectionLayout/sortedBy.adoc | 50 ---
.../_adoc/modules/applib-ant/pages/Column.adoc | 151 --------
.../_adoc/modules/applib-ant/pages/Digits.adoc | 33 --
.../modules/applib-ant/pages/Discriminator.adoc | 72 ----
.../modules/applib-ant/pages/DomainObject.adoc | 151 --------
.../applib-ant/pages/DomainObject/_attributes.adoc | 4 -
.../pages/DomainObject/actionDomainEvent.adoc | 45 ---
.../applib-ant/pages/DomainObject/auditing.adoc | 38 --
.../pages/DomainObject/autoCompleteRepository.adoc | 102 -----
.../applib-ant/pages/DomainObject/bounding.adoc | 40 --
.../pages/DomainObject/collectionDomainEvent.adoc | 62 ---
.../pages/DomainObject/createdLifecycleEvent.adoc | 108 ------
.../applib-ant/pages/DomainObject/editing.adoc | 61 ---
.../pages/DomainObject/loadedLifecycleEvent.adoc | 100 -----
.../applib-ant/pages/DomainObject/mixinMethod.adoc | 40 --
.../applib-ant/pages/DomainObject/nature.adoc | 80 ----
.../applib-ant/pages/DomainObject/objectType.adoc | 64 ----
.../DomainObject/persistedLifecycleEvent.adoc | 107 ------
.../DomainObject/persistingLifecycleEvent.adoc | 108 ------
.../pages/DomainObject/propertyDomainEvent.adoc | 62 ---
.../applib-ant/pages/DomainObject/publishing.adoc | 54 ---
.../pages/DomainObject/removingLifecycleEvent.adoc | 109 ------
.../pages/DomainObject/updatedLifecycleEvent.adoc | 107 ------
.../pages/DomainObject/updatingLifecycleEvent.adoc | 109 ------
.../applib-ant/pages/DomainObjectLayout.adoc | 135 -------
.../pages/DomainObjectLayout/_attributes.adoc | 4 -
.../pages/DomainObjectLayout/bookmarking.adoc | 71 ----
.../pages/DomainObjectLayout/cssClass.adoc | 43 ---
.../pages/DomainObjectLayout/cssClassFa.adoc | 45 ---
.../pages/DomainObjectLayout/cssClassUiEvent.adoc | 124 ------
.../pages/DomainObjectLayout/describedAs.adoc | 34 --
.../pages/DomainObjectLayout/iconUiEvent.adoc | 119 ------
.../pages/DomainObjectLayout/layoutUiEvent.adoc | 118 ------
.../applib-ant/pages/DomainObjectLayout/named.adoc | 49 ---
.../applib-ant/pages/DomainObjectLayout/paged.adoc | 42 ---
.../pages/DomainObjectLayout/plural.adoc | 27 --
.../pages/DomainObjectLayout/titleUiEvent.adoc | 117 ------
.../modules/applib-ant/pages/DomainService.adoc | 70 ----
.../pages/DomainService/_attributes.adoc | 4 -
.../applib-ant/pages/DomainService/nature.adoc | 94 -----
.../applib-ant/pages/DomainService/objectType.adoc | 58 ---
.../pages/DomainService/repositoryFor.adoc | 26 --
.../applib-ant/pages/DomainServiceLayout.adoc | 76 ----
.../pages/DomainServiceLayout/_attributes.adoc | 4 -
.../pages/DomainServiceLayout/menuBar.adoc | 43 ---
.../pages/DomainServiceLayout/menuOrder.adoc | 69 ----
.../pages/DomainServiceLayout/named.adoc | 41 --
.../_adoc/modules/applib-ant/pages/Facets.adoc | 13 -
.../_adoc/modules/applib-ant/pages/HomePage.adoc | 50 ---
.../_adoc/modules/applib-ant/pages/Inject.adoc | 145 -------
.../applib-ant/pages/MemberGroupLayout.adoc | 17 -
.../modules/applib-ant/pages/MemberOrder.adoc | 26 --
.../applib-ant/pages/MemberOrder/_attributes.adoc | 4 -
.../modules/applib-ant/pages/MemberOrder/name.adoc | 13 -
.../applib-ant/pages/MemberOrder/sequence.adoc | 12 -
.../_adoc/modules/applib-ant/pages/MinLength.adoc | 28 --
.../main/_adoc/modules/applib-ant/pages/Mixin.adoc | 38 --
.../applib-ant/pages/Mixin/_attributes.adoc | 4 -
.../modules/applib-ant/pages/Mixin/method.adoc | 41 --
.../modules/applib-ant/pages/NotPersistent.adoc | 16 -
.../_adoc/modules/applib-ant/pages/Nullable.adoc | 52 ---
.../_adoc/modules/applib-ant/pages/Parameter.adoc | 98 -----
.../applib-ant/pages/Parameter/_attributes.adoc | 4 -
.../applib-ant/pages/Parameter/fileAccept.adoc | 37 --
.../applib-ant/pages/Parameter/maxLength.adoc | 35 --
.../applib-ant/pages/Parameter/mustSatisfy.adoc | 65 ----
.../applib-ant/pages/Parameter/optionality.adoc | 42 ---
.../applib-ant/pages/Parameter/regexPattern.adoc | 42 ---
.../modules/applib-ant/pages/ParameterLayout.adoc | 117 ------
.../pages/ParameterLayout/_attributes.adoc | 4 -
.../applib-ant/pages/ParameterLayout/cssClass.adoc | 40 --
.../pages/ParameterLayout/describedAs.adoc | 32 --
.../pages/ParameterLayout/labelPosition.adoc | 45 ---
.../pages/ParameterLayout/multiLine.adoc | 32 --
.../applib-ant/pages/ParameterLayout/named.adoc | 60 ---
.../pages/ParameterLayout/renderedAsDayBefore.adoc | 42 ---
.../pages/ParameterLayout/typicalLength.adoc | 39 --
.../_adoc/modules/applib-ant/pages/Pattern.adoc | 51 ---
.../applib-ant/pages/PersistenceCapable.adoc | 102 -----
.../modules/applib-ant/pages/PostConstruct.adoc | 45 ---
.../_adoc/modules/applib-ant/pages/PreDestroy.adoc | 51 ---
.../_adoc/modules/applib-ant/pages/PrimaryKey.adoc | 19 -
.../modules/applib-ant/pages/Programmatic.adoc | 25 --
.../_adoc/modules/applib-ant/pages/Property.adoc | 183 ---------
.../applib-ant/pages/Property/_attributes.adoc | 4 -
.../modules/applib-ant/pages/Property/command.adoc | 268 -------------
.../applib-ant/pages/Property/domainEvent.adoc | 161 --------
.../modules/applib-ant/pages/Property/editing.adoc | 49 ---
.../applib-ant/pages/Property/fileAccept.adoc | 34 --
.../modules/applib-ant/pages/Property/hidden.adoc | 77 ----
.../applib-ant/pages/Property/maxLength.adoc | 57 ---
.../applib-ant/pages/Property/mustSatisfy.adoc | 59 ---
.../applib-ant/pages/Property/notPersisted.adoc | 69 ----
.../applib-ant/pages/Property/optionality.adoc | 144 -------
.../applib-ant/pages/Property/projecting.adoc | 39 --
.../applib-ant/pages/Property/publishing.adoc | 54 ---
.../applib-ant/pages/Property/regexPattern.adoc | 39 --
.../modules/applib-ant/pages/PropertyLayout.adoc | 153 --------
.../pages/PropertyLayout/_attributes.adoc | 4 -
.../applib-ant/pages/PropertyLayout/cssClass.adoc | 39 --
.../pages/PropertyLayout/describedAs.adoc | 25 --
.../applib-ant/pages/PropertyLayout/hidden.adoc | 81 ----
.../pages/PropertyLayout/labelPosition.adoc | 94 -----
.../applib-ant/pages/PropertyLayout/multiLine.adoc | 35 --
.../applib-ant/pages/PropertyLayout/named.adoc | 54 ---
.../applib-ant/pages/PropertyLayout/navigable.adoc | 26 --
.../pages/PropertyLayout/promptStyle.adoc | 29 --
.../pages/PropertyLayout/renderedAsDayBefore.adoc | 46 ---
.../pages/PropertyLayout/typicalLength.adoc | 31 --
.../pages/PropertyLayout/unchanging.adoc | 34 --
.../modules/applib-ant/pages/RequestScoped.adoc | 48 ---
.../main/_adoc/modules/applib-ant/pages/Title.adoc | 57 ---
.../_adoc/modules/applib-ant/pages/ViewModel.adoc | 70 ----
.../applib-ant/pages/ViewModel/_attributes.adoc | 4 -
.../applib-ant/pages/ViewModel/objectType.adoc | 64 ----
.../modules/applib-ant/pages/ViewModelLayout.adoc | 123 ------
.../pages/ViewModelLayout/_attributes.adoc | 4 -
.../pages/ViewModelLayout/bookmarking.adoc | 12 -
.../applib-ant/pages/ViewModelLayout/cssClass.adoc | 11 -
.../pages/ViewModelLayout/cssClassFa.adoc | 13 -
.../pages/ViewModelLayout/cssClassUiEvent.adoc | 12 -
.../pages/ViewModelLayout/describedAs.adoc | 11 -
.../pages/ViewModelLayout/iconUiEvent.adoc | 15 -
.../pages/ViewModelLayout/layoutUiEvent.adoc | 12 -
.../applib-ant/pages/ViewModelLayout/named.adoc | 11 -
.../applib-ant/pages/ViewModelLayout/paged.adoc | 10 -
.../applib-ant/pages/ViewModelLayout/plural.adoc | 15 -
.../pages/ViewModelLayout/titleUiEvent.adoc | 12 -
.../applib-ant/pages/XmlJavaTypeAdapter.adoc | 25 --
.../modules/applib-ant/pages/XmlRootElement.adoc | 66 ----
.../modules/applib-ant/pages/_attributes.adoc | 4 -
.../main/_adoc/modules/applib-ant/pages/aaa.adoc | 15 -
.../modules/applib-ant/pages/aaa/_attributes.adoc | 4 -
.../_adoc/modules/applib-ant/pages/aaa/jdo.adoc | 113 ------
.../_adoc/modules/applib-ant/pages/aaa/jee.adoc | 86 -----
.../_adoc/modules/applib-ant/pages/aaa/main.adoc | 103 -----
.../_adoc/modules/applib-ant/pages/aaa/other.adoc | 51 ---
.../modules/applib-ant/pages/aaa/partial.adoc | 66 ----
.../main/_adoc/modules/applib-ant/pages/about.adoc | 29 --
.../modules/applib-ant/partials/_attributes.adoc | 4 -
.../modules/applib-ant/partials/module-nav.adoc | 40 --
.../main/_adoc/modules/applib-cm/_attributes.adoc | 6 -
.../_adoc/modules/applib-cm/attachments/.gitkeep | 0
.../main/_adoc/modules/applib-cm/examples/.gitkeep | 0
.../reference-classes/issue-in-more-detail.png | Bin 7905 -> 0 bytes
.../prefixes/choices/dependent.png | Bin 71875 -> 0 bytes
.../reserved/cssClass/strikethrough.png | Bin 134835 -> 0 bytes
.../reserved/iconName/differing.pdn | Bin 28973 -> 0 bytes
.../reserved/iconName/differing.png | Bin 9326 -> 0 bytes
.../reserved/iconName/png-files.png | Bin 2843 -> 0 bytes
.../applib-cm/images/value-types/markup.png | Bin 19232 -> 0 bytes
.../src/main/_adoc/modules/applib-cm/nav.adoc | 1 -
.../_adoc/modules/applib-cm/pages/_attributes.adoc | 4 -
.../main/_adoc/modules/applib-cm/pages/about.adoc | 11 -
.../_adoc/modules/applib-cm/pages/classes.adoc | 25 --
.../_adoc/modules/applib-cm/pages/methods.adoc | 15 -
.../applib-cm/pages/methods/_attributes.adoc | 4 -
.../modules/applib-cm/pages/methods/lifecycle.adoc | 63 ----
.../pages/methods/lifecycle/_attributes.adoc | 4 -
.../applib-cm/pages/methods/lifecycle/jdo-api.adoc | 52 ---
.../pages/methods/lifecycle/persisted.adoc | 15 -
.../pages/methods/lifecycle/persisting.adoc | 15 -
.../applib-cm/pages/methods/lifecycle/removed.adoc | 15 -
.../pages/methods/lifecycle/removing.adoc | 15 -
.../applib-cm/pages/methods/lifecycle/updated.adoc | 17 -
.../pages/methods/lifecycle/updating.adoc | 14 -
.../modules/applib-cm/pages/methods/prefixes.adoc | 217 -----------
.../modules/applib-cm/pages/methods/reserved.adoc | 52 ---
.../main/_adoc/modules/applib-cm/pages/rgcms.adoc | 7 -
.../modules/applib-cm/partials/_attributes.adoc | 4 -
.../modules/applib-cm/partials/module-nav.adoc | 6 -
.../main/_adoc/modules/applib-svc/_attributes.adoc | 6 -
.../_adoc/modules/applib-svc/attachments/.gitkeep | 0
.../_adoc/modules/applib-svc/examples/.gitkeep | 0
.../reference-services-api/acceptheaderservice.png | Bin 10997 -> 0 bytes
.../acceptheaderservice.pptx | Bin 46935 -> 0 bytes
.../ErrorReportingService/kitchensink-example.png | Bin 180602 -> 0 bytes
.../action-invocation-published-to-stderr.png | Bin 22377 -> 0 bytes
.../changed-object-published-to-stderr.png | Bin 16645 -> 0 bytes
.../PublishingService/yuml.me-23db58a4.png | Bin 96892 -> 0 bytes
.../UserProfileService/todoapp.png | Bin 65234 -> 0 bytes
.../images/reference-services/categories.png | Bin 35572 -> 0 bytes
.../images/reference-services/categories.pptx | Bin 41617 -> 0 bytes
.../reference-services/commands-and-events.png | Bin 88211 -> 0 bytes
.../reference-services/commands-and-events.pptx | Bin 43798 -> 0 bytes
.../src/main/_adoc/modules/applib-svc/nav.adoc | 1 -
.../modules/applib-svc/pages/_attributes.adoc | 4 -
.../main/_adoc/modules/applib-svc/pages/about.adoc | 12 -
.../applib-svc/pages/application-layer-api.adoc | 161 --------
.../ActionInvocationContext.adoc | 102 -----
.../application-layer-api/BackgroundService.adoc | 121 ------
.../BackgroundCommandExecution.adoc | 25 --
.../BackgroundService/Quartz.adoc | 165 --------
.../BackgroundService/_attributes.adoc | 4 -
.../application-layer-api/CommandContext.adoc | 222 -----------
.../CommandExecutorService.adoc | 45 ---
.../application-layer-api/DtoMappingHelper.adoc | 27 --
.../application-layer-api/InteractionContext.adoc | 202 ----------
.../application-layer-api/MessageService.adoc | 65 ----
.../SessionManagementService.adoc | 47 ---
.../pages/application-layer-api/TitleService.adoc | 57 ---
.../application-layer-api/TransactionService.adoc | 118 ------
.../application-layer-api/WrapperFactory.adoc | 189 ----------
.../pages/application-layer-api/_attributes.adoc | 4 -
.../applib-svc/pages/application-layer-spi.adoc | 83 ----
.../BackgroundCommandService.adoc | 107 ------
.../application-layer-spi/CommandService.adoc | 108 ------
.../application-layer-spi/HealthCheckService.adoc | 55 ---
.../HomePageProviderService.adoc | 31 --
.../pages/application-layer-spi/_attributes.adoc | 4 -
.../applib-svc/pages/bootstrapping-spi.adoc | 46 ---
.../bootstrapping-spi/ClassDiscoveryService.adoc | 54 ---
.../pages/bootstrapping-spi/_attributes.adoc | 4 -
.../modules/applib-svc/pages/core-domain-api.adoc | 109 ------
.../pages/core-domain-api/ClockService.adoc | 104 -----
.../core-domain-api/ConfigurationService.adoc | 81 ----
.../pages/core-domain-api/EventBusService.adoc | 418 --------------------
.../pages/core-domain-api/FactoryService.adoc | 63 ----
.../pages/core-domain-api/Scratchpad.adoc | 115 ------
.../pages/core-domain-api/UserService.adoc | 66 ----
.../pages/core-domain-api/_attributes.adoc | 4 -
.../modules/applib-svc/pages/integration-api.adoc | 94 -----
.../pages/integration-api/BookmarkService.adoc | 114 ------
.../pages/integration-api/EmailService.adoc | 246 ------------
.../pages/integration-api/JaxbService.adoc | 57 ---
.../pages/integration-api/MementoService.adoc | 124 ------
.../pages/integration-api/XmlSnapshotService.adoc | 208 ----------
.../pages/integration-api/_attributes.adoc | 4 -
.../main/_adoc/modules/applib-svc/pages/intro.adoc | 205 ----------
.../modules/applib-svc/pages/metadata-api.adoc | 95 -----
.../metadata-api/ApplicationFeatureRepository.adoc | 76 ----
.../pages/metadata-api/LayoutService.adoc | 103 -----
.../pages/metadata-api/MetamodelService.adoc | 90 -----
.../pages/metadata-api/ServiceRegistry.adoc | 57 ---
.../pages/metadata-api/SwaggerService.adoc | 69 ----
.../applib-svc/pages/metadata-api/_attributes.adoc | 4 -
.../applib-svc/pages/persistence-layer-api.adoc | 86 -----
.../pages/persistence-layer-api/H2ManagerMenu.adoc | 91 -----
.../persistence-layer-api/HsqlDbManagerMenu.adoc | 45 ---
.../persistence-layer-api/IsisJdoSupport.adoc | 282 --------------
.../persistence-layer-api/MetricsService.adoc | 40 --
.../persistence-layer-api/QueryResultsCache.adoc | 115 ------
.../persistence-layer-api/RepositoryService.adoc | 271 -------------
.../pages/persistence-layer-api/_attributes.adoc | 4 -
.../applib-svc/pages/persistence-layer-spi.adoc | 82 ----
.../persistence-layer-spi/AuditerService.adoc | 109 ------
.../persistence-layer-spi/PublisherService.adoc | 134 -------
.../UserRegistrationService.adoc | 94 -----
.../pages/persistence-layer-spi/_attributes.adoc | 4 -
.../applib-svc/pages/presentation-layer-api.adoc | 76 ----
.../AcceptHeaderService.adoc | 65 ----
.../presentation-layer-api/BookmarkUiService.adoc | 32 --
.../ConfigurationViewService.adoc | 9 -
.../presentation-layer-api/DeepLinkService.adoc | 38 --
.../presentation-layer-api/GuiceBeanProvider.adoc | 88 -----
.../pages/presentation-layer-api/_attributes.adoc | 4 -
.../applib-svc/pages/presentation-layer-spi.adoc | 201 ----------
.../ContentMappingService.adoc | 79 ----
.../EmailNotificationService.adoc | 68 ----
.../ErrorReportingService.adoc | 107 ------
.../ExceptionRecognizer.adoc | 150 --------
.../presentation-layer-spi/GridLoaderService.adoc | 42 ---
.../pages/presentation-layer-spi/GridService.adoc | 72 ----
.../presentation-layer-spi/GridSystemService.adoc | 64 ----
.../pages/presentation-layer-spi/HintStore.adoc | 100 -----
.../presentation-layer-spi/LocaleProvider.adoc | 58 ---
.../MenuBarsLoaderService.adoc | 32 --
.../presentation-layer-spi/MenuBarsService.adoc | 35 --
.../presentation-layer-spi/RoutingService.adoc | 71 ----
.../SessionLoggingService.adoc | 41 --
.../TableColumnOrderService.adoc | 47 ---
.../presentation-layer-spi/TranslationService.adoc | 103 -----
.../TranslationsResolver.adoc | 54 ---
.../presentation-layer-spi/UrlEncodingService.adoc | 50 ---
.../presentation-layer-spi/UserProfileService.adoc | 48 ---
.../pages/presentation-layer-spi/_attributes.adoc | 4 -
.../_adoc/modules/applib-svc/pages/testing.adoc | 106 ------
.../pages/testing/ExecutionParametersService.adoc | 29 --
.../applib-svc/pages/testing/FixtureScripts.adoc | 62 ---
.../FixtureScriptsSpecificationProvider.adoc | 71 ----
.../applib-svc/pages/testing/SudoService.adoc | 126 -------
.../pages/testing/SwitchUserService.adoc | 41 --
.../applib-svc/pages/testing/_attributes.adoc | 4 -
.../modules/applib-svc/partials/_attributes.adoc | 4 -
.../modules/applib-svc/partials/module-nav.adoc | 120 ------
.../src/main/doc/modules/applib-ant/pages/aaa.adoc | 5 -
.../main/doc/modules/applib-ant/pages/about.adoc | 10 +-
.../pages/{aaa => about}/_attributes.adoc | 0
.../applib-ant/pages/{aaa => about}/jdo.adoc | 0
.../applib-ant/pages/{aaa => about}/jee.adoc | 0
.../applib-ant/pages/{aaa => about}/main.adoc | 0
.../applib-ant/pages/{aaa => about}/other.adoc | 0
.../applib-ant/pages/{aaa => about}/partial.adoc | 0
.../modules/applib-ant/partials/module-nav.adoc | 1 -
.../main/doc/modules/applib-cm/pages/rgcms.adoc | 2 +-
.../main/doc/modules/applib-svc/pages/about.adoc | 198 ++++++++++
.../main/doc/modules/applib-svc/pages/intro.adoc | 205 ----------
.../modules/applib-svc/partials/module-nav.adoc | 4 -
.../src/main/doc/modules/config/pages/about.adoc | 21 +-
.../modules/config/pages/configuration-files.adoc | 2 +
.../doc/modules/config/pages/configuring-core.adoc | 6 +-
.../config/pages/specifying-components.adoc | 2 +-
.../src/main/doc/modules/schema/pages/about.adoc | 3 +
preview-scratch.sh | 2 +-
preview.sh | 2 +-
site-scratch.yml | 24 +-
375 files changed, 245 insertions(+), 19556 deletions(-)
diff --git a/antora/components/refguide/modules/ROOT/pages/about.adoc b/antora/components/refguide/modules/ROOT/pages/about.adoc
index 20a08c7..8e217d3 100644
--- a/antora/components/refguide/modules/ROOT/pages/about.adoc
+++ b/antora/components/refguide/modules/ROOT/pages/about.adoc
@@ -1,7 +1,7 @@
= Reference Guides
include::_attributes.adoc[]
-The reference guides are:
+The reference guides cover:
* xref:refguide:applib-ant:about.adoc[Annotations]
* xref:refguide:applib-svc:about.adoc[Domain Services]
diff --git a/antora/components/refguide/modules/ROOT/partials/module-nav.adoc b/antora/components/refguide/modules/ROOT/partials/module-nav.adoc
index 5da934b..e69de29 100644
--- a/antora/components/refguide/modules/ROOT/partials/module-nav.adoc
+++ b/antora/components/refguide/modules/ROOT/partials/module-nav.adoc
@@ -1 +0,0 @@
-* xref:refguide:ROOT:about.adoc[Table of Contents]
diff --git a/antora/components/userguide/modules/ROOT/nav.adoc b/antora/components/userguide/modules/ROOT/nav.adoc
index 2815342..8b13789 100644
--- a/antora/components/userguide/modules/ROOT/nav.adoc
+++ b/antora/components/userguide/modules/ROOT/nav.adoc
@@ -1,2 +1 @@
-* xref:about.adoc[About]
diff --git a/antora/components/userguide/modules/ROOT/pages/about.adoc b/antora/components/userguide/modules/ROOT/pages/about.adoc
index 2075b78..ed9ccb3 100644
--- a/antora/components/userguide/modules/ROOT/pages/about.adoc
+++ b/antora/components/userguide/modules/ROOT/pages/about.adoc
@@ -1,21 +1,24 @@
= User Guides
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
include::_attributes.adoc[]
+:page-role: -toc
-The user guides available are:
+The user guide breaks into two main sections:
* xref:userguide:fun:about.adoc[Fundamentals]
* xref:userguide:btb:about.adoc[Beyond the Basics]
-There are also guides for testing & prototyping:
+There are a number of other guides:
-* xref:testing:ROOT:about.adoc[Testing]
+* xref:refguide:ROOT:about.adoc[Reference Guide]
+* xref:security:ROOT:about.adoc[Security Guide]
+* xref:testing:ROOT:about.adoc[Testing Guide]
-\... as well as user guides for each of the components:
+\... as well as components guides:
* xref:vw:ROOT:about.adoc[Wicket viewer]
* xref:vro:ROOT:about.adoc[Restful Objects viewer]
* xref:odn:ROOT:about.adoc[DataNucleus object store]
-* xref:security:ROOT:about.adoc[Security]
diff --git a/antora/components/userguide/modules/btb/pages/about.adoc b/antora/components/userguide/modules/btb/pages/about.adoc
index 545d42e..18d33b4 100644
--- a/antora/components/userguide/modules/btb/pages/about.adoc
+++ b/antora/components/userguide/modules/btb/pages/about.adoc
@@ -1,6 +1,6 @@
= Beyond the Basics
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
include::_attributes.adoc[]
-:page-partial:
This guide covers some of the more advanced topics when developing more substantial applications.
diff --git a/antora/components/userguide/modules/btb/pages/programming-model/custom-validator.adoc b/antora/components/userguide/modules/btb/pages/programming-model/custom-validator.adoc
index 4750d8a..82fe02e 100644
--- a/antora/components/userguide/modules/btb/pages/programming-model/custom-validator.adoc
+++ b/antora/components/userguide/modules/btb/pages/programming-model/custom-validator.adoc
@@ -10,7 +10,7 @@ For example, the validator will detect any orphaned supporting methods (eg `hide
[NOTE]
====
-The support for xref:refguide:applib-ant:aaa.adoc#deprecated[disallowing deprecated annotations] is also implemented using the metamodel validator.
+The support for xref:refguide:applib-ant:about.adoc#deprecated[disallowing deprecated annotations] is also implemented using the metamodel validator.
====
You can also impose your own application-specific rules by installing your own metamodel validator. To give just one example, you could impose naming standards such as ensuring that a domain-specific abbreviation such as "ISBN" is always consistently capitalized wherever it appears in a class member.
diff --git a/antora/components/userguide/modules/fun/pages/about.adoc b/antora/components/userguide/modules/fun/pages/about.adoc
index e8fd93f..c048e67 100644
--- a/antora/components/userguide/modules/fun/pages/about.adoc
+++ b/antora/components/userguide/modules/fun/pages/about.adoc
@@ -1,9 +1,8 @@
= Fundamentals
:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
include::_attributes.adoc[]
-:page-partial:
-This guide introduces the xref:userguide:fun:core-concepts.adoc[core concepts] and the xref:userguide:fun:building-blocks.adoc[building blocks] of Apache Isis, and tells you how to xref:helloworld:ROOT:about.adoc[get started] with a Maven archetype.
+This guide introduces the xref:userguide:fun:core-concepts.adoc[core concepts] and the xref:userguide:fun:building-blocks.adoc[building blocks] of Apache Isis, and tells you how to get started with the xref:helloworld:ROOT:about.adoc[helloworld starter app].
It describes in some detail the conventions of Apache Isis' xref:userguide:fun:programming-model.adoc[programming model]s, describes how to influence the xref:vw:ROOT:layout.adoc[UI layout] of your domain objects , and it catalogues various xref:toc:devguide:hints-and-tips.adoc.adoc[FAQ]s.
diff --git a/core/applib/src/main/_adoc/antora.yml b/core/applib/src/main/_adoc/antora.yml
deleted file mode 100644
index 7ac2b7b..0000000
--- a/core/applib/src/main/_adoc/antora.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-name: refguide
-version: master
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/_attributes.adoc
deleted file mode 100644
index 43cb529..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/_attributes.adoc
+++ /dev/null
@@ -1,6 +0,0 @@
-ifndef::env-site,env-github[]
-:attachmentsdir: {moduledir}/attachments
-:examplesdir: {moduledir}/examples
-:imagesdir: {moduledir}/images
-:partialsdir: {moduledir}/partials
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/attachments/.gitkeep b/core/applib/src/main/_adoc/modules/applib-ant/attachments/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/examples/.gitkeep b/core/applib/src/main/_adoc/modules/applib-ant/examples/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/.gitkeep b/core/applib/src/main/_adoc/modules/applib-ant/images/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/bookmarking.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/bookmarking.png
deleted file mode 100644
index 0100b63..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/bookmarking.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-BELOW.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-BELOW.png
deleted file mode 100644
index 944bb52..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-BELOW.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-PANEL.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-PANEL.png
deleted file mode 100644
index ef01a63..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-PANEL.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-PANEL_DROPDOWN.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-PANEL_DROPDOWN.png
deleted file mode 100644
index 2194ee8..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-PANEL_DROPDOWN.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-RIGHT.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-RIGHT.png
deleted file mode 100644
index 0da5647..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/ActionLayout/position-RIGHT.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/CollectionLayout/sortedby-dependencies.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/CollectionLayout/sortedby-dependencies.png
deleted file mode 100644
index e5936b5..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/CollectionLayout/sortedby-dependencies.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainObjectLayout/bookmarking-nested.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainObjectLayout/bookmarking-nested.png
deleted file mode 100644
index c48eb9c..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainObjectLayout/bookmarking-nested.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainObjectLayout/bookmarking.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainObjectLayout/bookmarking.png
deleted file mode 100644
index 0100b63..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainObjectLayout/bookmarking.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuBar-primary.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuBar-primary.png
deleted file mode 100644
index 6fe3947..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuBar-primary.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuBar-secondary.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuBar-secondary.png
deleted file mode 100644
index 46f8e62..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuBar-secondary.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuBar-tertiary.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuBar-tertiary.png
deleted file mode 100644
index c87c8ad..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuBar-tertiary.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuOrder.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuOrder.png
deleted file mode 100644
index b5029dd..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/DomainServiceLayout/menuOrder.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/HomePage/HomePage.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/HomePage/HomePage.png
deleted file mode 100644
index 59880f4..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/HomePage/HomePage.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-LEFT.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-LEFT.png
deleted file mode 100644
index 3298ead..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-LEFT.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-NONE.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-NONE.png
deleted file mode 100644
index e903f0c..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-NONE.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-TOP.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-TOP.png
deleted file mode 100644
index 8cd2f37..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-TOP.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-boolean-LEFT.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-boolean-LEFT.png
deleted file mode 100644
index 9b4742b..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-boolean-LEFT.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-boolean-RIGHT.png b/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-boolean-RIGHT.png
deleted file mode 100644
index 6595267..0000000
Binary files a/core/applib/src/main/_adoc/modules/applib-ant/images/reference-annotations/PropertyLayout/labelPosition-boolean-RIGHT.png and /dev/null differ
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/nav.adoc b/core/applib/src/main/_adoc/modules/applib-ant/nav.adoc
deleted file mode 100644
index f7f91c6..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/nav.adoc
+++ /dev/null
@@ -1 +0,0 @@
-include::refguide:ROOT:partial$component-nav.adoc[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Action.adoc
deleted file mode 100644
index 373d356..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action.adoc
+++ /dev/null
@@ -1,144 +0,0 @@
-= `@Action`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-The `@Action` annotation groups together all domain-specific metadata for an invokable action on a domain object or domain service.
-
-The table below summarizes the annotation's attributes.
-
-.`@Action` attributes
-[cols="2,2,4a", options="header"]
-|===
-
-| Attribute
-| Values (default)
-| Description
-
-
-|xref:refguide:applib-ant:Action.adoc#associateWith[`associateWith()`]
-|_memberId_ +
-("")
-|associates an action with another property or collection of the action.
-
-|xref:refguide:applib-ant:Action.adoc#associateWith[`associateWith-Sequence()`]
-|_memberId_ +
-("")
-|associates an action with another property or collection of the action.
-
-|xref:refguide:applib-ant:Action.adoc#command[`command()`]
-|`AS_CONFIGURED`, `ENABLED`, `DISABLED` +
-(`AS_CONFIGURED`)
-|whether the action invocation should be reified into a `o.a.i.applib.` +
-`services.command.Command` object through the xref:refguide:applib-svc:application-layer-api/CommandContext.adoc[`CommandContext`] service.
-
-
-|`commandExecuteIn()`
-|`FOREGROUND`,`BACKGROUND` +
-(`FOREGROUND`)
-|whether to execute the command immediately, or to persist it (assuming that an appropriate implementation of xref:refguide:applib-svc:application-layer-spi/CommandService.adoc[`CommandService`] has been configured) such that a background scheduler can execute the command asynchronously
-
-
-|`commandPersistence()`
-|`PERSISTED`, `NOT_PERSISTED`, `IF_HINTED` +
-(`PERSISTED`)
-|whether the reified `Command` (as provided by the `CommandContext` domain service) should actually be persisted (assuming an appropriate implementation of xref:refguide:applib-svc:application-layer-spi/CommandService.adoc[`CommandService`] has been configured).
-
-
-|`commandDtoProcessor()`
-|Implementation of `CommandDtoProcessor` interface +
-(null)
-|If the `Command` also implements `CommandWithDto` (meaning that it can return a `CommandDto`, in other words be converted into an XML memento), then optionally specifies a processor that can refine this XML.
-
-
-|xref:refguide:applib-ant:Action.adoc#domainEvent[`domainEvent()`]
-|subtype of `ActionDomainEvent` +
-(`ActionDomainEvent.Default`)
-|the event type to be posted to the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] to
-broadcast the action's business rule checking (hide, disable, validate) and its invocation (pre-execute and
-post-execute).
-
-
-|xref:refguide:applib-ant:Action.adoc#hidden[`hidden()`]
-|`EVERYWHERE`, `NOWHERE` +
-(`NOWHERE`)
-|indicates where (in the UI) the action should be hidden from the user.
-
-
-|xref:refguide:applib-ant:Action.adoc#invokeOn[`invokeOn()`]
-|`OBJECT_ONLY`, `COLLECTION_ONLY`, `OBJECT_AND_COLLECTION` +
-(`OBJECT_ONLY`)
-|(deprecated - use view models and associated actions instead).
-
-whether an action can be invoked on a single object and/or on many objects in a collection.
-
-Currently this is only supported for no-arg actions.
-
-
-|xref:refguide:applib-ant:Action.adoc#publishing[`publishing()`]
-|`AS_CONFIGURED`, `ENABLED`, `DISABLED` +
-(`AS_CONFIGURED`)
-|whether the action invocation should be published to the registered xref:refguide:applib-svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`].
-
-|xref:refguide:applib-ant:Action.adoc#restrictTo[`restrictTo()`]
-|`NO_RESTRICTIONS`,`PROTOTYPING` +
-(`NO_RESTRICTIONS`)
-|whether the action is only available in prototyping mode, or whether it is available also in production mode.
-
-|xref:refguide:applib-ant:Action.adoc#semantics[`semantics()`]
-|`SAFE_AND_REQUEST_CACHEABLE`, `SAFE`, +
-`IDEMPOTENT`, `IDEMPOTENT_ARE_YOU_SURE` +
-`NON_IDEMPOTENT`, `NON_IDEMPOTENT_ARE_YOU_SURE` + +
-(`NON_IDEMPOTENT`)
-|the action's semantics (ie whether objects are modified as the result of invoking this action, and if so whether reinvoking the action would result in no further change; if not whether the results can be cached for the remainder of the request).
-
-The `...ARE_YOU_SURE` variants cause a confirmation dialog to be displayed in the xref:vw:ROOT:about.adoc[Wicket viewer].
-
-|xref:refguide:applib-ant:Action.adoc#typeOf[`typeOf()`]
-|(none)
-|if the action returns a collection, hints as to the run-time type of the objects within that collection (as a fallback)
-
-|===
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- public static class CompletedEvent extends ActionDomainEvent<ToDoItem> { }
- @Action(
- command=CommandReification.ENABLED,
- commandExecuteIn=CommandExecuteIn.FOREGROUND, // <1>
- commandPersistence=CommandPersistence.NOT_PERSISTED, // <2>
- domainEvent=CompletedEvent.class,
- hidden = Where.NOWHERE, // <3>
- invokeOn = InvokeOn.OBJECT_ONLY, // <4>
- publishing = Publishing.ENABLED,
- semantics = SemanticsOf.IDEMPOTENT
- )
- public ToDoItem completed() { /* ... */ }
-}
-----
-<1> default value, so could be omitted
-<2> default value, so could be omitted
-<3> default value, so could be omitted
-<4> default value, so could be omitted
-
-
-
-
-
-
-
-
-
-include::Action/associateWith.adoc[leveloffset=+1]
-include::Action/command.adoc[leveloffset=+1]
-include::Action/domainEvent.adoc[leveloffset=+1]
-include::Action/hidden.adoc[leveloffset=+1]
-include::Action/invokeOn.adoc[leveloffset=+1]
-include::Action/publishing.adoc[leveloffset=+1]
-include::Action/restrictTo.adoc[leveloffset=+1]
-include::Action/semantics.adoc[leveloffset=+1]
-include::Action/typeOf.adoc[leveloffset=+1]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/_attributes.adoc
deleted file mode 100644
index d011536..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ../..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/associateWith.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/associateWith.adoc
deleted file mode 100644
index b816b7e..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/associateWith.adoc
+++ /dev/null
@@ -1,67 +0,0 @@
-[[associateWith]]
-= `associateWith()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-
-The `associateWith` attribute allows an action to be associated with other properties or collections of the same domain object.
-The optional `associateWithSequence` attribute specifies the order of the action in the UI.
-
-For example, an `Order` could have a collection of ``OrderItem``s, and might provide actions to add and remove items:
-
-[source,java]
-----
-public class Order {
-
- @Collection
- SortedSet<OrderItem> getItems() { /* ... */ }
-
- @Action(associateWith="items", associateWithSequence="1")
- public Order addItem(Product p, int quantity) { /* ... */ }
-
- @Action(associateWith="items", associateWithSequence="2")
- public Order removeItem(OrderItem item) { /* ... */ }
- ...
-}
-----
-
-These actions - `addItem()` and `removeItem()` can be thought of as associated with with the `items` collection because that is the state that they primarily affect.
-
-In the user interface associated actions are rendered close to the member to which they relate.
-
-[NOTE]
-====
-The same effect can be accomplished using `@MemberOrder` or with the `.layout.xml` file.
-====
-
-
-== Inferred Defaults and Choices
-
-If an action is associated with a collection, then any scalar or collection parameter of the action that is the same type as that collection will automatically have a list of choices provided for it, being the items of the associated collection.
-
-This is only done provided that there isn't already an explicit `choicesNXxx()` or `autoCompleteNXxx()` supporting method.
-However, this list of choices _does_ take priority over any choices that are inferred from the parameter type itself (as per either an `@DomainObject(autoCompleteRepository=...)` or `@DomainObject(bounded=...)`).
-
-In addition, if the action has a collection parameter of the same type as the associated collection, then the Wicket viewer will render the collection with checkboxes.
-The user can use these checkboxes can be used to select the items of the action parameter.
-
-For example, suppose we have a "removeItems(...)" action:
-
-[source,java]
-----
-public class Order {
-
- @Collection
- SortedSet<OrderItem> getItems() { /* ... */ }
-
- ...
-
- @Action(associateWith="items", associateWithSequence="2")
- public Order removeItems(SortedSet<OrderItem> items) { /* ... */ }
-}
-----
-
-The Wicket viewer will then render the "items" collection with checkboxes, and any selected items will be used as the pre-selected set of items if the action is invoked.
\ No newline at end of file
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/command.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/command.adoc
deleted file mode 100644
index edda37f..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/command.adoc
+++ /dev/null
@@ -1,419 +0,0 @@
-[[command]]
-= Command Persistence and Processing
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Every action invocation (and property edit for that matter) is automatically reified into a concrete `Command` object.
-The `@Action(command=..., commandXxx=...)` attributes provide hints for the persistence of that `Command` object, and the subsequent processing of that persisted command.
-The primary use cases for this are to support the deferring the execution of the action such that it can be invoked in the background, and to replay commands in a master/slave configuration.
-
-Note that for a `Command` to actually be persisted requires an appropriate implementation of `CommandService` SPI.
-The framework does _not_ provide an implementation of this SPI "out-of-the-box".
-However, the (non-ASF) Incode Platform's link:https://platform.incode.org/modules/spi/command/spi-command.html[ command module]) _does_ provide such an implementation.
-
-
-== Design
-
-The annotation works with (and is influenced by the behaviour of) a number of domain services:
-
-* xref:refguide:applib-svc:application-layer-api/CommandContext.adoc[`CommandContext`]
-* xref:refguide:applib-svc:application-layer-spi/CommandService.adoc[`CommandService`]
-* xref:refguide:applib-svc:spi/BackgroundService.adoc[`BackgroundService`] and
-* xref:refguide:applib-svc:application-layer-spi/BackgroundCommandService.adoc[`BackgroundCommandService`]
-
-
-Each action invocation is automatically reified by the xref:refguide:applib-svc:application-layer-api/CommandContext.adoc[`CommandContext`] service into a `Command` object, capturing details of the target object, the action, the parameter arguments, the user, a timestamp and so on.
-
-If an appropriate `CommandService` is configured (for example using (non-ASF) link:https://platform.incode.org/modules/spi/command/spi-command.html[Incode Platform's command] module), then the `Command` itself is persisted.
-
-By default, actions are invoked in directly in the thread of the invocation.
-If there is an implementation of `BackgroundCommandService` (as the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s command module does provide), then this means in turn that the `BackgroundService` can be used by the domain object code to programmatically create background ``Command``s.
-
-[NOTE]
-====
-If background ``Command``s are used, then an external scheduler, using xref:userguide:btb:about.adoc#BackgroundCommandExecution[headless access], must also be configured.
-====
-
-
-
-== `command()` and `commandPersistence()`
-
-The `command()` and `commandPersistence() attributes work together to determine whether a command will actually be persisted.
-There inter-relationship is somewhat complex, so is probably best explained by way of examples:
-
-[cols="1a,1a,1a,1a,1a,2a", options="header"]
-|===
-
-| `command()`
-|`isis.services.
-command.actions` config property
-| action's declared `semantics()`
-| `command
-Persistence()`
-| action dirties objects?
-| is command persisted?
-
-| `ENABLED`
-| (any)
-| (any)
-| `PERSISTED`
-| (either)
-| yes
-
-| `ENABLED`
-| (any)
-| (any)
-| `IF_HINTED`
-| no
-| no
-
-| `ENABLED`
-| (any)
-| (any)
-| `IF_HINTED`
-| yes
-| yes
-
-| `ENABLED`
-| (any)
-| (any)
-| `NOT_PERSISTED`
-| (any)
-| no
-
-| `AS_CONFIGURED`
-| `all`
-| (any)
-| `PERSISTED`
-| no
-| yes
-
-| `AS_CONFIGURED`
-| `all`
-| (any)
-| `IF_HINTED`
-| no
-| no
-
-| `AS_CONFIGURED`
-| `all`
-| (any)
-| `IF_HINTED`
-| yes
-| yes
-
-| `AS_CONFIGURED`
-| `all`
-| (any)
-| `NOT_PERSISTED`
-| (any)
-| no
-
-| `AS_CONFIGURED`
-| `ignoreSafe` or `ignoreQueryOnly`
-| `SAFE`
-| `PERSISTED`
-| no
-| no (!)
-
-| `AS_CONFIGURED`
-| `ignoreSafe` or `ignoreQueryOnly`
-| `SAFE`
-| `IF_HINTED` or `NOT_PERSISTED`
-| no
-| no
-
-| `AS_CONFIGURED`
-| `ignoreSafe` or `ignoreQueryOnly`
-| `SAFE`
-| `PERSISTED` or `IF_HINTED`
-| yes
-| yes
-
-| `AS_CONFIGURED`
-| `ignoreSafe` or `ignoreQueryOnly`
-| `SAFE`
-| `NOT_PERSISTED`
-| yes
-| yes (!)
-
-| `AS_CONFIGURED`
-| `ignoreSafe` or `ignoreQueryOnly`
-| `IDEMPOTENT` or `NON_IDEMPOTENT`
-| `PERSISTED`
-| (any)
-| yes
-
-| `AS_CONFIGURED`
-| `ignoreSafe` or `ignoreQueryOnly`
-| `IDEMPOTENT` or `NON_IDEMPOTENT`
-| `IF_HINTED`
-| no
-| no
-
-| `AS_CONFIGURED`
-| `ignoreSafe` or `ignoreQueryOnly`
-| `IDEMPOTENT` or `NON_IDEMPOTENT`
-| `IF_HINTED`
-| yes
-| yes
-
-| `AS_CONFIGURED`
-| `ignoreSafe` or `ignoreQueryOnly`
-| `IDEMPOTENT` or `NON_IDEMPOTENT`
-| `NOT_PERSISTED`
-| (any)
-| no
-
-| `AS_CONFIGURED`
-| `none`
-| (any)
-| `PERSISTED`
-| no
-| no (!)
-
-| `AS_CONFIGURED`
-| `none`
-| (any)
-| `PERSISTED`
-| yes
-| yes
-
-| `AS_CONFIGURED`
-| `none`
-| (any)
-| `IF_HINTED`
-| no
-| no
-
-| `AS_CONFIGURED`
-| `none`
-| (any)
-| `IF_HINTED`
-| yes
-| yes
-
-| `AS_CONFIGURED`
-| `none`
-| (any)
-| `NOT_PERSISTED`
-| no
-| no
-
-| `AS_CONFIGURED`
-| `none`
-| (any)
-| `NOT_PERSISTED`
-| yes
-| yes (!)
-
-| `DISABLED`
-| (any)
-| (any)
-| `PERSISTED`
-| no
-| no (!)
-
-| `DISABLED`
-| (any)
-| (any)
-| `PERSISTED`
-| yes
-| yes
-
-| `DISABLED`
-| (any)
-| (any)
-| `IF_HINTED`
-| no
-| no
-
-| `DISABLED`
-| (any)
-| (any)
-| `IF_HINTED`
-| yes
-| yes
-
-| `DISABLED`
-| (any)
-| (any)
-| `NOT_PERSISTED`
-| no
-| no
-
-| `DISABLED`
-| (any)
-| (any)
-| `NOT_PERSISTED`
-| yes
-| yes (!)
-
-|===
-
-For example:
-
-[source,java]
-----
-public class Order {
- @Action(
- command=CommandReification.ENABLED,
- commandPersistence=CommandPersistence.PERSISTED
- )
- public Invoice generateInvoice( /* ... */ ) { /* ... */ }
-}
-----
-
-As can be seen, whether a command is actually persisted does not always follow the value of the `commandPersistence()` attribute.
-This is because the `command()` attribute actually determines whether any command metadata for the action is captured within the framework's internal metamodel.
-If `command` is `DISABLED` or does not otherwise apply due to the action's declared semantics, then the framework decides to persist a command based solely on whether the action dirtied any objects (as if `commandPersistence()` was set to `IF_HINTED`).
-
-
-
-
-
-
-== `commandExecuteIn()`
-
-For persisted commands, the `commandExecuteIn()` attribute determines whether the `Command` should be executed in the foreground (the default) or executed in the background.
-
-Background execution means that the command is not executed immediately, but is available for a configured xref:refguide:applib-svc:application-layer-spi/BackgroundCommandService.adoc[`BackgroundCommandService`] to execute, eg by way of an in-memory scheduler such as Quartz.
-See xref:userguide:btb:about.adoc#BackgroundCommandExecution[here] for further information on this topic.
-
-For example:
-
-[source,java]
-----
-public class Order {
- @Action(
- command=CommandReification.ENABLED,
- commandExecuteIn=CommandExecuteIn.BACKGROUND
- )
- public Invoice generateInvoice(...) { /* ... */ }
-}
-----
-
-will result in the `Command` being persisted but its execution deferred to a background execution mechanism.
-The returned object from this action invocation is the persisted `Command` itself.
-
-
-
-
-== `commandDtoProcessor()`
-
-The `commandDtoProcessor()` attribute allows an implementation of `CommandDtoProcessor` to be specified.
-This interface has the following API:
-
-[source,java]
-----
-public interface CommandDtoProcessor {
- CommandDto process( // <1>
- Command command, // <2>
- CommandDto dto); // <3>
-}
-----
-<1> The returned `CommandDto`.
-This will typically be the `CommandDto` passed in, but supplemented in some way.
-<2> The `Command` being processed
-<3> The `CommandDto` (XML) obtained already from the `Command` (by virtue of it also implementing `CommandWithDto`, see discussion below).
-
-This interface is used by the framework-provided implementations of `ContentMappingService` for the REST API, allowing ``Command``s implementations that also implement `CommandWithDto` to be further customised as they are serialized out.
-The primary use case for this capability is in support of master/slave replication.
-
-* on the master, ``Command``s are serialized to XML.
-This includes the identity of the target object and the argument values of all parameters.
-
-+
-[IMPORTANT]
-====
-However, any ``Blob``s and ``Clob``s are deliberately excluded from this XML (they are instead stored as references).
-This is to prevent the storage requirements for `Command` from becoming excessive.
-A `CommandDtoProcessor` can be provided to re-attach blob information if required.
-====
-
-* replaying ``Command``s requires this missing parameter information to be reinstated.
-The `CommandDtoProcessor` therefore offers a hook to dynamically re-attach the missing `Blob` or `Clob` argument.
-
-
-As a special case, returning `null` means that the command's DTO is effectively excluded when retrieving the list of commands.
-If replicating from master to slave, this effectively allows certain commands to be ignored.
-The `CommandDtoProcessor.Null` class provides a convenience implementation for this requirement.
-
-[NOTE]
-====
-If `commandDtoProcessor()` is specified, then `command()` is assumed to be ENABLED.
-====
-
-
-
-=== Example implementation
-
-Consider the following method:
-
-[source,java]
-----
-@Action(
- domainEvent = IncomingDocumentRepository.UploadDomainEvent.class,
- commandDtoProcessor = DeriveBlobArg0FromReturnedDocument.class
-)
-public Document upload(final Blob blob) {
- final String name = blob.getName();
- final DocumentType type = DocumentTypeData.INCOMING.findUsing(documentTypeRepository);
- final ApplicationUser me = meService.me();
- String atPath = me != null ? me.getAtPath() : null;
- if (atPath == null) {
- atPath = "/";
- }
- return incomingDocumentRepository.upsertAndArchive(type, atPath, name, blob);
-}
-----
-
-The `Blob` argument will not be persisted in the memento of the `Command`, but the information is implicitly available in the `Document` that is returned by the action.
-The `DeriveBlobArg0FromReturnedDocument` processor retrieves this information and dynamically adds:
-
-[source,java]
-----
-public class DeriveBlobArg0FromReturnedDocument
- extends CommandDtoProcessorForActionAbstract {
-
- @Override
- public CommandDto process(Command command, CommandDto commandDto) {
- final Bookmark result = commandWithDto.getResult();
- if(result == null) {
- return commandDto;
- }
- try {
- final Document document = bookmarkService.lookup(result, Document.class);
- if (document != null) {
- ParamDto paramDto = getParamDto(commandDto, 0);
- CommonDtoUtils.setValueOn(paramDto, ValueType.BLOB, document.getBlob(), bookmarkService);
- }
- } catch(Exception ex) {
- return commandDto;
- }
- return commandDto;
- }
- @Inject
- BookmarkService bookmarkService;
-}
-----
-
-
-=== Null implementation
-
-The null implementation can be used to simply indicate that no DTO should be returned for a `Command`.
-The effect is to ignore it for replay purposes:
-
-[source,xml]
-----
-pubc interface CommandDtoProcessor {
- ...
- class Null implements CommandDtoProcessor {
- public CommandDto process(Command command, CommandDto commandDto) {
- return null;
- }
- }
-}
-----
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/domainEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/domainEvent.adoc
deleted file mode 100644
index 0073e84..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/domainEvent.adoc
+++ /dev/null
@@ -1,195 +0,0 @@
-[[domainEvent]]
-= domainEvent()
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a domain object (or list of domain objects) is to be rendered, the framework fires off multiple domain events for every property, collection and action of the domain object.
-In the cases of the domain object's actions, the events that are fired are:
-
-* hide phase: to check that the action is visible (has not been hidden)
-* disable phase: to check that the action is usable (has not been disabled)
-* validate phase: to check that the action's arguments are valid
-* pre-execute phase: before the invocation of the action
-* post-execute: after the invocation of the action
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] using either link:https://github.com/google/guava[Guava] or link:http://www.axonframework.org/[Axon Framework] annotations and can influence each of these phases.
-
-By default the event raised is `ActionDomainEvent.Default`.
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- @Action()
- public ToDoItem completed() { /* ... */ }
- ...
-}
-----
-
-
-The `domainEvent()` attribute allows a custom subclass to be emitted allowing more precise subscriptions (to those
-subclasses) to be defined instead.
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- public static class CompletedEvent extends ActionDomainEvent<ToDoItem> { } // <1>
- @Action(domainEvent=CompletedEvent.class)
- public ToDoItem completed() { /* ... */ }
-}
-----
-
-The benefit is that subscribers can be more targeted as to the events that they subscribe to.
-
-
-[NOTE]
-====
-The framework provides no-arg constructor and will initialize the domain event using (non-API) setters rather than through the constructor.
-This substantially reduces the boilerplate required in subclasses because no explicit constructor is required.
-====
-
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API. The examples below use the Guava API.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ActionDomainEvent.class)
- public void on(ActionDomainEvent ev) {
- // ...
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ToDoItem.CompletedEvent.class)
- public void on(ToDoItem.CompletedEvent ev) {
- // ...
- }
-}
-----
-
-
-
-The subscriber's method is called (up to) 5 times:
-
-* whether to veto visibility (hide)
-* whether to veto usability (disable)
-* whether to veto execution (validate)
-* steps to perform prior to the action being invoked
-* steps to perform after the action has been invoked
-
-The subscriber can distinguish these by calling `ev.getEventPhase()`.
-Thus the general form is:
-
-[source,java]
-----
- import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
-
- @EventListener(ActionDomainEvent.class)
- public void on(ActionDomainEvent ev) {
- switch(ev.getEventPhase()) {
- case HIDE:
- // call ev.hide() or ev.veto("") to hide the action
- break;
- case DISABLE:
- // call ev.disable("...") or ev.veto("...") to disable the action
- break;
- case VALIDATE:
- // call ev.invalidate("...") or ev.veto("...")
- // if action arguments are invalid
- break;
- case EXECUTING:
- break;
- case EXECUTED:
- break;
- }
- }
-}
-----
-
-It is also possible to abort the transaction during the executing or executed phases by throwing an exception. If the exception is a subtype of `RecoverableException` then the exception will be rendered as a user-friendly warning (eg Growl/toast) rather than an error.
-
-
-
-
-== Default, Doop and Noop events
-
-If the `domainEvent` attribute is not explicitly specified (is left as its default value, `ActionDomainEvent.Default`), then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.actionAnnotation.domainEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
-
-On the other hand, if the `domainEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `ActionDomainEvent.Doop` as such a subclass, so setting the `domainEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
-
-And, conversely, the framework also provides `ActionDomainEvent.Noop`; if `domainEvent` attribute is set to this class, then no event will be posted.
-
-
-
-=== Class-level default
-
-Sometimes a subscriber is interested in all of the actions of a given class, though not any individual action.
-A common use case is to hide or disable all actions for some particular object for some particular user group.
-
-For this use, the default action domain event can be annotated using `@DomainObject`:
-
-[source,java]
-----
-@DomainObject(
- actionDomainEvent=ToDoItem.ActionDomainEventDefault.class
-)
-public class ToDoItem {
- public static class ActionDomainEventDefault
- extends org.apache.isis.applib.events.domain.ActionDomainEvent<Object> { }
- ...
-
- public void updateDescription(final String description) {
- this.description = description;
- }
-
-}
-----
-
-
-== Raising events programmatically
-
-Normally events are only raised for interactions through the UI.
-However, events can be raised programmatically either by calling the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] API directly, or by emulating the UI by wrapping the target object using the xref:refguide:applib-svc:application-layer-api/WrapperFactory.adoc[`WrapperFactory`] domain service.
-
-
-== See also
-
-This attribute is also supported for:
-
-* xref:refguide:applib-ant:Collection.adoc#domainEvent[collections] and
-* xref:refguide:applib-ant:Property.adoc#domainEvent[properties].
-
-
-
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/hidden.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/hidden.adoc
deleted file mode 100644
index 6c2577a..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/hidden.adoc
+++ /dev/null
@@ -1,57 +0,0 @@
-[[hidden]]
-= `hidden()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-
-Actions can be hidden at the domain-level, indicating that they are not visible to the end-user.
-
-[TIP]
-====
-It is also possible to use xref:refguide:applib-ant:ActionLayout.adoc#hidden[`@ActionLayout#hidden()`] or xref:vw:ROOT:layout/file-based.adoc[file-based layouts] such that the action can be hidden at the view layer.
-Both options are provided with a view that in the future the view-layer semantics may be under the control of (expert) users, whereas domain-layer semantics should never be overridden or modified by the user.
-====
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @Action(hidden=Where.EVERYWHERE)
- public void updateStatus() { /* ... */ }
- ...
-}
-----
-
-The acceptable values for the `where` parameter are:
-
-* `Where.EVERYWHERE` or `Where.ANYWHERE` +
-+
-The action should be hidden at all times.
-
-* `Where.NOWHERE` +
-+
-The action should not be hidden.
-
-
-The other values of the `Where` enum have no meaning for a collection.
-
-
-
-[NOTE]
-====
-For actions of domain services the visibility is dependent upon its xref:refguide:applib-ant:DomainService.adoc#nature[`@DomainService#nature()`] and also on whether it is contributed (as per xref:refguide:applib-ant:ActionLayout.adoc#contributedAs[`@ActionLayout#contributedAs()`]).
-====
-
-
-
-== See also
-
-This attribute can also be applied to:
-
-* xref:refguide:applib-ant:Property.adoc#hidden[properties]
-* xref:refguide:applib-ant:Collection.adoc#hidden[collections].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/invokeOn.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/invokeOn.adoc
deleted file mode 100644
index 7414d5f..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/invokeOn.adoc
+++ /dev/null
@@ -1,64 +0,0 @@
-[[invokeOn]]
-= `invokeOn()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `invokeOn()` attribute indicates whether the an action can be invoked on a single object (the default) and/or on many objects in a collection.
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- @Action(invokeOn=InvokeOn.OBJECT_AND_COLLECTION)
- public void markAsCompleted() {
- setCompleted(true);
- }
- ...
-}
-----
-
-
-Actions to be invoked on collection (currently) have a number of constraints. It:
-
-* must take no arguments
-* cannot be hidden (any annotations or supporting methods to that effect will be ignored)
-* cannot be disabled (any annotations or supporting methods to that effect will be ignored).
-
-The example given above is probably ok, because `setCompleted()` is most likely idempotent. However, if the action also called some other method, then we should add a guard.
-
-For example, for this non-idempotent action:
-
-[source,java]
-----
-@Action(invokeOn=InvokeOn.OBJECT_AND_COLLECTION)
-public void markAsCompleted() {
- setCompleted(true);
- todoTotalizer.incrementNumberCompleted();
-}
-----
-
-we should instead write it as:
-
-[source,java]
-----
-@Action(invokeOn=InvokeOn.OBJECT_AND_COLLECTION)
-public void markAsCompleted() {
- if(isCompleted()) {
- return;
- }
- setCompleted(true);
- todoTotalizer.incrementNumberCompleted();
-}
-----
-
-[NOTE]
-====
-This attribute has no meaning if annotated on an action of a domain service.
-====
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/publishing.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/publishing.adoc
deleted file mode 100644
index 160adcf..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/publishing.adoc
+++ /dev/null
@@ -1,57 +0,0 @@
-[[publishing]]
-= `publishing()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-
-The `publishing()` attribute determines whether and how an action invocation is published via the registered implementation of xref:refguide:applib-svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`].
-
-A common use case is to notify external "downstream" systems of changes in the state of the Apache Isis application.
-The default value for the attribute is `AS_CONFIGURED`, meaning that the xref:refguide:config:configuring-core.adoc[configuration property] `isis.services.publish.actions` is used to determine the whether the action is published:
-
-* `all` +
-+
-all action invocations are published
-
-* `ignoreSafe` (or `ignoreQueryOnly`) +
-+
-invocations of actions with safe (read-only) semantics are ignored, but actions which may modify data are not ignored
-
-* `none` +
-+
-no action invocations are published
-
-If there is no configuration property in `isis.properties` then publishing is automatically enabled.
-
-This default can be overridden on an action-by-action basis; if `publishing()` is set to `ENABLED` then the action invocation is published irrespective of the configured value; if set to `DISABLED` then the action invocation is _not_ published, again irrespective of the configured value.
-
-For example:
-
-[source,java]
-----
-public class Order {
- @Action(publishing=Publishing.ENABLED) // <1>
- public Invoice generateInvoice(...) { /* ... */ }
-}
-----
-<1> because set to enabled, will be published irrespective of the configured value.
-
-
-
-
-
-== See also
-
-This attribute is also supported for:
-
-* xref:refguide:applib-ant:DomainObject.adoc#publishing[domain objects]
-+ where it controls whether changed objects are published as events, and for
-
-* xref:refguide:applib-ant:Property.adoc#publishing[properties]
-+
-where it controls whether property edits are published as events.
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/restrictTo.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/restrictTo.adoc
deleted file mode 100644
index ed44686..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/restrictTo.adoc
+++ /dev/null
@@ -1,30 +0,0 @@
-[[restrictTo]]
-= `restrictTo()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-
-By default actions are available irrespective of the xref:refguide:config:deployment-types.adoc[deployment mode]. The `restrictTo()` attribute specifies whether the action should instead be restricted to only available in prototyping mode.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- public Order placeNewOrder() { /* ... */ }
- public List<Order> listRecentOrders() { /* ... */ }
-
- @Action(restrictTo=RestrictTo.PROTOTYPING)
- public List<Order> listAllOrders() { /* ... */ }
- ...
-}
-----
-
-In this case the listing of all orders (in the `listAllOrders()` action) probably doesn't make sense for production; there could be thousands or millions. However, it would be useful to disaply how for a test or demo system where there are only a handful of orders.
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/semantics.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/semantics.adoc
deleted file mode 100644
index 230653d..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/semantics.adoc
+++ /dev/null
@@ -1,91 +0,0 @@
-[[semantics]]
-= `semantics()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `semantics()` attribute describes whether the invocation modifies state of the system, and if so whether it does so idempotently. If the action invocation does _not_ modify the state of the system, in other words is safe, then it also can beused to specify whether the results of the action can be cached automatically for the remainder of the request.
-
-The attribute was originally introduced for the xref:vro:ROOT:about.adoc[RestfulObjects viewer] in order that action invocations could be using the appropriate `HTTP` verb (`GET`, `PUT` and `POST`).
-
-The table below summarizes the semantics:
-
-[cols="2,1,3,1", options="header"]
-|===
-| Semantic
-| Changes state
-| Effect of multiple calls
-| HTTP verb +
-(Restful Objects)
-
-| `SAFE_AND_REQUEST_CACHEABLE`
-| No
-| Will always return the same result each time invoked (within a given request scope)
-| `GET`
-
-| `SAFE`
-| No
-| Might result in different results each invocation
-| `GET`
-
-| `IDEMPOTENT` +
-`IDEMPOTENT_ARE_YOU_SURE`
-| Yes
-| Will make no further changes if called multiple times (eg sets a property or adds to a `Set`). +
-The "are you sure" variant requires that the user must explicitly confirm the action.
-| `PUT`
-
-| `NON_IDEMPOTENT` +
-`NON_IDEMPOTENT_ARE_YOU_SURE`
-| Yes
-| Might change the state of the system each time called (eg increments a counter or adds to a `List`). +
-The "are you sure" variant requires that the user must explicitly confirm the action.
-| `POST`
-
-|===
-
-
-The actions' semantics are also used by the core runtime as part of the in-built concurrency checkng; invocation of a safe action (which includes request-cacheable) does _not_ perform a concurrency check, whereas non-safe actions _do_ perform a concurrency check.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @Action(semantics=SemanticsOf.SAFE_AND_REQUEST_CACHEABLE)
- public CreditRating checkCredit() { /* ... */ }
-
- @Action(semantics=SemanticsOf.IDEMPOTENT)
- public void changeOfAddress(Address address) { /* ... */ }
-
- @Action(semantics=SemanticsOf.NON_IDEMPOTENT)
- public Order placeNewOrder() { /* ... */ }
- ...
-}
-----
-
-Actions that are safe and request-cacheable automatically use the xref:refguide:applib-svc:persistence-layer-api/QueryResultsCache.adoc[`QueryResultsCache`] service to cache the result of the method. Note though that the results of this caching will only be apparent if the action is invoked from another method using the xref:refguide:applib-svc:application-layer-api/WrapperFactory.adoc[`WrapperFactory`] service.
-
-Continuing the example above, imagine code that loops over a set of ``Order``s where each `Order` has an associated `Customer`. We want to check the credit rating of each `Customer` (a potentially expensive operation) but we don't want to do it more than once per `Customer`. Invoking through the `WrapperFactory` will allow us to accomplish this by exploiting the semantics of `checkCredit()` action:
-
-[source,java]
-----
-public void dispatchToCreditWorthyCustomers(final List<Order> orders) {
- for(Order order: orders) {
- Customer customer = order.getCustomer();
- CreditRating creditRating = wrapperFactory.wrapSkipRules(customer).checkCredit(); // <1>
- if(creditRating.isWorthy()) {
- order.dispatch();
- }
- }
-}
-@Inject
-WrapperFactory wrapperFactory;
-----
-<1> wrap the customer to dispatch.
-
-In the above example we've used `wrapSkipRules(...)` but if we wanted to enforce any business rules associated with the `checkCredit()` method, we would have used `wrap(...)`.
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/typeOf.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/typeOf.adoc
deleted file mode 100644
index 4106bbf..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Action/typeOf.adoc
+++ /dev/null
@@ -1,37 +0,0 @@
-[[typeOf]]
-= `typeOf()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `typeOf()` attribute specifies the expected type of an element returned by the action (returning a collection), when for whatever reason the type cannot be inferred from the generic type, or to provide a hint about the actual run-time (as opposed to compile-time) type.
-
-
-For example:
-
-[source,java]
-----
-public void AccountService {
- @Action(typeOf=Customer.class)
- public List errantAccounts() {
- return customers.allNewCustomers();
- }
- ...
-
- @Inject
- CustomerRepository customers;
-}
-----
-
-[TIP]
-====
-In general we recommend that you use generics instead, eg `List<Customer>`.
-====
-
-
-== See also
-
-This attribute can also be specified for xref:refguide:applib-ant:Collection.adoc#typeOf[collections].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout.adoc
deleted file mode 100644
index e23e228..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout.adoc
+++ /dev/null
@@ -1,121 +0,0 @@
-= `@ActionLayout`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-The `@ActionLayout` annotation applies to actions, collecting together all UI hints within a single annotation.
-
-The table below summarizes the annotation's attributes.
-
-.`@ActionLayout` attributes
-[cols="2,2,4a", options="header"]
-|===
-
-| Attribute
-| Values (default)
-| Description
-
-
-|xref:refguide:applib-ant:ActionLayout.adoc#bookmarking[`bookmarking()`]
-|`AS_ROOT`, `NEVER` +
-(`NEVER`)
-|indicates if an action (with safe xref:refguide:applib-ant:Action.adoc#semantics[action semantics]) is automatically bookmarked.
-
-
-|xref:refguide:applib-ant:ActionLayout.adoc#contributedAs[`contributedAs()`]
-|`AS_BOTH`, `AS_ACTION`, `AS_ASSOCIATION`, `AS_NEITHER` +
-(`AS_BOTH`)
-|for a domain service action that can be contributed, whether to contribute as an action or as an association (ie a property or collection). +
-
-For a domain service action to be contributed, the domain services must have a xref:refguide:applib-ant:DomainService.adoc#nature[nature] nature of either `VIEW` or `VIEW_CONTRIBUTIONS_ONLY`, and the action must have xref:refguide:applib-ant:Action.adoc#semantics[safe action semantics], and takes a single argument, namely the contributee domain object.
-
-
-|xref:refguide:applib-ant:ActionLayout.adoc#cssClass[`cssClass()`]
-|Any string valid as a CSS class
-|an additional CSS class around the HTML that represents for the action, to allow targetted styling in xref:refguide:config:application-specific/application-css.adoc[`application.css`]. +
-
-Supported by the xref:vw:ROOT:about.adoc[Wicket viewer] but currently ignored by the xref:vro:ROOT:about.adoc[RestfulObjects viewer].
-
-
-|xref:refguide:applib-ant:ActionLayout.adoc#cssClassFa[`cssClassFa()`]
-|Any valid link:http://fortawesome.github.io/Font-Awesome/[Font awesome] icon name
-|specify a font awesome icon for the action's menu link or icon. +
-
-
-|`cssClassFaPosition()`
-|`LEFT`, `RIGHT` +
-(`LEFT`)
-|Positioning of the icon on the button/menu item.
-
-
-|xref:refguide:applib-ant:ActionLayout.adoc#describedAs[`describedAs()`]
-|String.
-|provides a short description of the action, eg for rendering as a 'tool tip'.
-
-
-|xref:refguide:applib-ant:ActionLayout.adoc#hidden[`hidden()`]
-|`EVERYWHERE`, `NOWHERE` +
-(`NOWHERE`)
-|indicates where (in the UI) the action should be hidden from the user.
-
-
-|xref:refguide:applib-ant:ActionLayout.adoc#named[`named()`]
-|String.
-|to override the name inferred from the action's name in code. +
-
-A typical use case is if the desired name is a reserved Java keyword, such as `default` or `package`.
-
-|xref:refguide:applib-ant:ActionLayout.adoc#position[`position()`]
-|`BELOW`, `RIGHT`, `PANEL`, `PANEL_DROPDOWN` (`BELOW`)
-|for actions associated (using xref:refguide:applib-ant:MemberOrder.adoc[`@MemberOrder#named()`]) with properties, the positioning of the action's button with respect to the property
-
-
-|===
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItems {
- @Action(semantics=SemanticsOf.SAFE) // <1>
- @ActionLayout(
- bookmarking=BookmarkPolicy.AS_ROOT,
- cssClass="x-key",
- cssClassFa="fa-checkbox",
- describedAs="Mark the todo item as not complete after all",
- hidden=Where.NOWHERE // <2>
- )
- @MemberOrder(sequence = "1")
- public List<ToDoItem> notYetComplete() {
- ...
- }
-}
-----
-<1> required for bookmarkable actions
-<2> default value, so could be omitted
-
-
-[TIP]
-====
-As an alternative to using the `@ActionLayout` annotation, a xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used (and is generally to be preferred since it is more flexible/powerful).
-====
-
-
-
-
-
-
-
-
-
-
-
-include::ActionLayout/bookmarking.adoc[leveloffset=+1]
-include::ActionLayout/contributedAs.adoc[leveloffset=+1]
-include::ActionLayout/cssClass.adoc[leveloffset=+1]
-include::ActionLayout/cssClassFa.adoc[leveloffset=+1]
-include::ActionLayout/describedAs.adoc[leveloffset=+1]
-include::ActionLayout/hidden.adoc[leveloffset=+1]
-include::ActionLayout/named.adoc[leveloffset=+1]
-include::ActionLayout/position.adoc[leveloffset=+1]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/_attributes.adoc
deleted file mode 100644
index d011536..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ../..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/bookmarking.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/bookmarking.adoc
deleted file mode 100644
index b7f2f51..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/bookmarking.adoc
+++ /dev/null
@@ -1,60 +0,0 @@
-[[bookmarking]]
-= `bookmarking()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `bookmarking()` attribute indicates if an action (with safe xref:refguide:applib-ant:Action.adoc#semantics[action semantics]) is automatically bookmarked.
-
-
-
-
-In the xref:vw:ROOT:about.adoc[Wicket viewer], a link to a bookmarked object is shown in the bookmarks panel:
-
-image::reference-annotations/ActionLayout/bookmarking.png[width="720px",link="{imagesdir}/reference-annotations/ActionLayout/bookmarking.png"]
-
-[NOTE]
-====
-Note that this screenshot shows an earlier version of the xref:vw:ROOT:about.adoc[Wicket viewer] UI (specifically, pre 1.8.0).
-====
-
-[TIP]
-====
-The xref:vw:ROOT:about.adoc[Wicket viewer] supports `alt-[` as a shortcut for opening the bookmark panel. `Esc` will close.
-====
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItems {
- @Action(semantics=SemanticsOf.SAFE)
- @ActionLayout(bookmarking=BookmarkPolicy.AS_ROOT)
- @MemberOrder(sequence = "1")
- public List<ToDoItem> notYetComplete() {
- ...
- }
-}
-----
-
-indicates that the `notYetComplete()` action is bookmarkable.
-
-
-
-[NOTE]
-====
-The enum value `AS_CHILD` has no meaning for actions; it relates only to bookmarked xref:refguide:applib-ant:DomainObject.adoc#bookmarking[domain object]s.
-====
-
-
-== Alternatives
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
-
-== See also
-
-This attribute is also supported for xref:refguide:applib-ant:DomainObjectLayout.adoc#bookmarking[domain objects].
\ No newline at end of file
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/contributedAs.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/contributedAs.adoc
deleted file mode 100644
index d62e977..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/contributedAs.adoc
+++ /dev/null
@@ -1,54 +0,0 @@
-[[contributedAs]]
-= `contributedAs()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-For a domain service action that _can_ be contributed, the `contributedAs()` attribute determines how it is contributed: as an action or as an association (ie a property or collection).
-
-The distinction between property or collection is automatic: if the action returns a `java.util.Collection` (or subtype) then the action is contributed as a collection; otherwise it is contributed as a property.
-
-For a domain service action to be contributed, the domain services must have a xref:refguide:applib-ant:DomainService.adoc#nature[nature] nature of either `VIEW` or `VIEW_CONTRIBUTIONS_ONLY`, and the action must have xref:refguide:applib-ant:Action.adoc#semantics[safe action semantics], and takes a single argument, namely the contributee domain object.
-
-For example:
-
-[source,java]
-----
-@DomainService(nature=NatureOfService.VIEW_CONTRIBUTIONS_ONLY)
-public class CustomerContributions {
- @Action(semantics=SemanticsOf.SAFE)
- @ActionLayout(contributedAs=Contributed.AS_ASSOCIATION)
- public List<Order> mostRecentOrders(Customer customer) { /* ... */ }
- ...
-}
-----
-
-[TIP]
-====
-The `@ActionLayout` is not required if the action does not have safe semantics, or if the action takes more than one argument; in these cases the action can only be contributed _as_ an action.
-====
-
-
-It's also possible to use the attribute to suppress the action completely:
-
-[source,java]
-----
-@DomainService(nature=NatureOfService.VIEW)
-public class OrderContributions {
- @ActionLayout(contributedAs=Contributed.AS_NEITHER)
- public void cancel(Order order);
- ...
-}
-----
-
-In such cases, though, it would probably make more sense to annotate the action as either xref:refguide:applib-ant:Action.adoc#hidden[hidden] or indeed xref:refguide:applib-ant:Programmatic.adoc[`@Programmatic`].
-
-
-
-[NOTE]
-====
-Unlike other `@ActionLayout` attributes, this attribute _cannot_ be specified using a file-based layout because it relates to the contributor domain service, not the contributee domain object.
-====
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/cssClass.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/cssClass.adoc
deleted file mode 100644
index 3498fdb..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/cssClass.adoc
+++ /dev/null
@@ -1,44 +0,0 @@
-[[cssClass]]
-= `cssClass()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `cssClass()` attribute can be used to render additional CSS classes in the HTML (a wrapping `<div>`) that represents the action. xref:refguide:config:application-specific/application-css.adoc[Application-specific CSS] can then be used to target and adjust the UI representation of that particular element.
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- @ActionLayout(cssClass="x-key")
- public ToDoItem postpone(LocalDate until) { /* ... */ }
- ...
-}
-----
-
-[NOTE]
-====
-The similar xref:refguide:applib-ant:ActionLayout.adoc#cssClassFa[`@ActionLayout#cssClassFa()`] annotation attribute is also used as a hint
-to apply CSS, specifically to add http://fortawesome.github.io/Font-Awesome/icons/[Font Awesome icons] on action menu items or buttons.
-====
-
-
-
-== Alternatives
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
-== See also
-
-This attribute can also be applied to:
-
-* xref:refguide:applib-ant:DomainObjectLayout.adoc#cssClass[domain objects]
-* xref:refguide:applib-ant:ViewModelLayout.adoc#cssClass[view models]
-* xref:refguide:applib-ant:PropertyLayout.adoc#cssClass[properties]
-* xref:refguide:applib-ant:CollectionLayout.adoc#cssClass[collections]
-* xref:refguide:applib-ant:ParameterLayout.adoc#cssClass[parameters].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/cssClassFa.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/cssClassFa.adoc
deleted file mode 100644
index 782ed8e..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/cssClassFa.adoc
+++ /dev/null
@@ -1,43 +0,0 @@
-[[cssClassFa]]
-= `cssClassFa()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `cssClassFa()` attribute is used to specify the name of a link:http://fortawesome.github.io/Font-Awesome/icons/[Font Awesome icon] name, to be rendered on the action's representation as a button or menu item. The related `cssClassFaPosition()` attribute specifies the positioning of the icon, to the left or the right of the text.
-
-These attributes can also be applied to xref:refguide:applib-ant:DomainObjectLayout.adoc#cssClassFa[domain objects] and to xref:refguide:applib-ant:ViewModelLayout.adoc#cssClassFa[view models] to specify the object's icon.
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- @ActionLayout(
- cssClassFa="fa-step-backward"
- )
- public ToDoItem previous() { /* ... */ }
-
- @ActionLayout(
- cssClassFa="fa-step-forward",
- cssClassFaPosition=ActionLayout.CssClassFaPosition.RIGHT
- )
- public ToDoItem next() { /* ... */ }
-}
-----
-
-There can be multiple "fa-" classes, eg to mirror or rotate the icon. There is no need to include the mandatory `fa` "marker" CSS class; it will be automatically added to the list. The `fa-` prefix can also be omitted from the class names; it will be prepended to each if required.
-
-
-== Alternatives
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
-
-[NOTE]
-====
-The similar xref:refguide:applib-ant:ActionLayout.adoc#cssClass[`@ActionLayout#cssClass()`] annotation attribute is also used as a hint to apply CSS, but for wrapping the representation of an object or object member so that it can be styled in an application-specific way.
-====
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/describedAs.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/describedAs.adoc
deleted file mode 100644
index 49418a0..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/describedAs.adoc
+++ /dev/null
@@ -1,40 +0,0 @@
-[[describedAs]]
-= `describedAs()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `describedAs()` attribute is used to provide a short description of the action to the user. In the xref:vw:ROOT:about.adoc[Wicket viewer] it is displayed as a 'tool tip'.
-
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @ActionLayout(describedAs="Place a repeat order of the last (most recently placed) order")
- public Order placeRepeatOrder(...) { /* ... */ }
-}
-----
-
-
-
-
-== Alternatives
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
-
-
-== See also
-
-This attribute can also be specified for:
-
-* xref:refguide:applib-ant:CollectionLayout.adoc#describedAs[collections]
-* xref:refguide:applib-ant:PropertyLayout.adoc#describedAs[properties]
-* xref:refguide:applib-ant:ParameterLayout.adoc#describedAs[parameters]
-* xref:refguide:applib-ant:DomainObjectLayout.adoc#describedAs[domain objects]
-* xref:refguide:applib-ant:ViewModelLayout.adoc#describedAs[view models].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/hidden.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/hidden.adoc
deleted file mode 100644
index 4e866e7..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/hidden.adoc
+++ /dev/null
@@ -1,61 +0,0 @@
-[[hidden]]
-= `hidden()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `hidden()` attribute indicates where (in the UI) the action should be hidden from the user.
-
-
-[TIP]
-====
-It is also possible to use xref:refguide:applib-ant:Action.adoc#hidden[`@Action#hidden()`] to hide an action at the domain layer.
-Both options are provided with a view that in the future the view-layer semantics may be under the control of (expert) users, whereas domain-layer semantics should never be overridden or modified by the user.
-====
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @ActionLayout(hidden=Where.EVERYWHERE)
- public void updateStatus() { /* ... */ }
- ...
-}
-----
-
-The acceptable values for the `where` parameter are:
-
-* `Where.EVERYWHERE` or `Where.ANYWHERE` +
-+
-The action should be hidden at all times.
-
-* `Where.NOWHERE` +
-+
-The action should not be hidden.
-
-
-The other values of the `Where` enum have no meaning for a collection.
-
-
-[NOTE]
-====
-For actions of domain services the visibility is dependent upon its xref:refguide:applib-ant:DomainService.adoc#nature[`@DomainService#nature()`] and also on whether it is contributed (as per xref:refguide:applib-ant:ActionLayout.adoc#contributedAs[`@ActionLayout#contributedAs()`]).
-====
-
-
-== Alternatives
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
-
-
-
-
-
-== See also
-
-This attribute can also be applied to:
-* xref:refguide:applib-ant:PropertyLayout.adoc#hidden[properties]
-* xref:refguide:applib-ant:CollectionLayout.adoc#hidden[collections].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/named.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/named.adoc
deleted file mode 100644
index 183623f..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/named.adoc
+++ /dev/null
@@ -1,48 +0,0 @@
-[[named]]
-= `named()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `named()` attribute explicitly specifies the action's name, overriding the name that would normally be inferred from the Java source code.
-
-
-[TIP]
-====
-Following the link:http://en.wikipedia.org/wiki/Don%27t_repeat_yourself[don't repeat yourself] principle, we recommend that you only use this attribute when the desired name cannot be used in Java source code.
-Examples of that include a name that would be a reserved Java keyword (eg "package"), or a name that has punctuation, eg apostrophes.
-====
-
-
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @ActionLayout(named="Get credit rating")
- public CreditRating obtainCreditRating() { /* ... */ }
-}
-----
-
-
-== Alternatives
-
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
-The framework also provides a separate, powerful mechanism for xref:userguide:btb:i18n.adoc[internationalization].
-
-
-
-== See also
-
-This attribute can also be specified for:
-
-* xref:refguide:applib-ant:CollectionLayout.adoc#named[collections]
-* xref:refguide:applib-ant:PropertyLayout.adoc#named[properties]
-* xref:refguide:applib-ant:ParameterLayout.adoc#named[parameters]
-* xref:refguide:applib-ant:DomainObjectLayout.adoc#named[domain objects]
-* xref:refguide:applib-ant:ViewModelLayout.adoc#named[view models]
-* xref:refguide:applib-ant:DomainServiceLayout.adoc#named[domain services].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/position.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/position.adoc
deleted file mode 100644
index b6d8922..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/position.adoc
+++ /dev/null
@@ -1,74 +0,0 @@
-[[position]]
-= `position()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-
-
-The `position()` attribute pertains only to actions that have been associated with properties using xref:refguide:applib-ant:MemberOrder.adoc[`@MemberOrder#named()`]. For these actions, it specifies the positioning of the action's button with respect to the field representing the object property.
-
-The attribute can take one of four values: `BELOW`, `RIGHT`, `PANEL` or `PANEL_DROPDOWN`.
-
-For example:
-
-[source,java]
-----
-public class Customer {
-
- @Property(
- editing=Editing.DISABLED // <1>
- )
- public CustomerStatus getStatus() { /* ... */ }
- public void setStatus(CustomerStatus customerStatus) { /* ... */ }
-
- @MemberOrder(
- named="status", // <2>
- sequence="1"
- )
- @ActionLayout(
- named="Update", // <3>
- position=Position.BELOW
- )
- public CreditRating updateStatus(Customer ) { /* ... */ }
-}
-----
-<1> indicate the property as read-only, such that it can only be updated using an action
-<2> associate the "updateStatus" action with the "status" property
-<3> give the action an abbreviated name, because the fact that the "status" property is to be updated is implied by its positioning
-
-
-The default is `BELOW`, which is rendered (by the xref:vw:ROOT:about.adoc[Wicket viewer]) as shown below:
-
-image::reference-annotations/ActionLayout/position-BELOW.png[width="720px",link="{imagesdir}/reference-annotations/ActionLayout/position-BELOW.png"]
-
-
-If the action is positioned as `RIGHT`, then the action's button is rendered to the right of the property's field, in a compact drop-down. This is ideal if there are many actions associated with a property:
-
-image::reference-annotations/ActionLayout/position-RIGHT.png[width="720px",link="{imagesdir}/reference-annotations/ActionLayout/position-RIGHT.png"]
-
-
-
-If the action is positioned as `PANEL`, then the action's button is rendered on the header of the panel that contains the property:
-
-image::reference-annotations/ActionLayout/position-PANEL.png[width="720px",link="{imagesdir}/reference-annotations/ActionLayout/position-PANEL.png"]
-
-
-
-And finally, if the action is positioned as `PANEL_DROPDOWN`, then the action's button is again rendered on the panel header, but as a drop-down:
-
-
-image::reference-annotations/ActionLayout/position-PANEL_DROPDOWN.png[width="720px",link="{imagesdir}/reference-annotations/ActionLayout/position-PANEL_DROPDOWN.png"]
-
-
-
-If there are multiple actions associated with a single property then the positioning can be mix'ed-and-match'ed as required. If the `PANEL` or `PANEL_DROPDOWN` are used, then (as the screenshots above show) the actions from potentially multiple properties grouped by that panel will be shown together.
-
-
-== Alternatives
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
-The fact that the layout is dynamic (does not require a rebuild/restart) is particularly useful in that the look-n-feel can be easily experimented with and adjusted.
\ No newline at end of file
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/promptStyle.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/promptStyle.adoc
deleted file mode 100644
index 2c67042..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/promptStyle.adoc
+++ /dev/null
@@ -1,62 +0,0 @@
-[[promptStyle]]
-= `promptStyle()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `promptStyle()` attribute is used to specify whether, when invoking an action associated with a domain object property, the parameters for the action are prompted either in modal dialog box, a (non-modal) sidebar dialog box, or is prompted using an inline panel (replacing the property on the page).
-For more on sidebar vs modal dialogs, see xref:vw:ROOT:features/sidebar-vs-modal-dialogs.adoc[Wicket viewer features].
-
-The prompt style is influenced by two xref:vw:ROOT:configuration-properties.adoc[configuration properties]:
-
-* if the `promptStyle()` attribute is set to `DIALOG`, then a configuration property is used to determine whether to render using a modal dialog or a sidebar:
-
-** `isis.viewer.wicket.dialogMode` if the action is for a domain object (entity or view model)
-+
-If the configuration property is not set, then sidebar is used.
-
-** `isis.viewer.wicket.dialogModeForMenu` if the action is for a domain service
-+
-If the configuration property is not set, then modal is used.
-
-
-* If the attribute is not set at all, then the `isis.viewer.wicket.promptStyle` configuration property is used to specify the preferred prompt style.
-+
-If the configuration property is not set, then an inline prompt is used.
-+
-And, if this _is_ set but is set to just `DIALOG`, then the `isis.viewer.wicket.dialogMode` configuration property determines which style.
-
-For example:
-
-[source,java]
-----
-public class Customer {
-
- public int getNotes(){ /* ... */ }
- public void setNotes(String notes) { /* ... */ }
-
- @MemberOrder(
- named="notes", // <1>
- sequence="1")
- @ActionLayout(
- promptStyle=PromptStyle.INLINE // <2>
- )
- public int getNotes(){ /* ... */ }
- public void setNotes(String notes) { /* ... */ }
-}
-----
-<1> associate this action with the "notes" property
-<2> prompt for the action's parameters using an inline panel.
-
-Exactly one action for a given property can be specified with `INLINE_AS_IF_EDIT`.
-Assuming that the corresponding property is not itself editable, this means that the property will be rendered as if it is editable, but the action's prompt form will be rendered instead.
-The net effect is that a property conceptually consisting of different parts (eg a name, an address or a date) can be updated using an action that lets each separate part be specified independently.
-
-
-== Alternatives
-
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/redirect.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/redirect.adoc
deleted file mode 100644
index 10b35fb..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ActionLayout/redirect.adoc
+++ /dev/null
@@ -1,62 +0,0 @@
-[[redirect]]
-= `redirect()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Often an action, when invoked, will return the target (in other words, will "return this").
-The `redirect()` attribute is used to control how the object is re-rendered.
-
-There are three options:
-
-* if set to `ONLY_IF_DIFFERS`, then the existing web page will not be re-rendered, rather it will be updated in-place (using Ajax).
-+
-This makes for a smoother UI.
-+
-[NOTE]
-====
-Any properties with xref:refguide:applib-ant:PropertyLayout.adoc#unchanging[`@PropertyLayout#unchanging`] are _not_ updated.
-====
-
-* if set to `EVEN_IF_SAME`, then a redirect occurs and a new web page is rendered.
-
-* if set to `AS_CONFIGURED`, then the default behaviour is as specified by the `isis.viewer.wicket.redirectEvenIfSameObject` xref:vw:ROOT:configuration-properties.adoc[configuration property]).
-
-One use case for choosing `EVEN_IF_SAME` is if the action "returning this" is intended in some way to require that the object use a different layout, as per multiple layout support, as specified using the xref:refguide:applib-cm:methods.adoc#layout[`layout()`] method.
-
-For example:
-
-[source,java]
-----
-public class Customer {
-
- @Getter @Setter
- @PropertyLayout(hidden=ALWAYS)
- private String layout;
-
- public String layout() { // <1>
- return layout;
- }
-
- @ActionLayout(
- redirect=EVEN_IF_SAME // <2>
- )
- public Customer switchToEditMode() {
- setLayout("edit");
- return this;
- }
-}
-----
-<1> specifies the alternate layout to use, eg `Customer-edit.layout.xml`.
-<2> even though this action returns the same target object, still re-render the page.
-
-
-If `switchToEditMode()` action is invoked, then the UI will attempt to render the customer using a `Customer.layout.edit.xml` layout file (instead of the default `Customer.layout.xml`).
-
-
-== Alternatives
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection.adoc
deleted file mode 100644
index bb40e5e..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection.adoc
+++ /dev/null
@@ -1,103 +0,0 @@
-= `@Collection`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-The `@Collection` annotation applies to collections collecting together all domain semantics within a single annotation.
-
-The table below summarizes the annotation's attributes.
-
-.`@Collection` attributes
-[cols="2,2,4a", options="header"]
-|===
-
-| Attribute
-| Values (default)
-| Description
-
-
-|xref:refguide:applib-ant:Collection.adoc#domainEvent[`domainEvent()`]
-|subtype of `CollectionDomainEvent` +
-(`CollectionDomainEvent.Default`)
-|the event type to be posted to the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] to broadcast the collection's business rule checking (hide, disable, validate) and its modification (before and after).
-
-
-|xref:refguide:applib-ant:Collection.adoc#editing[`editing()`]
-|`ENABLED`, `DISABLED`, `AS_CONFIGURED` +
-(`AS_CONFIGURED`)
-|whether a collection can be added to or removed from within the UI
-
-
-|`editingDisabledReason()`
-|String value
-|if `editing()` is `DISABLED`, provides a reason as to why.
-
-
-|xref:refguide:applib-ant:Collection.adoc#hidden[`hidden()`]
-|`EVERYWHERE`, `OBJECT_FORMS`, `NOWHERE` +
-(`NOWHERE`)
-|indicates where (in the UI) the collection should be hidden from the user.
-
-
-|xref:refguide:applib-ant:Collection.adoc#notPersisted[`notPersisted()`]
-|`true`, `false` +
-(`false`)
-|whether to exclude from snapshots. +
-
-[WARNING]
-====
-Collection must also be annotated with `@javax.jdo.annotations.NotPersistent` in order to not be persisted.
-====
-
-
-
-|xref:refguide:applib-ant:Collection.adoc#typeOf[`typeOf()`]
-|
-|hints as to the run-time type of the objects within that collection (as a fallback)
-
-|===
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- public static class DependenciesChangedEvent
- extends CollectionDomainEvent<ToDoItem, ToDoItem> { } // <1>
- @Collection(
- domainEvent=DependenciesChangedEvent.class,
- editing = Editing.ENABLED,
- hidden = Where.NOWHERE, // <2>
- notPersisted = false, // <3>
- typeOf = ToDoItem.class // <4>
- )
- public SortedSet<ToDoItem> getDependencies() { /* ... */ }
- ...
-}
-----
-<1> can use no-arg constructor.
-<2> default value, so could be omitted
-<3> default value, so could be omitted
-<4> default value, so could be omitted
-
-
-
-
-[TIP]
-====
-The annotation is one of a handful (others including xref:refguide:applib-ant:CollectionLayout.adoc[`@CollectionLayout`], xref:refguide:applib-ant:Property.adoc[`@Property`] and xref:refguide:applib-ant:PropertyLayout.adoc[`@PropertyLayout`]) that can also be applied to the field, rather than the getter method. This is specifically
-so that boilerplate-busting tools such as link:https://projectlombok.org/[Project Lombok] can be used.
-====
-
-
-
-
-
-
-
-include::Collection/domainEvent.adoc[leveloffset=+1]
-include::Collection/editing.adoc[leveloffset=+1]
-include::Collection/hidden.adoc[leveloffset=+1]
-include::Collection/notPersisted.adoc[leveloffset=+1]
-include::Collection/typeOf.adoc[leveloffset=+1]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/_attributes.adoc
deleted file mode 100644
index d011536..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ../..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/domainEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/domainEvent.adoc
deleted file mode 100644
index b0d1ae1..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/domainEvent.adoc
+++ /dev/null
@@ -1,177 +0,0 @@
-[[domainEvent]]
-= `domainEvent()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a domain object (or list of domain objects) is to be rendered, the framework fires off multiple domain events for every property, collection and action of the domain object.
-In the cases of the domain object's collections, the events that are fired are:
-
-* hide phase: to check that the collection is visible (has not been hidden)
-* disable phase: to check that the collection is usable (has not been disabled)
-* validate phase: to check that the collection's arguments are valid (to add or remove an element)
-* pre-execute phase: before the modification of the collection
-* post-execute: after the modification of the collection
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] using either link:https://github.com/google/guava[Guava] or link:http://www.axonframework.org/[Axon Framework] annotations and can influence each of these phases.
-
-
-[WARNING]
-====
-The xref:vw:ROOT:about.adoc[Wicket viewer] does _not_ currently support the modification of collections; they are rendered read-only.
-However, domain events are still relevant to determine if such collections should be hidden.
-
-The workaround is to create add/remove actions and use xref:refguide:applib-ant:MemberOrder.adoc[UI hints] to render them close to the collection.
-====
-
-By default the event raised is `CollectionDomainEvent.Default`. For example:
-
-[source,java]
-----
-public class ToDoItem {
- @Collection()
- public SortedSet<ToDoItem> getDependencies() { /* ... */ }
- ...
-}
-----
-
-The `domainEvent()` attribute allows a custom subclass to be emitted allowing more precise subscriptions (to those subclasses) to be defined instead.
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- public static class DependenciesChangedEvent
- extends CollectionDomainEvent<ToDoItem, ToDoItem> { } // <1>
- @Collection(
- domainEvent=DependenciesChangedEvent.class
- )
- public SortedSet<ToDoItem> getDependencies() { /* ... */ }
- ...
-}
-----
-<1> inherit from `CollectionDomainEvent<T,E>` where `T` is the type of the domain object being interacted with, and `E` is the type of the element in the collection (both `ToDoItem` in this example)
-
-
-The benefit is that subscribers can be more targetted as to the events that they subscribe to.
-
-
-[NOTE]
-====
-The framework provides a no-arg constructor and will initialize the domain event using (non-API) setters rather than through the constructor.
-This substantially reduces the boilerplate in the subclasses because no explicit constructor is required..
-====
-
-
-
-
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
-The examples below use the Guava API.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @com.google.common.eventbus.Subscribe
- public void on(CollectionDomainEvent ev) {
- ...
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ToDoItem.DependenciesChangedEvent.class)
- public void on(ToDoItem.DependenciesChangedEvent ev) {
- // ...
- }
-}
-----
-
-
-The subscriber's method is called (up to) 5 times:
-
-* whether to veto visibility (hide)
-* whether to veto usability (disable)
-* whether to veto execution (validate) the element being added to/removed from the collection
-* steps to perform prior to the collection being added to/removed from
-* steps to perform after the collection has been added to/removed from
-
-The subscriber can distinguish these by calling `ev.getEventPhase()`.
-Thus the general form is:
-
-[source,java]
-----
-@Programmatic
-@com.google.common.eventbus.Subscribe
-public void on(CollectionDomainEvent ev) {
- switch(ev.getEventPhase()) {
- case HIDE:
- // call ev.hide() or ev.veto("") to hide the collection
- break;
- case DISABLE:
- // call ev.disable("...") or ev.veto("...") to disable the collection
- break;
- case VALIDATE:
- // call ev.invalidate("...") or ev.veto("...")
- // if object being added/removed to collection is invalid
- break;
- case EXECUTING:
- break;
- case EXECUTED:
- break;
- }
-}
-----
-
-It is also possible to abort the transaction during the executing or executed phases by throwing an exception.
-If the exception is a subtype of `RecoverableException` then the exception will be rendered as a user-friendly warning (eg Growl/toast) rather than an error.
-
-
-
-
-== Default, Doop and Noop events
-
-If the `domainEvent` attribute is not explicitly specified (is left as its default value, `CollectionDomainEvent.Default`), then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.collectionAnnotation.domainEvent.postForDefault` configuration collection can be set to "false"; this will disable posting.
-
-On the other hand, if the `domainEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `CollectionDomainEvent.Doop` as such a subclass, so setting the `domainEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration collection setting.
-
-And, conversely, the framework also provides `CollectionDomainEvent.Noop`; if `domainEvent` attribute is set to this class, then no event will be posted.
-
-
-
-
-
-== Raising events programmatically
-
-Normally events are only raised for interactions through the UI.
-However, events can be raised programmatically either by calling the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] API directly, or by emulating the UI by wrapping the target object using the xref:refguide:applib-svc:application-layer-api/WrapperFactory.adoc[`WrapperFactory`] domain service.
-
-
-== See also
-
-This attribute is also supported for:
-
-* xref:refguide:applib-ant:Action.adoc#domainEvent[actions] and
-* xref:refguide:applib-ant:Property.adoc#domainEvent[properties].
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/editing.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/editing.adoc
deleted file mode 100644
index 021b436..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/editing.adoc
+++ /dev/null
@@ -1,58 +0,0 @@
-[[editing]]
-= `editing()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `editing()` annotation indicates whether a collection can be added to or removed from within the UI.
-
-The related `editingDisabledReason()` attribute specifies the a hard-coded reason why the collection cannot be modified directly.
-
-[WARNING]
-====
-The xref:vw:ROOT:about.adoc[Wicket viewer] does *not* currently support the modification of collections; they are rendered read-only.
-
-The workaround is to create add/remove actions and use xref:refguide:applib-ant:MemberOrder.adoc[UI hints] to render them close to the collection.
-====
-
-Whether a collection is enabled or disabled depends upon these factors:
-
-* whether the domain object has been configured as immutable through the xref:refguide:applib-ant:DomainObject.adoc#editing[`@DomainObject#editing()`] attribute
-
-* else (that is, if the domain object's editability is specified as being `AS_CONFIGURED`), then the value of the xref:refguide:config:configuring-core.adoc[configuration property] `isis.objects.editing`.
-If set to `false`, then the object's collections (and properties) are *not* editable
-
-* else, then the value of the `@Collection(editing=...)` attribute itself.
-
-* else, the result of invoking any supporting xref:refguide:applib-cm:rgcms.adoc#\_rgcms_methods_prefixes_disable[`disable...()`] supporting methods
-
-
-Thus, to make a collection read-only even if the object would otherwise be editable, use:
-
-
-[source,java]
-----
-public class ToDoItem {
- @Collection(
- editing=Editing.DISABLED,
- editingDisabledReason="Use the add and remove actions to modify"
- )
- public SortedSet<ToDoItem> getDependencies() { /* ... */ }
-}
-----
-
-[NOTE]
-====
-To reiterate, it is _not_ possible to enable editing for a collection if editing has been disabled at the object-level.
-====
-
-
-== See also
-
-This attribute can also be specified for:
-
-* xref:refguide:applib-ant:Property.adoc#editing[properties]
-* xref:refguide:applib-ant:DomainObject.adoc#editing[domain object]
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/hidden.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/hidden.adoc
deleted file mode 100644
index 9061cd3..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/hidden.adoc
+++ /dev/null
@@ -1,63 +0,0 @@
-[[hidden]]
-= `hidden()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Collections can be hidden at the domain-level, indicating that they are not visible to the end-user.
-
-
-[TIP]
-====
-It is also possible to use xref:refguide:applib-ant:CollectionLayout.adoc#hidden[`@CollectionLayout#hidden()`] or using xref:vw:ROOT:layout/file-based.adoc[file-based layout] such that the collection can be hidden at the view layer.
-Both options are provided with a view that in the future the view-layer semantics may be under the control of (expert) users, whereas domain-layer semantics should never be overridden or modified by the user.
-====
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @Collection(where=Where.EVERYWHERE)
- public SortedSet<Address> getAddresses() { /* ... */ }
-}
-----
-
-
-The acceptable values for the `where` parameter are:
-
-* `Where.EVERYWHERE` or `Where.ANYWHERE` +
-+
-The collection should be hidden everywhere.
-
-* `Where.ANYWHERE` +
-+
-Synonym for everywhere.
-
-* `Where.OBJECT_FORMS` +
-+
-The collection should be hidden when displayed within an object form.
-
-* `Where.NOWHERE` +
-+
-The collection should not be hidden.
-
-The other values of the `Where` enum have no meaning for a collection.
-
-
-
-
-[NOTE]
-====
-The xref:vw:ROOT:about.adoc[Wicket viewer] suppresses collections when displaying lists of objects.
-
-The xref:vro:ROOT:about.adoc[RestfulObjects viewer] by default suppress collections when rendering a domain object.
-====
-
-== See also
-
-This attribute can also be applied to:
-
-* xref:refguide:applib-ant:Action.adoc#hidden[actions]
-* xref:refguide:applib-ant:Property.adoc#hidden[properties].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/notPersisted.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/notPersisted.adoc
deleted file mode 100644
index c72f4c7..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/notPersisted.adoc
+++ /dev/null
@@ -1,63 +0,0 @@
-[[notPersisted]]
-= `notPersisted()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The (somewhat misnamed) `notPersisted()` attribute indicates that the collection should be excluded from any snapshots generated by the xref:refguide:applib-svc:integration-api/XmlSnapshotService.adoc[`XmlSnapshotService`].
-
-
-[WARNING]
-====
-This annotation does _not_ specify that a collection is not persisted in the JDO/DataNucleus objectstore. See below for details as to how to additionally annotate the collection for this.
-====
-
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @Collection(notPersisted=true)
- public SortedSet<Order> getPreviousOrders() {...}
- public void setPreviousOrder(SortedSet<Order> previousOrders) {...}
- ...
-}
-----
-
-Historically this annotation also hinted as to whether the collection's contents should be persisted in the object store. However, the JDO/DataNucleus objectstore does not recognize this annotation. Thus, to ensure that a collection is actually not persisted, it should *also* be annotated with `@javax.jdo.annotations.NotPersistent`.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @Collection(notPersisted=true) // <1>
- @javax.jdo.annotations.NotPersistent // <2>
- public SortedSet<Order> getPreviousOrders() {...}
- public void setPreviousOrder(SortedSet<Order> previousOrders) {...}
- ...
-}
-----
-<1> ignored by Apache Isis
-<2> ignored by JDO/DataNucleus
-
-
-
-Alternatively, if the collection is derived, then providing only a "getter" will also work:
-
-[source,java]
-----
-public class Customer {
- public SortedSet<Order> getPreviousOrders() {...}
- ...
-}
-----
-
-
-== See also
-
-This attribute is also supported for xref:refguide:applib-ant:Property.adoc#notPersisted[properties].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/typeOf.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/typeOf.adoc
deleted file mode 100644
index d818429..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Collection/typeOf.adoc
+++ /dev/null
@@ -1,30 +0,0 @@
-[[typeOf]]
-= `typeOf()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `typeOf()` attribute specifies the expected type of an element contained within a collection when for whatever reason the type cannot be inferred from the generic type, or to provide a hint about the actual run-time (as opposed to compile-time) type.
-
-
-For example:
-
-[source,java]
-----
-public void Customer {
- @Collection(typeOf=Order.class)
- public SortedSet getOutstandingOrders() { /* ... */ }
- ...
-}
-----
-
-[TIP]
-====
-In general we recommend that you use generics instead, eg `SortedSet<Order>`.
-====
-
-
-== See also
-
-This attribute can also be specified for xref:refguide:applib-ant:Action.adoc#typeOf[actions].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout.adoc
deleted file mode 100644
index 172e9f4..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout.adoc
+++ /dev/null
@@ -1,117 +0,0 @@
-= `@CollectionLayout`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-The `@CollectionLayout` annotation applies to collections, collecting together all UI hints within a single
-annotation. It is also possible to apply the annotation to actions of domain services that are acting as contributed collections.
-
-The table below summarizes the annotation's attributes.
-
-.`@CollectionLayout` attributes
-[cols="2,2,4a", options="header"]
-|===
-
-| Attribute
-| Values (default)
-| Description
-
-
-|xref:refguide:applib-ant:CollectionLayout.adoc#cssClass[`cssClass()`]
-|Any string valid as a CSS class
-|the css class that a collection should have, to allow more targetted styling in xref:refguide:config:application-specific/application-css.adoc[`application.css`]
-
-
-|xref:refguide:applib-ant:CollectionLayout.adoc#defaultView[`defaultView()`]
-|`table`, `excel`, `calendar`, `map`, ...
-|Which view is selected by default, if multiple views are available.
-
-See the (non-ASF) link:https://platform.incode.org[Incode Platform^] for further Wicket components providing views.
-
-
-
-|xref:refguide:applib-ant:CollectionLayout.adoc#describedAs[`describedAs()`]
-|String.
-|description of this collection, eg to be rendered in a tooltip.
-
-
-|xref:refguide:applib-ant:CollectionLayout.adoc#hidden[`hidden()`]
-|`EVERYWHERE`, `OBJECT_FORMS`, `NOWHERE` +
-(`NOWHERE`)
-|indicates where (in the UI) the collection should be hidden from the user.
-
-
-|xref:refguide:applib-ant:CollectionLayout.adoc#named[named()]
-|String.
-|to override the name inferred from the collection's name in code. +
-
-A typical use case is if the desired name is a reserved Java keyword, such as `default` or `package`.
-
-
-|namedEscaped()
-|`true`,`false` (`true`)
-|whether to HTML escape the name of this property.
-
-
-|xref:refguide:applib-ant:CollectionLayout.adoc#paged[`paged()`]
-|Positive integer
-|the page size for instances of this class when rendered within a table.
-
-
-|xref:refguide:applib-ant:CollectionLayout.adoc#sortedBy[`sortedBy()`]
-|Subclass of `java.util.Comparator` for element type
-|indicates that the elements in the `java.util.SortedSet` collection should be sorted according to a specified `Comparator` rather than their natural sort order.
-
-|===
-
-
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- @CollectionLayout(
- cssClass="x-key",
- named="Todo items that are <i>dependencies</i> of this item.",
- namedEscaped=false,
- describedAs="Other todo items that must be completed before this one",
- labelPosition=LabelPosition.LEFT,
- render=EAGERLY)
- public SortedSet<ToDoItem> getDependencies() { /* ... */ }
- ...
-}
-----
-
-
-
-[TIP]
-====
-As an alternative to using the `@CollectionLayout` annotation, a xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used (and is generally to be preferred since it is more flexible/powerful).
-====
-
-
-
-
-
-[TIP]
-====
-The annotation is one of a handful (others including xref:refguide:applib-ant:Collection.adoc[`@Collection`], xref:refguide:applib-ant:Property.adoc[`@Property`] and xref:refguide:applib-ant:PropertyLayout.adoc[`@PropertyLayout`]) that can also be applied to the field, rather than the getter method. This is specifically
-so that boilerplate-busting tools such as link:https://projectlombok.org/[Project Lombok] can be used.
-====
-
-
-
-
-
-
-
-
-include::CollectionLayout/cssClass.adoc[leveloffset=+1]
-include::CollectionLayout/defaultView.adoc[leveloffset=+1]
-include::CollectionLayout/describedAs.adoc[leveloffset=+1]
-include::CollectionLayout/hidden.adoc[leveloffset=+1]
-include::CollectionLayout/named.adoc[leveloffset=+1]
-include::CollectionLayout/paged.adoc[leveloffset=+1]
-include::CollectionLayout/sortedBy.adoc[leveloffset=+1]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/_attributes.adoc
deleted file mode 100644
index d011536..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ../..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/cssClass.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/cssClass.adoc
deleted file mode 100644
index 5490471..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/cssClass.adoc
+++ /dev/null
@@ -1,41 +0,0 @@
-[[cssClass]]
-= `cssClass()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `cssClass()` attribute can be used to render additional CSS classes in the HTML (a wrapping `<div>`) that represents the collection. xref:refguide:config:application-specific/application-css.adoc[Application-specific CSS] can then be used to target and adjust the UI representation of that particular element.
-
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- @CollectionLayout(
- cssClass="x-important"
- )
- public SortedSet<ToDoItem> getDependencies() { /* ... */ }
- ...
-}
-----
-
-
-== Alternatives
-
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
-
-== See also
-
-
-This attribute can also be applied to:
-
-* xref:refguide:applib-ant:DomainObjectLayout.adoc#cssClass[domain objects]
-* xref:refguide:applib-ant:ViewModelLayout.adoc#cssClass[view models]
-* xref:refguide:applib-ant:ActionLayout.adoc#cssClass[actions]
-* xref:refguide:applib-ant:PropertyLayout.adoc#cssClass[properties]
-* xref:refguide:applib-ant:ParameterLayout.adoc#cssClass[parameters].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/defaultView.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/defaultView.adoc
deleted file mode 100644
index 7ae2944..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/defaultView.adoc
+++ /dev/null
@@ -1,39 +0,0 @@
-[[defaultView]]
-= `defaultView()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The xref:vw:ROOT:about.adoc[Wicket viewer] allows additional views to be configured to render collections of objects; at the time of writing thesee include the excel, fullcalendar2 and gmap3 provided by the (non-ASF) link:https://platform.incode.org[Incode Platform^].
-If the objects to be rendered have the correct "shape", then the appropriate view will be made available. For example, objects with a date can be rendered using `calendar`; objects with locations can be rendered using `map`.
-
-The `defaultView()` attribute is used to select which of these views should be used by default for a given collection.
-
-
-For example:
-
-[source,java]
-----
-public class BusRoute {
- @CollectionLayout(
- defaultView="map"
- )
- public SortedSet<BusStop> getStops() { /* ... */ }
- ...
-}
-----
-
-
-[NOTE]
-====
-This attribute takes precedence over any value for the xref:refguide:applib-ant:CollectionLayout.adoc#render[`@CollectionLayout#render()`] attribute. For example, if the
-`defaultView` attribute is defined to "table", then the table will be show even if `render` is set to `LAZILY`.
-====
-
-
-== Alternatives
-
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/describedAs.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/describedAs.adoc
deleted file mode 100644
index a5b2728..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/describedAs.adoc
+++ /dev/null
@@ -1,31 +0,0 @@
-[[describedAs]]
-= `describedAs()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `describedAs()` attribute is used to provide a short description of the collection to the user. In the xref:vw:ROOT:about.adoc[Wicket viewer] it is displayed as a 'tool tip'.
-
-The `describedAs()` attribute can also be specified for xref:refguide:applib-ant:PropertyLayout.adoc#describedAs[properties], xref:refguide:applib-ant:ActionLayout.adoc#describedAs[actions], xref:refguide:applib-ant:ParameterLayout.adoc#describedAs[parameters], xref:refguide:applib-ant:DomainObjectLayout.adoc#describedAs[domain objects] and xref:refguide:applib-ant:ViewModelLayout.adoc#describedAs[view models].
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- @CollectionLayout(
- describedAs="Other todo items that must be completed before this one"
- )
- public SortedSet<ToDoItem> getDependencies() { /* ... */ }
- ...
-}
-----
-
-
-== Alternatives
-
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/hidden.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/hidden.adoc
deleted file mode 100644
index 30e987a..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/hidden.adoc
+++ /dev/null
@@ -1,63 +0,0 @@
-[[hidden]]
-= `hidden()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `hidden()` attribute indicates where (in the UI) the collection should be hidden from the user.
-
-
-
-[TIP]
-====
-It is also possible to use xref:refguide:applib-ant:Collection.adoc#hidden[`@Collection#hidden()`] to hide an action at the domain layer.
-Both options are provided with a view that in the future the view-layer semantics may be under the control of (expert) users, whereas domain-layer semantics should never be overridden or modified by the user.
-====
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- @CollectionLayout(
- hidden=Where.EVERYWHERE
- public SortedSet<ToDoItem> getDependencies() { /* ... */ }
- ...
-}
-----
-
-
-The acceptable values for the `where` parameter are:
-
-* `Where.EVERYWHERE` or `Where.ANYWHERE`
-+
-The collection should be hidden everywhere.
-
-* `Where.ANYWHERE`
-+
-Synonym for everywhere.
-
-* `Where.OBJECT_FORMS`
-+
-The collection should be hidden when displayed within an object form.
-
-* `Where.NOWHERE`
-+
-The collection should not be hidden.
-
-The other values of the `Where` enum have no meaning for a collection.
-
-
-== Alternatives
-
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
-
-== See also
-
-This attribute can also be applied to:
-
-* xref:refguide:applib-ant:ActionLayout.adoc#hidden[actions]
-* xref:refguide:applib-ant:PropertyLayout.adoc#hidden[properties].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/named.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/named.adoc
deleted file mode 100644
index e0924fb..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/named.adoc
+++ /dev/null
@@ -1,55 +0,0 @@
-[[named]]
-= `named()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `named()` attribute explicitly specifies the collection's name, overriding the name that would normally be inferred from the Java source code.
-
-
-[TIP]
-====
-Following the link:http://en.wikipedia.org/wiki/Don%27t_repeat_yourself[don't repeat yourself] principle, we recommend that you only use this attribute when the desired name cannot be used in Java source code.
-Examples of that include a name that would be a reserved Java keyword (eg "package"), or a name that has punctuation, eg apostrophes.
-====
-
-
-By default the name is HTML escaped.
-To allow HTML markup, set the related `namedEscaped()` attribute to `false`.
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- @CollectionLayout(
- named="Todo items that are <i>dependencies</i> of this item",
- namedEscaped=false
- )
- public SortedSet<ToDoItem getDependencies() { /* ... */ }
- ...
-}
-----
-
-
-
-== Alternatives
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
-The framework also provides a separate, powerful mechanism for xref:userguide:btb:i18n.adoc[internationalization].
-
-
-== See also
-
-This attribute can also be specified for:
-
-* xref:refguide:applib-ant:ActionLayout.adoc#named[actions]
-* xref:refguide:applib-ant:PropertyLayout.adoc#named[properties]
-* xref:refguide:applib-ant:ParameterLayout.adoc#named[parameters]
-* xref:refguide:applib-ant:DomainObjectLayout.adoc#named[domain objects]
-* xref:refguide:applib-ant:ViewModelLayout.adoc#named[view models]
-* xref:refguide:applib-ant:DomainServiceLayout.adoc#named[domain services].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/paged.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/paged.adoc
deleted file mode 100644
index fb70e47..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/paged.adoc
+++ /dev/null
@@ -1,46 +0,0 @@
-[[paged]]
-= `paged()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `paged()` attribute specifies the number of rows to display in a (parented) collection.
-
-
-
-[WARNING]
-====
-The xref:vro:ROOT:about.adoc[RestfulObjects viewer] currently does not support paging.
-The xref:vw:ROOT:about.adoc[Wicket viewer] _does_ support paging, but note that the paging is performed client-side rather than server-side.
-
-We therefore recommend that large collections should instead be modelled as actions (to allow filtering to be applied to limit the number of rows).
-====
-
-
-For example:
-
-[source,java]
-----
-public class Order {
- @CollectionLayout(paged=15)
- public SortedSet<OrderLine> getDetails() {...}
-}
-----
-
-
-It is also possible to specify a global default for the page size of standalone collections, using the xref:refguide:config:configuring-core.adoc[configuration property] `isis.viewer.paged.parented`.
-
-
-
-== Alternatives
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
-
-
-== See also
-
-This attribute can also be applied to:
-
-* xref:refguide:applib-ant:DomainObjectLayout.adoc#paged[domain objects]
-* xref:refguide:applib-ant:ViewModelLayout.adoc#paged[view models].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/sortedBy.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/sortedBy.adoc
deleted file mode 100644
index 8931afe..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/CollectionLayout/sortedBy.adoc
+++ /dev/null
@@ -1,50 +0,0 @@
-[[sortedBy]]
-= `sortedBy()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `sortedBy()` attribute specifies that the collection be ordered using the specified comparator, rather than the natural ordering of the entity (as would usually be the case).
-
-For example:
-
-[source,java]
-----
-public class ToDoItem implements Comparable<ToDoItem> { // <1>
- public static class DependenciesComparator // <2>
- implements Comparator<ToDoItem> {
- @Override
- public int compare(ToDoItem p, ToDoItem q) {
- return ORDERING_BY_DESCRIPTION // <3>
- .compound(Ordering.<ToDoItem>natural())
- .compare(p, q);
- }
- }
- @CollectionLayout(sortedBy=DependenciesComparator.class) // <4>
- public SortedSet<ToDoItem> getDependencies() { /* ... */ }
- ...
-}
-----
-<1> the class has a natural ordering (implementation not shown)
-<2> declaration of the comparator class
-<3> ordering defined as being by the object's `description` property (not shown), and then by the natural ordering of the class
-<4> specify the comparator to use
-
-When the `dependencies` collection is rendered, the elements are sorted by the `description` property first:
-
-image::reference-annotations/CollectionLayout/sortedby-dependencies.png[width="720px",link="{imagesdir}/reference-annotations/CollectionLayout/sortedby-dependencies.png"]
-
-[NOTE]
-====
-Note that this screenshot shows an earlier version of the xref:vw:ROOT:about.adoc[Wicket viewer] UI (specifically, pre 1.8.0).
-====
-
-
-Without this annotation, the order would have been inverted (because the natural ordering places items not completed before those items that have been completed.
-
-
-
-== Alternatives
-
-As an alternative to using the annotation, the dynamic xref:vw:ROOT:layout/file-based.adoc[file-based layout] can be used instead.
\ No newline at end of file
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Column.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Column.adoc
deleted file mode 100644
index 9b8c808..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Column.adoc
+++ /dev/null
@@ -1,151 +0,0 @@
-= `@Column` (`javax.jdo`)
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-The JDO `@javax.jdo.annotation.Column` provides metadata describing how JDO/DataNucleus should persist the property to a database RDBMS table column (or equivalent concept for other persistence stores).
-
-Apache Isis also parses and interprets this annotation in order to build up aspects of its metamodel.
-
-[NOTE]
-====
-Isis parses the `@Column` annotation from the Java source code; it does not query the JDO metamodel. This means that it the `@Column` annotation must be used rather than the equivalent `<column>` link:http://www.datanucleus.org/products/accessplatform_4_0/jdo/orm/schema_mapping.html[XML metadata].
-
-Moreover, while JDO/DataNucleus will recognize annotations on either the field or the getter method, Apache Isis (currently) only inspects the getter method. Therefore ensure that the annotation is placed there.
-====
-
-This section identifies which attributes of `@Column` are recognized and used by Apache Isis.
-
-
-== Nullability
-
-The `allowsNull()` attribute is used to specify if a property is mandatory or is optional.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @javax.jdo.annotations.Column(allowsNull="true")
- public String getMiddleInitial() { /* ... */ }
- public void setMiddleInitial(String middleInitial) { /* ... */ }
-----
-
-Isis also provides xref:refguide:applib-ant:Property.adoc#optionality[`@Property#optionality()`] attribute. If both are specified, Apache Isis will check when it initializes for any contradictions, and will fail-fast with an appropriate error message in the log if there are.
-
-You should also be aware that in the lack of either the `@Column#allowsNull()` or the `@Property#optionality()` attributes, that the JDO and Apache Isis defaults differ. Apache Isis rule is straight-forward: properties are assumed to be required. JDO on the other hand specifies that only primitive types are mandatory; everything else is assumed to be optional. Therefore a lack of either annotation can also trigger the fail-fast validation check.
-
-In the vast majority of cases you should be fine just to add the `@Column#allowsNull()` attribute to the getter. But see the documentation for xref:refguide:applib-ant:Property.adoc#optionality[`@Property#optionality()`] attribute for discussion on one or two minor edge cases.
-
-
-== Length for ``String``s
-
-The `length()` attribute is used to specify the length of `java.lang.String` property types as they map to `varchar(n)` columns.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @javax.jdo.annotations.Column(length=20)
- public String getFirstName() { /* ... */ }
- public void setFirstName(String firstName) { /* ... */ }
- @javax.jdo.annotations.Column(allowsNull="true", length=1)
- public String getMiddleInitial() { /* ... */ }
- public void setMiddleInitial(String middleInitial) { /* ... */ }
- @javax.jdo.annotations.Column(length=30)
- public String getLastName() { /* ... */ }
- public void setLastName(String lastName) { /* ... */ }
-----
-
-Isis also provides xref:refguide:applib-ant:Property.adoc#maxLength[`@Property#maxLength()`] attribute. If both are specified, Apache Isis will check when it initializes for any contradictions, and will fail-fast with an appropriate error message in the log if there are.
-
-
-
-== Length/scale for ``BigDecimal``s
-
-
-The `length()` and `scale()` attributes are used to infer the precision/scale of `java.math.BigDecimal` property types as they map to `decimal(n,p)` columns.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @javax.jdo.annotations.Column(length=10, scale=2)
- public BigDecimal getTotalOrdersToDate() { /* ... */ }
- public void setTotalOrdersToDate(BigDecimal totalOrdersToDate) { /* ... */ }
-----
-
-For ``BigDecimal``s it is also possible to specify the xref:refguide:applib-ant:Digits.adoc[`@Digits`] annotation, whose form is `@Digits(integer, fraction)`.
-There is a subtle difference here: while `@Column#scale()` corresponds to `@Digits#fraction()`, the value of `@Column#length()` (ie the precision) is actually the __sum__ of the `@Digits`' `integer()` and `fraction()` parts.
-
-If both are specified, Apache Isis will check when it initializes for any contradictions, and will fail-fast with an appropriate error message in the log if there are.
-
-
-
-[[rg-ant-hints-and-tips]]
-== Hints and Tips
-
-This seems to be a good place to describe some additional common mappings that use `@Column`. Unlike the sections above, the attributes specified in these hints and tips aren't actually part of Apache Isis metamodel.
-
-
-=== Mapping foreign keys
-
-The `name()` attribute can be used to override the name of the column. References to other objects are generally mapped as foreign key columns. If there are multiple references to a given type, then you will want to override the name that JDO/DataNucleus would otherwise default.
-
-For example (taken from link:http://github.com/estatio/estatio[estatio] app):
-
-[source,java]
-----
-public class PartyRelationship {
- @Column(name = "fromPartyId", allowsNull = "false")
- public Party getFrom() { /* ... */ }
- public void setFrom(Party from) { /* ... */ }
- @Column(name = "toPartyId", allowsNull = "false")
- public Party getTo() { /* ... */ }
- public void setTo(Party to) { /* ... */ }
- ...
-}
-----
-
-
-
-=== Mapping ``Blob``s and ``Clob``s
-
-Isis provides custom value types for xref:refguide:applib-cm:classes/value-types.adoc#Blob[`Blob`]s and xref:refguide:applib-cm:classes/value-types.adoc#Clob[`Clob`]s. These value types have multiple internal fields, meaning that they corresponding to multiple columns in the database. Mapping this correctly requires using `@Column` within JDO's `@Persistent` annotation.
-
-For example, here's how to map a `Blob` (taken from (non-ASF) http://github.com/isisaddons/isis-app-todoapp[Isis addons' todoapp]):
-
-[source,java]
-----
-private Blob attachment;
-@javax.jdo.annotations.Persistent(defaultFetchGroup="false", columns = {
- @javax.jdo.annotations.Column(name = "attachment_name"),
- @javax.jdo.annotations.Column(name = "attachment_mimetype"),
- @javax.jdo.annotations.Column(name = "attachment_bytes", jdbcType = "BLOB", sqlType = "LONGVARBINARY")
-})
-@Property(
- domainEvent = AttachmentDomainEvent.class,
- optionality = Optionality.OPTIONAL
-)
-public Blob getAttachment() { /* ... */ }
-public void setAttachment(Blob attachment) { /* ... */ }
-----
-
-And here's how to map a `Clob` (also taken from the todoapp):
-
-[source,java]
-----
-private Clob doc;
-@javax.jdo.annotations.Persistent(defaultFetchGroup="false", columns = {
- @javax.jdo.annotations.Column(name = "doc_name"),
- @javax.jdo.annotations.Column(name = "doc_mimetype"),
- @javax.jdo.annotations.Column(name = "doc_chars", jdbcType = "CLOB", sqlType = "LONGVARCHAR")
-})
-@Property(
- optionality = Optionality.OPTIONAL
-)
-public Clob getDoc() { /* ... */ }
-public void setDoc(final Clob doc) { /* ... */ }
-----
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Digits.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Digits.adoc
deleted file mode 100644
index 832422d..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Digits.adoc
+++ /dev/null
@@ -1,33 +0,0 @@
-= `@Digits` (`javax`)
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@javax.validation.constraints.Digits` annotation is recognized by Apache Isis as a means to specify the precision for properties and action parameters of type `java.math.BigDecimal`.
-
-For example (taken from the (non-ASF) http://github.com/isisaddons/isis-app-todoapp[Isis addons' todoapp]):
-
-[source,java]
-----
-@javax.jdo.annotations.Column(
- scale=2 // <1>
-)
-@javax.validation.constraints.Digits(
- integer=10,
- fraction=2 // <2>
-)
-public BigDecimal getCost() {
- return cost;
-}
-public void setCost(final BigDecimal cost) {
- this.cost = cost!=null
- ? cost.setScale(2, BigDecimal.ROUND_HALF_EVEN) // <3>
- :null;
-}
-----
-<1> the xref:refguide:applib-ant:Column.adoc[`@Column#scale()`] attribute must be ...
-<2> ... consistent with `@Digits#fraction()`
-<3> the correct idiom when setting a new value is to normalized to the correct scale
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Discriminator.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Discriminator.adoc
deleted file mode 100644
index 92f6e08..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Discriminator.adoc
+++ /dev/null
@@ -1,72 +0,0 @@
-= `@Discriminator` (`javax.jdo`)
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@javax.jdo.annotation.Discriminator` is used by JDO/DataNucleus to specify how to discriminate between subclasses of an inheritance hierarchy.
-
-It is valid to add a `@Discriminator` for any class, even those not part of an explicitly mapped inheritance hierarchy. Apache Isis also checks for this annotation, and if present will use the `@Discriminator#value()` as the object type, a unique alias for the object's class name.
-
-[NOTE]
-====
-Isis parses the `@Discriminator` annotation from the Java source code; it does not query the JDO metamodel. This means that it the `@Discriminator` annotation must be used rather than the equivalent `<discriminator>` link:http://www.datanucleus.org/products/accessplatform_4_0/jdo/orm/inheritance.html[XML metadata].
-
-Moreover, while JDO/DataNucleus will recognize annotations on either the field or the getter method, Apache Isis (currently) only inspects the getter method. Therefore ensure that the annotation is placed there.
-====
-
-This value is used internally to generate a string representation of an objects identity (the `Oid`).
-This can appear in several contexts, including:
-
-* as the value of `Bookmark#getObjectType()` and in the `toString()` value of `Bookmark`
- (see xref:refguide:applib-svc:integration-api/BookmarkService.adoc[`BookmarkService`])
- ** and thus in the "table-of-two-halves" pattern, as per the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s poly module
-* in the serialization of `OidDto` in the xref:refguide:schema:cmd[command] and xref:refguide:schema:about.adoc#ixn.adoc[interaction] schemas
-* in the URLs of the xref:vro:ROOT:about.adoc[RestfulObjects viewer]
-* in the URLs of the xref:vw:ROOT:about.adoc[Wicket viewer] (in general and in particular if xref:vw:ROOT:features/hints-and-copy-url.adoc[copying URLs])
-* in XML snapshots generated by the xref:refguide:applib-svc:integration-api/XmlSnapshotService.adoc[`XmlSnapshotService`]
-
-
-
-== Examples
-
-For example:
-
-[source,java]
-----
-@javax.jdo.annotations.Discriminator(value="custmgmt.Customer")
-public class Customer {
- ...
-}
-----
-
-has an object type of `custmgmt.Customer`.
-
-
-== Precedence
-
-The rules of precedence for determining a domain object's object type are:
-
-1. xref:refguide:applib-ant:Discriminator.adoc[`@Discriminator`]
-2. `@DomainObject#objectType`
-3. xref:refguide:applib-ant:PersistenceCapable.adoc[`@PersistenceCapable`], if at least the `schema` attribute is defined. +
-+
-If both `schema` and `table` are defined, then the value is "`schema.table`".
-If only `schema` is defined, then the value is "`schema.className`".
-
-4. Fully qualified class name of the entity.
-
-
-[TIP]
-====
-This might be obvious, but to make explicit: we recommend that you always specify an object type for your domain objects.
-
-Otherwise, if you refactor your code (change class name or move package), then any externally held references to the OID of the object will break.
-At best this will require a data migration in the database; at worst it could cause external clients accessing data through the xref:vro:ROOT:about.adoc[Restful Objects] viewer to break.
-====
-
-
-[NOTE]
-====
-If the object type is not unique across all domain classes then the framework will fail-fast and fail to boot. An error message will be printed in the log to help you determine which classes have duplicate object tyoes.
-====
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject.adoc
deleted file mode 100644
index 9bf5b62..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject.adoc
+++ /dev/null
@@ -1,151 +0,0 @@
-= `@DomainObject`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@DomainObject` annotation applies to domain objects, collecting together all domain semantics within a single annotation.
-
-The table below summarizes the annotation's attributes.
-
-.`@DomainObject` attributes
-[cols="2,2,4a", options="header"]
-|===
-
-| Attribute
-| Values (default)
-| Description
-
-
-|xref:refguide:applib-ant:DomainObject.adoc#auditing[`auditing()`]
-|`AS_CONFIGURED`, `ENABLED`, `DISABLED` +
-(`AS_CONFIGURED`)
-|indicates whether each of the changed properties of an object should be submitted to the registered
-xref:refguide:applib-svc:persistence-layer-spi/AuditerService.adoc[`AuditerService`](s)
-
-
-|xref:refguide:applib-ant:DomainObject.adoc#autoCompleteRepository[`autoCompleteRepository()`]
-|Domain service class
-|nominate a method on a domain service to be used for looking up instances of the domain object
-
-
-|`autoCompleteAction()`
-|Method name +
-(`autoComplete()`)
-|override the method name to use on the auto-complete repository
-
-
-|xref:refguide:applib-ant:DomainObject.adoc#bounding[`bounding()`]
-|`true`, `false` +
-(`false`)
-|Whether the number of instances of this domain class is relatively small (a "bounded" set), such that instances could be selected from a drop-down list box or similar.
-
-|xref:refguide:applib-ant:DomainObject.adoc#createdLifecycleEvent[`created-` +
-`LifecycleEvent()`]
-|subtype of `ObjectCreatedEvent` +
-(`ObjectCreatedEvent.Default`)
-|the event type to be posted to the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] whenever an instance is created
-
-|xref:refguide:applib-ant:DomainObject.adoc#editing[`editing()`]
-|`AS_CONFIGURED`, `ENABLED`, `DISABLED` +
-(`AS_CONFIGURED`)
-|whether the object's properties and collections can be edited or not (ie whether the instance should be considered to be immutable)
-
-
-|xref:refguide:applib-ant:DomainObject.adoc#mixinMethod[`mixinMethod()`]
-|Method name within the mixin
-|How to recognize the "reserved" method name, meaning that the mixin's own name will be inferred from the mixin type.
-Typical examples are "exec", "execute", "invoke", "apply" and so on.
-The default "reserved" method name is `$$`.
-
-
-|xref:refguide:applib-ant:DomainObject.adoc#nature[`nature()`]
-|`NOT_SPECIFIED`, `JDO_ENTITY`, `EXTERNAL_ENTITY`, `INMEMORY_ENTITY`, `MIXIN`, `VIEW_MODEL` (`NOT_SPECIFIED`)
-|whether the domain object logically is an entity (part of the domain layer) or is a view model (part of the application layer); or is a mixin.
-If an entity, indicates how its persistence is managed.
-
-
-|xref:refguide:applib-ant:DomainObject.adoc#objectType[`objectType()`]
-|(none, which implies fully qualified class name)
-|specify an alias for the domain class used to uniquely identify the object both within the Apache Isis runtime and externally
-
-
-|xref:refguide:applib-ant:DomainObject.adoc#persistedLifecycleEvent[`persisted-` +
-`LifecycleEvent()`]
-|subtype of `ObjectPersistedEvent` +
-(`ObjectPersistedEvent.Default`)
-|the event type to be posted to the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] whenever an instance has just been persisted
-
-|xref:refguide:applib-ant:DomainObject.adoc#persistingLifecycleEvent[`persisting-` +
-`LifecycleEvent()`]
-|subtype of `ObjectPersistingEvent` +
-(`ObjectPersistingEvent.Default`)
-|the event type to be posted to the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] whenever an instance is about to be persisted
-
-|xref:refguide:applib-ant:DomainObject.adoc#publishing[`publishing()`]
-|`AS_CONFIGURED`, `ENABLED`, `DISABLED` +
-(`AS_CONFIGURED`)
-|whether changes to the object should be published to the registered xref:refguide:applib-svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`].
-
-
-|xref:refguide:applib-ant:DomainObject.adoc#removingLifecycleEvent[`removing-` +
-`LifecycleEvent()`]
-|subtype of `ObjectRemovingEvent` +
-(`ObjectRemovingEvent.Default`)
-|the event type to be posted to the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] whenever an instance is about to be deleted
-
-|xref:refguide:applib-ant:DomainObject.adoc#updatedLifecycleEvent[`updated-` +
-`LifecycleEvent()`]
-|subtype of `ObjectUpdatedEvent` +
-(`ObjectUpdatedEvent.Default`)
-|the event type to be posted to the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] whenever an instance has just been updated
-
-|xref:refguide:applib-ant:DomainObject.adoc#updatingLifecycleEvent[`updating-` +
-`LifecycleEvent()`]
-|subtype of `ObjectUpdatingEvent` +
-(`ObjectUpdatingEvent.Default`)
-|the event type to be posted to the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] whenever an instance is about to be updated
-
-|===
-
-
-
-For example:
-
-[source,java]
-----
-@DomainObject(
- auditing=Auditing.ENABLED,
- autoCompleteRepository=CustomerRepository.class
- editing=Editing.ENABLED, // <1>
- updatedLifecycleEvent=Customer.UpdatedEvent.class
-
-)
-public class Customer {
- ...
-}
-----
-<1> default value, so could be omitted
-
-
-
-
-
-
-
-
-include::DomainObject/auditing.adoc[leveloffset=+1]
-include::DomainObject/autoCompleteRepository.adoc[leveloffset=+1]
-include::DomainObject/bounding.adoc[leveloffset=+1]
-include::DomainObject/createdLifecycleEvent.adoc[leveloffset=+1]
-include::DomainObject/editing.adoc[leveloffset=+1]
-include::DomainObject/loadedLifecycleEvent.adoc[leveloffset=+1]
-include::DomainObject/mixinMethod.adoc[leveloffset=+1]
-include::DomainObject/nature.adoc[leveloffset=+1]
-include::DomainObject/persistedLifecycleEvent.adoc[leveloffset=+1]
-include::DomainObject/persistingLifecycleEvent.adoc[leveloffset=+1]
-include::DomainObject/objectType.adoc[leveloffset=+1]
-include::DomainObject/publishing.adoc[leveloffset=+1]
-include::DomainObject/removingLifecycleEvent.adoc[leveloffset=+1]
-include::DomainObject/updatingLifecycleEvent.adoc[leveloffset=+1]
-include::DomainObject/updatedLifecycleEvent.adoc[leveloffset=+1]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/_attributes.adoc
deleted file mode 100644
index d011536..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ../..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/actionDomainEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/actionDomainEvent.adoc
deleted file mode 100644
index bbc0ae9..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/actionDomainEvent.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-[[actionDomainEvent]]
-= `actionDomainEvent()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever an action of a domain object is interacted with then a domain event will be fired, for each of the various phases (hidden, disabled, validated, executing, executed).
-Using xref:refguide:applib-ant:Action.adoc#domainEvent[`@Action#domainEvent()`], the actual domain event class fired can be customised.
-the `@DomainObject#actionDomainEvent()` attribute allows a common event domain class to be fired for all of the actions of the domain object.
-
-For example:
-
-[source,java]
-----
-@DomainObject(
- actionDomainEvent=ToDoItem.ActionDomainEventDefault.class
-)
-public class ToDoItem {
- public static class ActionDomainEventDefault
- extends org.apache.isis.applib.services.eventbus.ActionDomainEvent<Object> { }
- ...
-
- public void updateDescription(final String description) {
- this.description = description;
- }
-
-}
-----
-
-
-Interactions with the property contributed by this mixin will emit the domain event of the subject (`ToDoItem`).
-
-One small difference between the events emitted by a "regular" action and a contributed action is that the source of the event (as in `event#getSource()` will be different.
-In the former case it will be the domain object instance, in the latter it will be the mixin object instantiated automatically by the framework.
-
-However, the domain object is available using `event#getMixedIn()`.
-Even easier, `event#getSubject()` will always return the domain object (it returns the `#getMixedIn()` if present, otherwise the `#getSource()`.
-
-[NOTE]
-====
-Action domain events have generic types, with the (first and only) generic type indicating the event's source's type.
-
-Because an event specified at the class level might have either the domain object or a mixin for the domain object as its source, they should therefore use simply `Object` as their generic type.
-====
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/auditing.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/auditing.adoc
deleted file mode 100644
index 7dc6a62..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/auditing.adoc
+++ /dev/null
@@ -1,38 +0,0 @@
-[[auditing]]
-= `auditing()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `auditing()` attribute indicates that if the object is modified, then each of its changed properties should be submitted to the registered xref:refguide:applib-svc:persistence-layer-spi/AuditerService.adoc[`AuditerService`](s).
-
-The default value for the attribute is `AS_CONFIGURED`, meaning that the xref:refguide:config:configuring-core.adoc[configuration property] `isis.services.audit.objects` is used to determine the whether the action is audited:
-
-* `all` +
-+
-all changed properties of objects are audited
-
-* `none` +
-+
-no changed properties of objects are audited
-
-If there is no configuration property in `isis.properties` then auditing is automatically enabled for domain objects.
-
-This default can be overridden on an object-by-object basis; if `auditing()` is set to `ENABLED` then changed properties of instances of the domain class are audited irrespective of the configured value; if set to `DISABLED` then the changed properties of instances are _not_ audited, again irrespective of the configured value.
-
-For example:
-
-[source,java]
-----
-@DomainObject(
- auditing=Auditing.ENABLED // <1>
-)
-public class Customer {
- ...
-}
-----
-<1> because set to enabled, will be audited irrespective of the configured value.
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/autoCompleteRepository.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/autoCompleteRepository.adoc
deleted file mode 100644
index e069829..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/autoCompleteRepository.adoc
+++ /dev/null
@@ -1,102 +0,0 @@
-[[autoCompleteRepository]]
-= `autoCompleteRepository()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `autoCompleteRepository()` attribute nominates a single method on a domain service as the fallback means for looking up instances of the domain object using a simple string.
-
-For example, this might search for a customer by their name or number.
-Or it could search for a country based on its ISO-3 code or user-friendly name.
-
-
-[TIP]
-====
-If you require additional control - for example restricting the returned results based on the object being interacted with - then use the xref:refguide:applib-cm:methods.adoc#autoComplete[`autoComplete...()`] supporting method instead.
-====
-
-
-For example:
-
-[source,java]
-----
-@DomainObject(
- autoCompleteRepository=CustomerRepository.class
-)
-public class Customer {
- ....
-}
-----
-
-where:
-
-[source,java]
-----
-@DomainService
-public class CustomerRepository {
- List<Customer> autoComplete(String search); // <1>
- ...
-}
-----
-<1> is assumed to be called "autoComplete", and accepts a single string
-
-
-
-== `autoCompleteAction()`
-
-As noted above, by default the method invoked on the repository is assumed to be called "autoComplete". The optional `autoCompleteAction()` attribute allows the method on the repository to be overridden.
-
-
-For example:
-
-[source,java]
-----
-@DomainObject(
- autoCompleteRepository=Customers.class,
- autoCompleteAction="findByName"
-)
-public class Customer {
- ....
-}
-----
-
-where in this case `findByName` might be an existing action already defined:
-
-[source,java]
-----
-@DomainService(natureOfService=VIEW_MENU_ONLY)
-public class Customers {
- @Action(semantics=SemanticsOf.SAFE)
- public List<Customer> findByName(
- @MinLength(3) // <1>
- @ParameterLayout(named="name")
- String name);
- ...
-}
-----
-<1> end-user must enter minimum number of characters to trigger the query
-
-The autocomplete action can also be a regular method, annotated using xref:refguide:applib-ant:Programmatic.adoc[`@Programmatic`]:
-
-[source,java]
-----
-@DomainService(natureOfService=VIEW_MENU_ONLY)
-public class Customers {
- @Programmatic
- public List<Customer> findByName(
- @MinLength(3)
- String name);
- ...
-}
-----
-
-
-[IMPORTANT]
-====
-The method specified must be an action, that is, part of the Isis metamodel.
-Said another way: it must not be annotated with xref:refguide:applib-ant:Programmatic.adoc[`@Programmatic`].
-However, it *can* be hidden or placed on a domain service with xref:refguide:applib-ant:DomainService.adoc#nature[nature] of `DOMAIN`, such that the action would not be rendered otherwise in the UI.
-Also, the action cannot be xref:refguide:applib-ant:Action.adoc#restrictTo[restricted to] prototyping only.
-====
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/bounding.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/bounding.adoc
deleted file mode 100644
index bf280b8..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/bounding.adoc
+++ /dev/null
@@ -1,40 +0,0 @@
-[[bounding]]
-= `bounding()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-Some domain classes are immutable to the user, and moreover have only a fixed number of instances.
-Often these are "reference" ("standing") data, or lookup data/pick lists.
-Typical examples could include categories, countries, states, and tax or interest rate tables.
-
-Where the number of instances is relatively small, ie bounded, then the `bounding()` attribute can be used as a hint.
-For such domain objects the framework will automatically allow instances to be selected; xref:vw:ROOT:about.adoc[Wicket viewer] displays these as a drop-down list.
-
-
-For example:
-
-[source,java]
-----
-@DomainObject(
- bounding=Bounding.BOUNDED,
- editing=Editing.DISABLED // <1>
-)
-public class Currency {
- ...
-}
-----
-<1> This attribute is commonly combined with `editing=DISABLED` to enforce the fact that reference data is immutable
-
-
-[TIP]
-====
-There is nothing to prevent you from using this attribute for regular mutable entities, and indeed this is sometimes worth doing during early prototyping.
-However, if there is no realistic upper bound to the number of instances of an entity that might be created, generally you should use xref:refguide:applib-cm:methods.adoc#autoComplete[`autoComplete...()`] supporting method or the xref:refguide:applib-ant:DomainObject.adoc#autoCompleteRepository[`@DomainObject#autoCompleteRepository()`] attribute instead.
-====
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/collectionDomainEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/collectionDomainEvent.adoc
deleted file mode 100644
index 69127fa..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/collectionDomainEvent.adoc
+++ /dev/null
@@ -1,62 +0,0 @@
-[[collectionDomainEvent]]
-= `collectionDomainEvent()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a collection of a domain object is interacted with then a domain event will be fired, for each of the various phases (hidden, disabled, validated, executing, executed).
-Using xref:refguide:applib-ant:Collection.adoc#domainEvent[`@Collection#domainEvent()`], the actual domain event class fired can be customised.
-the `@DomainObject#collectionDomainEvent()` attribute allows a common event domain class to be fired for all of the collections of the domain object.
-
-For example:
-
-[source,java]
-----
-@DomainObject(
- collectionDomainEvent=ToDoItem.CollectionDomainEventDefault.class
-)
-public class ToDoItem {
- public static class CollectionDomainEventDefault
- extends org.apache.isis.applib.events.domain.CollectionDomainEvent<Object> { }
- ...
-
- @Getter @Setter
- private Set<Category> categories = Sets.newTreeSet();
-}
-----
-
-If there is a mixin for the domain object, then this will also honour the domain event.
-For example:
-
-[source,java]
-----
-@Mixin(method="coll")
-public class ToDoItem_related {
- private final ToDoItem todoItem;
- // constructor omitted
-
- @Action(semantics = SemanticsOf.SAFE)
- @ActionLayout(contributed = Contributed.AS_ASSOCIATION)
- @Collection
- @CollectionLayout(defaultView = "table")
- public List<ToDoItem> coll() { /* ... */ }
-}
-----
-
-Interactions with the collection contributed by this mixin will emit the domain event of the subject (`ToDoItem`).
-
-One small difference between the events emitted by a "regular" collection and a contributed action is that the source of the event (as in `event#getSource()` will be different.
-In the former case it will be the domain object instance, in the latter it will be the mixin object instantiated automatically by the framework.
-
-However, the domain object is available using `event#getMixedIn()`.
-Even easier, `event#getSubject()` will always return the domain object (it returns the `#getMixedIn()` if present, otherwise the `#getSource()`.
-
-[NOTE]
-====
-Collection domain events have generic types, with the first generic type indicating the event's source's type, and the second generic type indicating the element type.
-
-Because an event specified at the class level might have either the domain object or a mixin for the domain object as its source, they should therefore use simply `Object` as their first generic type.
-
-They should _also_ have `Object` for their second generic type, because the element type of the various collections of the domain object will or could be different.
-====
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/createdLifecycleEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/createdLifecycleEvent.adoc
deleted file mode 100644
index 53fd196..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/createdLifecycleEvent.adoc
+++ /dev/null
@@ -1,108 +0,0 @@
-[[createdLifecycleEvent]]
-= createdLifecycleEvent()
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a domain object is instantiated or otherwise becomes known to the framework, a "created" lifecycle event is fired.
-This is typically when the xref:refguide:applib-svc:core-domain-api/FactoryService.adoc[`FactoryService`]'s `instantiate()` method is called.
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the object just created.
-The subscriber could then, for example, update the object, eg looking up state from some external datastore.
-
-[TIP]
-====
-It's possible to instantiate objects without firing this lifecycle; just instantiate using its regular constructor, and then use the ``ServiceRegistry``'s
-xref:refguide:applib-svc:metadata-api/ServiceRegistry.adoc[`injectServicesInto(...)`] to manually inject any required domain services.
-====
-
-
-By default the event raised is `ObjectCreatedEvent.Default`.
-For example:
-
-[source,java]
-----
-@DomainObject
-public class ToDoItemDto {
- // ...
-}
-----
-
-The purpose of the `createdLifecycleEvent()` attribute is to allows a custom subclass to be emitted instead.
-A similar attribute is available for other lifecycle events.
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- createdLifecycleEvent=ToDoItem.CreatedEvent.class
-)
-public class ToDoItem {
- public static class CreatedEvent
- extends org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent<ToDoItem> { }
- // ...
-}
-----
-
-The benefit is that subscribers can be more targeted as to the events that they subscribe to.
-
-
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
-The examples below are compatible with both.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ObjectCreatedEvent.class)
- public void on(ObjectCreatedEvent ev) {
- if(ev.getSource() instanceof ToDoItem) {
- // ...
- }
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ToDoItem.ObjectCreatedEvent.class)
- public void on(ToDoItem.ObjectCreatedEvent ev) {
- // ...
- }
-}
-----
-
-
-
-
-== Default, Doop and Noop events
-
-If the `createdLifecycleEvent` attribute is not explicitly specified (is left as its default value, `ObjectCreatedEvent.Default`), then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.domainObjectAnnotation.createdLifecycleEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
-
-On the other hand, if the `createdLifecycleEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `ObjectCreatedEvent.Doop` as such a subclass, so setting the `createdLifecycleEvent` attribute to this class
-will ensure that the event to be posted, irrespective of the configuration property setting.
-
-And, conversely, the framework also provides `ObjectCreatedEvent.Noop`; if `createdLifecycleEvent` attribute is set to this class, then no event will be posted.
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/editing.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/editing.adoc
deleted file mode 100644
index 7271326..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/editing.adoc
+++ /dev/null
@@ -1,61 +0,0 @@
-[[editing]]
-= `editing()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `editing()` attribute determines whether a domain object's properties and collections are not editable (are read-only).
-
-The default is `AS_CONFIGURED`, meaning that the xref:refguide:config:configuring-core.adoc[configuration property] `isis.objects.editing` is used to determine the whether the object is modifiable:
-
-* `true` +
-+
-the object's properties and collections are modifiable.
-
-* `false` +
-+
-the object's properties and collections are read-only, ie _not_ modifiable.
-
-If there is no configuration property in `isis.properties` then object are assumed to be modifiable.
-
-[TIP]
-====
-In other words, editing can be disabled globally for an application by setting:
-
-[source,ini]
-----
-isis.objects.editing=false
-----
-
-We recommend enabling this feature; it will help drive out the underlying business operations (processes and procedures) that require objects to change; these can then be captured as business actions.
-====
-
-The related `editingDisabledReason()` attribute specifies the a hard-coded reason why the object's properties and collections cannot be modified directly.
-
-
-
-This default can be overridden on an object-by-object basis; if `editing()` is set to `ENABLED` then the object's properties and collections are editable irrespective of the configured value; if set to `DISABLED` then the object's properties and collections are not editable irrespective of the configured value.
-
-For example:
-
-[source,java]
-----
-@DomainObject(
- editing=Editing.DISABLED,
- editingDisabledReason="Reference data, so cannot be modified"
-)
-public class Country {
- ...
-}
-----
-
-[TIP]
-====
-Another interesting example of immutable reference data is to define an entity to represent individual dates; after all, for a system with an expected lifetime of 20 years that equates to only 7,300 days, a comparatively tiny number of rows to hold in a database.
-====
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/loadedLifecycleEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/loadedLifecycleEvent.adoc
deleted file mode 100644
index 6b509f1..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/loadedLifecycleEvent.adoc
+++ /dev/null
@@ -1,100 +0,0 @@
-[[loadedLifecycleEvent]]
-= loadedLifecycleEvent()
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a persistent domain object is loaded from the database, a "loaded" lifecycle event is fired.
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object just loaded.
-The subscriber could then, for example, update or default values on the object (eg to support on-the-fly migration scenarios).
-
-By default the event raised is `ObjectLoadedEvent.Default`. For example:
-
-[source,java]
-----
-@DomainObject
-public class ToDoItemDto {
- ...
-}
-----
-
-The purpose of the `loadedLifecycleEvent()` attribute is to allows a custom subclass to be emitted instead.
-A similar attribute is available for other lifecycle events.
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- loadedLifecycleEvent=ToDoItem.LoadedEvent.class
-)
-public class ToDoItem {
- public static class LoadedEvent
- extends org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent<ToDoItem> { }
- ...
-}
-----
-
-The benefit is that subscribers can be more targeted as to the events that they subscribe to.
-
-
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
-The examples below support both.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ObjectLoadedEvent.class)
- public void on(ObjectLoadedEvent ev) {
- if(ev.getSource() instanceof ToDoItem) {
- // ...
- }
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ToDoItem.ObjectLoadedEvent.class)
- public void on(ToDoItem.ObjectLoadedEvent ev) {
- // ...
- }
-}
-----
-
-
-
-
-
-
-== Default, Doop and Noop events
-
-If the `loadedLifecycleEvent` attribute is not explicitly specified (is left as its default value, `ObjectLoadedEvent.Default`), then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.domainObjectAnnotation.loadedLifecycleEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
-
-On the other hand, if the `loadedLifecycleEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `ObjectLoadedEvent.Doop` as such a subclass, so setting the `loadedLifecycleEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
-
-And, conversely, the framework also provides `ObjectLoadedEvent.Noop`; if `loadedLifecycleEvent` attribute is set to this class, then no event will be posted.
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/mixinMethod.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/mixinMethod.adoc
deleted file mode 100644
index df48655..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/mixinMethod.adoc
+++ /dev/null
@@ -1,40 +0,0 @@
-[[mixinMethod]]
-= `mixinMethod()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `mixinMethod()` attribute specifies the name of the method to be treated as a "reserved" method name, meaning that the mixin's name should instead be inferred from the mixin's type.
-
-For example:
-
-[source,java]
-----
-@DomainObject
-public class Customer {
-
- @DomainObject(nature=Nature.MIXIN, mixinMethod="execute")
- public static class placeOrder {
-
- Customer customer;
- public placeOrder(Customer customer) { this.customer = customer; }
-
- public Customer execute(Product p, int quantity) { /* ... */ }
- public String disableExecute() { /* ... */ }
- public String validate0Execute() { /* ... */ }
- }
- ...
-)
-----
-
-This allows all mixins to follow a similar convention, with the name of the mixin inferred entirely from its type ("placeOrder").
-
-When invoked programmatically, the code reads:
-
-[source,java]
-----
-mixin(Customer.placeOrder.class, someCustomer).execute(someProduct, 3);
-----
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/nature.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/nature.adoc
deleted file mode 100644
index 23e16c1..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/nature.adoc
+++ /dev/null
@@ -1,80 +0,0 @@
-[[nature]]
-= `nature()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `nature()` attribute is used to characterize the domain object as either an entity (part of the domain layer) or as a view model (part of the application layer).
-If the domain object should be thought of as an entity, it also captures how the persistence of that entity is managed.
-
-For example:
-
-[source,java]
-----
-@DomainObject(nature=Nature.VIEW_MODEL)
-public class PieChartAnalysis {
- ...
-}
-----
-
-Specifically, the nature must be one of:
-
-* `NOT_SPECIFIED,` +
-+
-(the default); specifies no paricular semantics for the domain class.
-
-* `JDO_ENTITY` +
-+
-indicates that the domain object is an entity whose persistence is managed internally by Apache Isis, using the JDO/DataNucleus objectstore.
-
-* `EXTERNAL_ENTITY` +
-+
-indicates that the domain objecct is a wrapper/proxy/stub (choose your term) to an entity that is managed by some related external system.
-For example, the domain object may hold just the URI to a RESTful resource of some third party REST service, or the id of some system accessible over SOAP.
-+
-The identity of an external entity is determined solely by the state of entity's properties.
-The framework will automatically recreate the domain object each time it is interacted with.
-
-* `INMEMORY_ENTITY` +
-+
-indicates that the domain object is a wrapper/proxy/stub to a "synthetic" entity, for example one that is constructed from some sort of internal memory data structure.
-+
-The identity of an inmemory entity is determined solely by the state of entity's properties.
-The framework will automatically recreate the domain object each time it is interacted with.
-
-* `MIXIN` +
-+
-indicates that the domain object is part of the domain layer, and is contributing behaviour to objects of some other type as a mixin (also known as a trait).
-+
-Equivalent to annotating with xref:refguide:applib-ant:Mixin.adoc[`@Mixin`].
-For further discussion on using mixins, see xref:userguide:fun:building-blocks.adoc#mixins[mixins] in the user guide.
-
-
-* `VIEW_MODEL` +
-+
-indicates that the domain object is conceptually part of the application layer, and exists to surfaces behaviour and/or state that is aggregate of one or more domain entities.
-
-Those natures that indicate the domain object is an entity (of some sort or another) mean then that the domain object is considered to be part of the domain model layer.
-As such the domain object's class cannot be annotated with xref:refguide:applib-ant:ViewModel.adoc[`@ViewModel`] or implement the xref:refguide:applib-cm:classes/super.adoc#ViewModel[`ViewModel`] interface.
-
-
-[NOTE]
-====
-Under the covers Apache Isis' support for `VIEW_MODEL`, `EXTERNAL_ENTITY` and `INMEMORY_ENTITY` domain objects is identical; the state of the object is encoded into its internal OID (represented ultimately as its URL), and is recreated directly from that URL.
-
-Because this particular implementation was originally added to Apache Isis in support of view models, the term was also used for the logically different external entities and inmemory entities.
-
-The benefit of `nature()` is that it allows the developer to properly characterize the layer (domain vs application) that an entity lives, thus avoiding confusion as "view model" (the implementation technique) and "view model" (the application layer concept).
-====
-
-[NOTE]
-====
-On the other hand, view models defined in this way do have some limitations; see xref:refguide:applib-ant:ViewModel.adoc[`@ViewModel`] for further discussion.
-
-These limitations do _not_ apply to xref:userguide:fun:programming-model.adoc#jaxb[JAXB] view models.
-If you are using view models heavily, you may wish to restrict yourself to just the JAXB flavour.
-====
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/objectType.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/objectType.adoc
deleted file mode 100644
index 7be99f7..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/objectType.adoc
+++ /dev/null
@@ -1,64 +0,0 @@
-[[objectType]]
-= `objectType()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `objectType()` attribute is used to provide a unique alias for the object's class name.
-
-This value is used internally to generate a string representation of an objects identity (the `Oid`).
-This can appear in several contexts, including:
-
-* as the value of `Bookmark#getObjectType()` and in the `toString()` value of `Bookmark`
- (see xref:refguide:applib-svc:integration-api/BookmarkService.adoc[`BookmarkService`])
-** and thus in the "table-of-two-halves" pattern, as per the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s poly module
-* in the serialization of `OidDto` in the xref:refguide:schema:cmd[command] and xref:refguide:schema:about.adoc#ixn.adoc[interaction] schemas
-* in the URLs of the xref:vro:ROOT:about.adoc[RestfulObjects viewer]
-* in the URLs of the xref:vw:ROOT:about.adoc[Wicket viewer] (in general and in particular if xref:vw:ROOT:features/hints-and-copy-url.adoc[copying URLs])
-* in XML snapshots generated by the xref:refguide:applib-svc:integration-api/XmlSnapshotService.adoc[`XmlSnapshotService`]
-
-
-
-== Examples
-
-For example:
-
-[source,java]
-----
-@DomainObject(
- objectType="orders.Order"
-)
-public class Order {
- ...
-}
-----
-
-
-== Precedence
-
-The rules of precedence are:
-
-1. xref:refguide:applib-ant:Discriminator.adoc[`@Discriminator`]
-2. `@DomainObject#objectType`
-3. xref:refguide:applib-ant:PersistenceCapable.adoc[`@PersistenceCapable`], if at least the `schema` attribute is defined.
-+
-If both `schema` and `table` are defined, then the value is "`schema.table`".
-If only `schema` is defined, then the value is "`schema.className`".
-
-4. Fully qualified class name of the entity.
-
-
-[TIP]
-====
-This might be obvious, but to make explicit: we recommend that you always specify an object type for your domain objects.
-
-Otherwise, if you refactor your code (change class name or move package), then any externally held references to the OID of the object will break.
-At best this will require a data migration in the database; at worst it could cause external clients accessing data through the xref:vro:ROOT:about.adoc[Restful Objects] viewer to break.
-====
-
-[NOTE]
-====
-If the object type is not unique across all domain classes then the framework will fail-fast and fail to boot.
-An error message will be printed in the log to help you determine which classes have duplicate object tyoes.
-====
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/persistedLifecycleEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/persistedLifecycleEvent.adoc
deleted file mode 100644
index 643f245..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/persistedLifecycleEvent.adoc
+++ /dev/null
@@ -1,107 +0,0 @@
-[[persistedLifecycleEvent]]
-= persistedLifecycleEvent()
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a (just created, still transient) domain object has been saved (INSERTed in)to the database, a "persisted" lifecycle event is fired.
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
-The subscriber could then, for example, maintain an external datastore.
-
-[WARNING]
-====
-The object should _not_ be modified during the persisted callback.
-====
-
-By default the event raised is `ObjectPersistedEvent.Default`.
-For example:
-
-[source,java]
-----
-@DomainObject
-public class ToDoItemDto {
- ...
-}
-----
-
-The purpose of the `persistedLifecycleEvent()` attribute is to allows a custom subclass to be emitted instead.
-A similar attribute is available for other lifecycle events.
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- persistedLifecycleEvent=ToDoItem.PersistedEvent.class
-)
-public class ToDoItem {
- public static class PersistedEvent
- extends org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent<ToDoItem> { }
- ...
-}
-----
-
-The benefit is that subscribers can be more targeted as to the events that they subscribe to.
-
-
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
-The examples below are compatible with both.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ObjectPersistedEvent.class)
- public void on(ObjectPersistedEvent ev) {
- if(ev.getSource() instanceof ToDoItem) {
- // ...
- }
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ToDoItem.ObjectPersistedEvent.class)
- public void on(ToDoItem.ObjectPersistedEvent ev) {
- // ...
- }
-}
-----
-
-
-
-
-
-
-
-== Default, Doop and Noop events
-
-If the `persistedLifecycleEvent` attribute is not explicitly specified (is left as its default value, `ObjectPersistedEvent.Default`), then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.domainObjectAnnotation.persistedLifecycleEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
-
-On the other hand, if the `persistedLifecycleEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `ObjectPersistedEvent.Doop` as such a subclass, so setting the `persistedLifecycleEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
-
-And, conversely, the framework also provides `ObjectPersistedEvent.Noop`; if `persistedLifecycleEvent` attribute is set to this class, then no event will be posted.
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/persistingLifecycleEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/persistingLifecycleEvent.adoc
deleted file mode 100644
index 00b2cbd..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/persistingLifecycleEvent.adoc
+++ /dev/null
@@ -1,108 +0,0 @@
-[[persistingLifecycleEvent]]
-= persistingLifecycleEvent()
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a (just created, still transient) domain object is about to be saved (INSERTed in)to the database, a "persisting" lifecycle event is fired.
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
-The subscriber could then, for example, update the object, or it could use it maintain an external datastore.
-One possible application is to maintain a full-text search database using link:https://lucene.apache.org/[Apache Lucene] or similar.
-
-[NOTE]
-====
-Another use case is to maintain "last updated by"/"last updated at" properties.
-While you can roll your own, note that the framework provides built-in support for this use case through the xref:refguide:applib-cm:classes/roles.adoc#Timestampable[`Timestampable`] role interface.
-====
-
-By default the event raised is `ObjectPersistingEvent.Default`.
-For example:
-
-[source,java]
-----
-@DomainObject
-public class ToDoItemDto {
- ...
-}
-----
-
-The purpose of the `persistingLifecycleEvent()` attribute is to allows a custom subclass to be emitted instead.
-A similar attribute is available for other lifecycle events.
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- persistingLifecycleEvent=ToDoItem.PersistingEvent.class
-)
-public class ToDoItem {
- public static class PersistingEvent
- extends org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent<ToDoItem> { }
- ...
-}
-----
-
-The benefit is that subscribers can be more targeted as to the events that they subscribe to.
-
-
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
-The examples below are compatible with both.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ObjectPersistingEvent.class)
- public void on(ObjectPersistingEvent ev) {
- if(ev.getSource() instanceof ToDoItem) {
- // ...
- }
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ToDoItem.ObjectPersistingEvent.class)
- public void on(ToDoItem.ObjectPersistingEvent ev) {
- // ...
- }
-}
-----
-
-
-
-
-
-
-== Default, Doop and Noop events
-
-If the `persistingLifecycleEvent` attribute is not explicitly specified (is left as its default value, `ObjectPersistingEvent.Default`), then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.domainObjectAnnotation.persistingLifecycleEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
-
-On the other hand, if the `persistingLifecycleEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `ObjectPersistingEvent.Doop` as such a subclass, so setting the `persistingLifecycleEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
-
-And, conversely, the framework also provides `ObjectPersistingEvent.Noop`; if `persistingLifecycleEvent` attribute is set to this class, then no event will be posted.
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/propertyDomainEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/propertyDomainEvent.adoc
deleted file mode 100644
index e74c5bd..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/propertyDomainEvent.adoc
+++ /dev/null
@@ -1,62 +0,0 @@
-[[propertyDomainEvent]]
-= `propertyDomainEvent()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a property of a domain object is interacted with then a domain event will be fired, for each of the various phases (hidden, disabled, validated, executing, executed).
-Using xref:refguide:applib-ant:Property.adoc#domainEvent[`@Property#domainEvent()`], the actual domain event class fired can be customised.
-the `@DomainObject#propertyDomainEvent()` attribute allows a common event domain class to be fired for all of the properties of the domain object.
-
-For example:
-
-[source,java]
-----
-@DomainObject(
- propertyDomainEvent=ToDoItem.PropertyDomainEventDefault.class
-)
-public class ToDoItem {
- public static class PropertyDomainEventDefault
- extends org.apache.isis.applib.events.domain.PropertyDomainEvent<Object> { }
- ...
-
- @Getter @Setter
- private String description;
-}
-----
-
-
-If there is a mixin for the domain object, then this will also honour the domain event.
-For example:
-
-[source,java]
-----
-@Mixin(method="act")
-public class ToDoItem_priority {
- private final ToDoItem todoItem;
- // constructor omitted
-
- @Action(semantics = SemanticsOf.SAFE)
- @ActionLayout(contributed = Contributed.AS_ASSOCIATION)
- @Property
- public Integer act() { /* ... */ }
-}
-----
-
-Interactions with the property contributed by this mixin will emit the domain event of the subject (`ToDoItem`).
-
-One small difference between the events emitted by a "regular" property and a contributed property is that the source of the event (as in `event#getSource()` will be different.
-In the former case it will be the domain object instance, in the latter it will be the mixin object instantiated automatically by the framework.
-
-However, the domain object is available using `event#getMixedIn()`.
-Even easier, `event#getSubject()` will always return the domain object (it returns the `#getMixedIn()` if present, otherwise the `#getSource()`.
-
-[NOTE]
-====
-Property domain events have generic types, with the first generic type indicating the event's source's type, and the second generic type indicating the property return type.
-
-Because an event specified at the class level might have either the domain object or a mixin for the domain object as its source, they should therefore use simply `Object` as their first generic type.
-
-They should _also_ have `Object` for their second generic type, because the return type of the various properties of the domain object will or could be different.
-====
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/publishing.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/publishing.adoc
deleted file mode 100644
index 219f75b..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/publishing.adoc
+++ /dev/null
@@ -1,54 +0,0 @@
-[[publishing]]
-= `publishing()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `publishing()` attribute determines whether and how a modified object instance is published via the registered implementation of xref:refguide:applib-svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`].
-
-A common use case is to notify external "downstream" systems of changes in the state of the Apache Isis application.
-
-The default value for the attribute is `AS_CONFIGURED`, meaning that the xref:refguide:config:configuring-core.adoc[configuration property] `isis.services.publish.objects` is used to determine the whether the action is published:
-
-* `all` +
-+
-all changed objects are published
-
-* `none` +
-+
-no changed objects are published
-
-If there is no configuration property in `isis.properties` then publishing is automatically disabled for domain objects.
-
-This default can be overridden on an object-by-object basis; if `publishing()` is set to `ENABLED` then changed instances of the domain class are published irrespective of the configured value; if set to `DISABLED` then the changed instances are _not_ published, again irrespective of the configured value.
-
-For example:
-
-[source,java]
-----
-@DomainObject(
- publishing=Publishing.ENABLED // <1>
-)
-public class InterestRate {
- ...
-}
-----
-<1> because set to enabled, will be published irrespective of the configured value.
-
-
-
-
-
-== See also
-
-This attribute is also supported for:
-
-* xref:refguide:applib-ant:Action.adoc#publishing[actions]
-+
-where it controls whether action invocations are published as events, and for
-
-* xref:refguide:applib-ant:Property.adoc#publishing[properties]
-+
-where it controls whether property edits are published as events.
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/removingLifecycleEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/removingLifecycleEvent.adoc
deleted file mode 100644
index 531a50c..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/removingLifecycleEvent.adoc
+++ /dev/null
@@ -1,109 +0,0 @@
-[[removingLifecycleEvent]]
-= removingLifecycleEvent()
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a (persistent) domain object is about to be removed (DELETEd) from the database, a "removing" lifecycle event is fired.
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
-The subscriber could then, for example, could use it maintain an external datastore.
-One possible application is to maintain a full-text search database using link:https://lucene.apache.org/[Apache Lucene] or similar.
-
-[NOTE]
-====
-Another use case is to maintain "last updated by"/"last updated at" properties.
-While you can roll your own, note that the framework provides built-in support for this use case through the xref:refguide:applib-cm:classes/roles.adoc#Timestampable[`Timestampable`] role interface.
-====
-
-By default the event raised is `ObjectRemovingEvent.Default`.
-For example:
-
-[source,java]
-----
-@DomainObject
-public class ToDoItemDto {
- ...
-}
-----
-
-The purpose of the `removingLifecycleEvent()` attribute is to allows a custom subclass to be emitted instead.
-A similar attribute is available for other lifecycle events.
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- removingLifecycleEvent=ToDoItem.RemovingEvent.class
-)
-public class ToDoItem {
- public static class RemovingEvent
- extends org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent<ToDoItem> { }
- ...
-}
-----
-
-The benefit is that subscribers can be more targeted as to the events that they subscribe to.
-
-
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
-The examples below are compatible with both.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ObjectRemovingEvent.class)
- public void on(ObjectRemovingEvent ev) {
- if(ev.getSource() instanceof ToDoItem) {
- // ...
- }
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ToDoItem.ObjectRemovingEvent.class)
- public void on(ToDoItem.ObjectRemovingEvent ev) {
- // ...
- }
-}
-----
-
-
-
-
-
-
-
-== Default, Doop and Noop events
-
-If the `removingLifecycleEvent` attribute is not explicitly specified (is left as its default value, `ObjectRemovingEvent.Default`), then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
-
-On the other hand, if the `removingLifecycleEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `ObjectRemovingEvent.Doop` as such a subclass, so setting the `removingLifecycleEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
-
-And, conversely, the framework also provides `ObjectRemovingEvent.Noop`; if `removingLifecycleEvent` attribute is set to this class, then no event will be posted.
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/updatedLifecycleEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/updatedLifecycleEvent.adoc
deleted file mode 100644
index 9b595ef..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/updatedLifecycleEvent.adoc
+++ /dev/null
@@ -1,107 +0,0 @@
-[[updatedLifecycleEvent]]
-= updatedLifecycleEvent()
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a (persistent) domain object has been modified and has been updated in the database, an "updated" lifecycle event is fired.
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
-
-[WARNING]
-====
-The object should _not_ be modified during the updated callback.
-====
-
-By default the event raised is `ObjectUpdatedEvent.Default`.
-For example:
-
-[source,java]
-----
-@DomainObject
-public class ToDoItemDto {
- ...
-}
-----
-
-The purpose of the `updatedLifecycleEvent()` attribute is to allows a custom subclass to be emitted instead.
-A similar attribute is available for other lifecycle events.
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- updatedLifecycleEvent=ToDoItem.UpdatedEvent.class
-)
-public class ToDoItem {
- public static class UpdatedEvent
- extends org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent<ToDoItem> { }
- ...
-}
-----
-
-The benefit is that subscribers can be more targeted as to the events that they subscribe to.
-
-
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
-The examples below are compatible with both.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ObjectUpdatedEvent.clas)
- public void on(ObjectUpdatedEvent ev) {
- if(ev.getSource() instanceof ToDoItem) {
- // ...
- }
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ToDoItem.ObjectUpdatedEvent.class)
- public void on(ToDoItem.ObjectUpdatedEvent ev) {
- // ...
- }
-}
-----
-
-
-
-
-
-
-
-
-== Default, Doop and Noop events
-
-If the `updatedLifecycleEvent` attribute is not explicitly specified (is left as its default value, `ObjectUpdatedEvent.Default`), then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.domainObjectAnnotation.updatedLifecycleEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
-
-On the other hand, if the `updatedLifecycleEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `ObjectUpdatedEvent.Doop` as such a subclass, so setting the `updatedLifecycleEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
-
-And, conversely, the framework also provides `ObjectUpdatedEvent.Noop`; if `updatedLifecycleEvent` attribute is set to this class, then no event will be posted.
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/updatingLifecycleEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/updatingLifecycleEvent.adoc
deleted file mode 100644
index 32fe598..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObject/updatingLifecycleEvent.adoc
+++ /dev/null
@@ -1,109 +0,0 @@
-[[updatingLifecycleEvent]]
-= updatingLifecycleEvent()
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a (persistent) domain object has been modified and is about to be updated to the database, an "updating" lifecycle event is fired.
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
-The subscriber could then, for example, update the object, or it could use it maintain an external datastore.
-One possible application is to maintain a full-text search database using link:https://lucene.apache.org/[Apache Lucene] or similar.
-
-[NOTE]
-====
-Another use case is to maintain "last updated by"/"last updated at" properties.
-While you can roll your own, note that the framework provides built-in support for this use case through the
-xref:refguide:applib-cm:classes/roles.adoc#Timestampable[`Timestampable`] role interface.
-====
-
-By default the event raised is `ObjectUpdatingEvent.Default`.
-For example:
-
-[source,java]
-----
-@DomainObject
-public class ToDoItemDto {
- ...
-}
-----
-
-The purpose of the `updatingLifecycleEvent()` attribute is to allows a custom subclass to be emitted instead.
-A similar attribute is available for other lifecycle events.
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- updatingLifecycleEvent=ToDoItem.UpdatingEvent.class
-)
-public class ToDoItem {
- public static class UpdatingEvent
- extends org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent<ToDoItem> { }
- ...
-}
-----
-
-The benefit is that subscribers can be more targeted as to the events that they subscribe to.
-
-
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
-The examples below are compatible with both.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ObjectUpdatingEvent.class)
- public void on(ObjectUpdatingEvent ev) {
- if(ev.getSource() instanceof ToDoItem) {
- // ...
- }
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ToDoItem.ObjectUpdatingEvent.class)
- public void on(ToDoItem.ObjectUpdatingEvent ev) {
- // ...
- }
-}
-----
-
-
-
-
-
-== Default, Doop and Noop events
-
-If the `updatingLifecycleEvent` attribute is not explicitly specified (is left as its default value, `ObjectUpdatingEvent.Default`),
-then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.domainObjectAnnotation.updatingLifecycleEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
-
-On the other hand, if the `updatingLifecycleEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `ObjectUpdatingEvent.Doop` as such a subclass, so setting the `updatingLifecycleEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
-
-And, conversely, the framework also provides `ObjectUpdatingEvent.Noop`; if `updatingLifecycleEvent` attribute is set to this class, then no event will be posted.
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout.adoc
deleted file mode 100644
index 33d0ba3..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout.adoc
+++ /dev/null
@@ -1,135 +0,0 @@
-= `@DomainObjectLayout`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@DomainObjectLayout` annotation applies to domain classes, collecting together all UI hints within a single annotation.
-
-
-[NOTE]
-====
-For view models that have been annotated with `@ViewModel` the equivalent xref:refguide:applib-ant:ViewModelLayout.adoc[`@ViewModelLayout`] can be used.
-====
-
-
-The table below summarizes the annotation's attributes.
-
-.`@DomainObjectLayout` attributes
-[cols="2,2,4a", options="header"]
-|===
-
-| Attribute
-| Values (default)
-| Description
-
-
-|xref:refguide:applib-ant:DomainObjectLayout.adoc#bookmarking[`bookmarking()`]
-|`AS_ROOT`, `AS_CHILD`, `NEVER` +
-(`NEVER`)
-|whether (and how) this domain object should be automatically bookmarked
-
-
-|xref:refguide:applib-ant:DomainObjectLayout.adoc#cssclass[`cssClass()`]
-|Any string valid as a CSS class
-|the css class that a domain class (type) should have, to allow more targetted styling in xref:refguide:config:application-specific/application-css.adoc[`application.css`]
-
-
-|xref:refguide:applib-ant:DomainObjectLayout.adoc#cssClassFa[`cssClassFa()`]
-|Any valid link:http://fortawesome.github.io/Font-Awesome/[Font awesome] icon name
-|specify a font awesome icon for the action's menu link or icon. +
-
-
-|`cssClassFaPosition()`
-|`LEFT`, `RIGHT` +
-(`LEFT`)
-|Currently unused.
-
-
-|xref:refguide:applib-ant:DomainObjectLayout.adoc#cssClassUiEvent[`cssClassUiEvent()`]
-|subtype of `CssClassUiEvent` +
-(`CssClassUiEvent.Default`)
-|the event type to be posted to the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] to obtain a CSS class for the domain object.
-
-|xref:refguide:applib-ant:DomainObjectLayout.adoc#describedAs[`describedAs()`]
-|String.
-|description of this class, eg to be rendered in a tooltip.
-
-|xref:refguide:applib-ant:DomainObjectLayout.adoc#iconUiEvent[`iconUiEvent()`]
-|subtype of `IconUiEvent` +
-(`IconUiEvent.Default`)
-|the event type to be posted to the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] to obtain the icon (name) for the domain object.
-
-|xref:refguide:applib-ant:DomainObjectLayout.adoc#layoutUiEvent[`layoutUiEvent()`]
-|subtype of `LayoutUiEvent` +
-(`LayoutUiEvent.Default`)
-|the event type to be posted to the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] to obtain the layout (name) for the domain object.
-
-|xref:refguide:applib-ant:DomainObjectLayout.adoc#named[`named()`]
-|String.
-|to override the name inferred from the action's name in code. +
-
-A typical use case is if the desired name is a reserved Java keyword, such as `default` or `package`.
-
-
-|xref:refguide:applib-ant:DomainObjectLayout.adoc#paged[`paged()`]
-|Positive integer
-|the page size for instances of this class when rendered within a table (as returned from an action invocation)
-
-
-|xref:refguide:applib-ant:DomainObjectLayout.adoc#plural[`plural()`]
-|String.
-|the plural name of the class
-
-
-|xref:refguide:applib-ant:DomainObjectLayout.adoc#titleUiEvent[`titleUiEvent()`]
-|subtype of `TitleUiEvent` +
-(`TitleUiEvent.Default`)
-|the event type to be posted to the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] to obtain the title for the domain object.
-
-|===
-
-
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- cssClass="x-key",
- cssClassFa="fa-checklist",
- describedAs="Capture a task that you need to do",
- named="ToDo",
- paged=30,
- plural="ToDo List")
-)
-public class ToDoItem {
- ...
-}
-----
-
-
-
-[NOTE]
-====
-Note that there is (currently) no support for specifying UI hints for domain objects through the dynamic xref:vw:ROOT:layout/file-based.adoc[`.layout.xml`] file (only for properties, collections and actions are supported).
-====
-
-
-
-
-
-
-
-
-include:DomainObjectLayout/bookmarking.adoc[leveloffset=+1]
-include:DomainObjectLayout/cssClass.adoc[leveloffset=+1]
-include:DomainObjectLayout/cssClassFa.adoc[leveloffset=+1]
-include:DomainObjectLayout/cssClassUiEvent.adoc[leveloffset=+1]
-include:DomainObjectLayout/describedAs.adoc[leveloffset=+1]
-include:DomainObjectLayout/iconUiEvent.adoc[leveloffset=+1]
-include:DomainObjectLayout/layoutUiEvent.adoc[leveloffset=+1]
-include:DomainObjectLayout/named.adoc[leveloffset=+1]
-include:DomainObjectLayout/paged.adoc[leveloffset=+1]
-include:DomainObjectLayout/plural.adoc[leveloffset=+1]
-include:DomainObjectLayout/titleUiEvent.adoc[leveloffset=+1]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/_attributes.adoc
deleted file mode 100644
index d011536..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ../..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/bookmarking.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/bookmarking.adoc
deleted file mode 100644
index 9d629ee..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/bookmarking.adoc
+++ /dev/null
@@ -1,71 +0,0 @@
-[[bookmarking]]
-= `bookmarking()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `bookmarking()` attribute indicates that an entity is automatically bookmarked.
-This attribute is also supported for xref:refguide:applib-ant:Action.adoc#bookmarking[domain objects].
-
-(In the Wicket viewer), a link to a bookmarked object is shown in the bookmarks panel:
-
-image::reference-annotations/DomainObjectLayout/bookmarking.png[width="720px",link="{imagesdir}/reference-annotations/DomainObjectLayout/bookmarking.png"]
-
-[NOTE]
-====
-Note that this screenshot shows an earlier version of the xref:vw:ROOT:about.adoc[Wicket viewer] UI (specifically, pre 1.8.0).
-====
-
-For example:
-
-[source,java]
-----
-@DomainObject(bookmarking=BookmarkPolicy.AS_ROOT)
-public class ToDoItem ... {
- ...
-}
-----
-
-indicates that the `ToDoItem` class is bookmarkable:
-
-
-It is also possible to nest bookmarkable entities.
-For example, this screenshot is taken from http://github.com/estatio/estatio[Estatio]:
-
-image::reference-annotations/DomainObjectLayout/bookmarking-nested.png[width="720px",link="{imagesdir}/reference-annotations/DomainObjectLayout/bookmarking-nested.png"]
-
-
-[NOTE]
-====
-Note that this screenshot shows an earlier version of the xref:vw:ROOT:about.adoc[Wicket viewer] UI (specifically, pre 1.8.0).
-====
-
-
-For example, the `Property` entity "[OXF] Oxford Super Mall" is a root bookmark, but the `Unit` child entity "[OXF-001] Unit 1" only appears as a bookmark _but only if_ its parent `Property` has already been bookmarked.
-
-This is accomplished with the following annotations:
-
-[source,java]
-----
-@DomainObject(bookmarking=BookmarkPolicy.AS_ROOT)
-public class Property { /* ... */ }
-----
-
-and
-
-[source,java]
-----
-@DomainObject(bookmarking=BookmarkPolicy.AS_CHILD)
-public abstract class Unit { /* ... */ }
-----
-
-The nesting can be done to any level; the Estatio screenshot also shows a bookmark nesting `Lease` > `LeaseItem` > `LeaseTerm` (3 levels deep).
-
-
-
-== See also
-
-This attribute can also be applied to xref:refguide:applib-ant:ViewModelLayout.adoc#bookmarking[view models].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/cssClass.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/cssClass.adoc
deleted file mode 100644
index 43bccb3..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/cssClass.adoc
+++ /dev/null
@@ -1,43 +0,0 @@
-[[cssClass]]
-= `cssClass()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `cssClass()` attribute can be used to render additional CSS classes in the HTML (a wrapping `<div>`) that represents the domain object.
-xref:refguide:config:application-specific/application-css.adoc[Application-specific CSS] can then be used to target and adjust the UI representation of that particular element.
-
-
-For example:
-
-[source,java]
-----
-@DomainObject
-@DomainObjectLayout(
- cssClass="x-core-entity"
-)
-public class ToDoItem { /* ... */ }
-----
-
-
-
-
-[NOTE]
-====
-The similar xref:refguide:applib-ant:DomainObjectLayout.adoc#cssClassFa[`@DomainObjectLayout#cssClassFa()`] annotation attribute is also used as a hint to apply CSS, but in particular to allow http://fortawesome.github.io/Font-Awesome/icons/[Font Awesome icons] to be rendered as the icon for classes.
-====
-
-
-
-== See also
-
-This attribute can also be applied to:
-
-* xref:refguide:applib-ant:ViewModelLayout.adoc#cssClass[view models]
-* xref:refguide:applib-ant:ActionLayout.adoc#cssClass[actions]
-* xref:refguide:applib-ant:PropertyLayout.adoc#cssClass[properties],
-* xref:refguide:applib-ant:CollectionLayout.adoc#cssClass[collections]
-* xref:refguide:applib-ant:ParameterLayout.adoc#cssClass[parameters].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/cssClassFa.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/cssClassFa.adoc
deleted file mode 100644
index fbaff5e..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/cssClassFa.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-[[cssClassFa]]
-= `cssClassFa()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `cssClassFa()` attribute is used to specify the name of a link:http://fortawesome.github.io/Font-Awesome/icons/[Font Awesome icon] name, to be rendered as the domain object's icon.
-
-If necessary the icon specified can be overridden by a particular object instance using the xref:refguide:applib-cm:methods.adoc#iconName[`iconName()`] method.
-
-
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- cssClassFa="fa-check-circle"
-)
-public class ToDoItem { /* ... */ }
-----
-
-There can be multiple "fa-" classes, eg to mirror or rotate the icon.
-There is no need to include the mandatory `fa` "marker" CSS class; it will be automatically added to the list.
-The `fa-` prefix can also be omitted from the class names; it will be prepended to each if required.
-
-
-The related `cssClassFaPosition()` attribute is currently unused for domain objects; the icon is always rendered to the left.
-
-
-[TIP]
-====
-The similar xref:refguide:applib-ant:DomainObjectLayout.adoc#cssClass[`@DomainObjectLayout#cssClass()`] annotation attribute is also used as a hint to apply CSS, but for wrapping the representation of an object or object member so that it can be styled in an application-specific way.
-====
-
-
-== See also
-
-These attributes can also be applied to:
-
-* xref:refguide:applib-ant:ViewModelLayout.adoc#cssClassFa[view models] to specify the object's icon, and
-* xref:refguide:applib-ant:ActionLayout.adoc#cssClassFa[actions] to specify an icon for the action's representation as a button or menu item.
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/cssClassUiEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/cssClassUiEvent.adoc
deleted file mode 100644
index 1bb583f..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/cssClassUiEvent.adoc
+++ /dev/null
@@ -1,124 +0,0 @@
-[[cssClassUiEvent]]
-= cssClassUiEvent()
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a domain object is to be rendered, the framework fires off an CSS class UI event to obtain a CSS class to use in any wrapping ``<div>``s and ``<span>``s that render the domain object.
-This is as an alternative to implementing xref:refguide:applib-cm:methods.adoc#cssClass[`cssClass()`] reserved method.
-(If `cssClass()` is present, then it will take precedence).
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] and can use obtain a reference to the domain object from the event.
-From this they can, if they wish, specify a CSS class for the domain object using the event's API.
-
-[NOTE]
-====
-The feature was originally introduced so that xref:refguide:applib-ant:XmlRootElement.adoc[`@XmlRootElement`]-annotated xref:userguide:fun:building-blocks.adoc#view-models[view model]s could be kept as minimal as possible, just defining the data.
-UI events allow subscribers to provide UI hints, while xref:userguide:fun:building-blocks.adoc#mixins[mixin]s can be used to provide the behaviour.
-====
-
-By default the event raised is `CssClassUiEvent.Default`.
-For example:
-
-[source,java]
-----
-@DomainObjectLayout
-public class ToDoItemDto {
- ...
-}
-----
-
-The purpose of the `cssClassUiEvent()` attribute is to allows a custom subclass to be emitted instead.
-A similar attribute is available for titles and icons.
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- iconUiEvent=ToDoItemDto.CssClassUiEvent.class
-)
-public class ToDoItemDto {
- public static class CssClassUiEvent
- extends org.apache.isis.applib.events.ui.CssClassUiEvent<ToDoItemDto> { }
- ...
-}
-----
-
-The benefit is that subscribers can be more targeted as to the events that they subscribe to.
-
-
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API
-or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured)
-using the link:http://www.axonframework.org/[Axon Framework] API.
-The examples below are compatible with both.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(CssClassUiEvent.class)
- public void on(CssClassUiEvent ev) {
- if(ev.getSource() instanceof ToDoItemDto) {
- // ...
- }
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ToDoItemDto.CssClassUiEvent.class)
- public void on(ToDoItemDto.CssClassUiEvent ev) {
- // ...
- }
-}
-----
-
-The subscriber should then use `CssClassUiEvent#setCssClass(...)` to actually specify the CSS class to be used.
-
-
-
-
-
-== Default, Doop and Noop events
-
-If the `cssClassUiEvent` attribute is not explicitly specified (is left as its default value, `CssClassUiEvent.Default`), then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.domainObjectLayoutAnnotation.cssClassUiEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
-
-On the other hand, if the `cssClassUiEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `CssClassUiEvent.Doop` as such a subclass, so setting the `cssClassUiEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
-
-And, conversely, the framework also provides `CssClassUiEvent.Noop`; if `cssClassUiEvent` attribute is set to this class, then no event will be posted.
-
-
-
-
-
-
-== Raising events programmatically
-
-Normally events are only raised for interactions through the UI.
-However, events can be raised programmatically either by calling the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] API directly.
-
-
-== See also
-
-This attribute can also be applied to xref:refguide:applib-ant:ViewModelLayout.adoc#cssClassUiEvent[view models].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/describedAs.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/describedAs.adoc
deleted file mode 100644
index df3eb79..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/describedAs.adoc
+++ /dev/null
@@ -1,34 +0,0 @@
-[[describedAs]]
-= `describedAs()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `describedAs()` attribute is used to provide a short description of the domain object to the user.
-In the xref:vw:ROOT:about.adoc[Wicket viewer] it is displayed as a 'tool tip'.
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- describedAs="A customer who may have originally become known to us via the marketing system or who may have contacted us directly."
- )
-public class ProspectiveSale {
- ...
-}
-----
-
-
-
-== See also
-
-The attribute can also be specified for:
-
-* xref:refguide:applib-ant:CollectionLayout.adoc#describedAs[collections]
-* xref:refguide:applib-ant:PropertyLayout.adoc#describedAs[properties]
-* xref:refguide:applib-ant:ActionLayout.adoc#describedAs[actions]
-* xref:refguide:applib-ant:ParameterLayout.adoc#describedAs[parameters] and
-* xref:refguide:applib-ant:ViewModelLayout.adoc#describedAs[view models].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/iconUiEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/iconUiEvent.adoc
deleted file mode 100644
index 44818df..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/iconUiEvent.adoc
+++ /dev/null
@@ -1,119 +0,0 @@
-[[iconUiEvent]]
-= iconUiEvent()
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a domain object is to be rendered, the framework fires off an icon UI event to obtain an icon (name) for the object (if possible).
-This is as an alternative to implementing xref:refguide:applib-cm:methods.adoc#iconName[`iconName()`] reserved method.
-(If `iconName()` is present, then it will take precedence).
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] and can use obtain a reference to the domain object from the event.
-From this they can, if they wish, specify an icon name for the domain object using the event's API.
-
-
-[NOTE]
-====
-The feature was originally introduced so that xref:refguide:applib-ant:XmlRootElement.adoc[`@XmlRootElement`]-annotated xref:userguide:fun:building-blocks.adoc#view-models[view model]s could be kept as minimal as possible, just defining the data.
-UI events allow subscribers to provide UI hints, while xref:userguide:fun:building-blocks.adoc#mixins[mixin]s can be used to provide the behaviour.
-====
-
-By default the event raised is `IconUiEvent.Default`.
-For example:
-
-[source,java]
-----
-@DomainObjectLayout
-public class ToDoItemDto {
- ...
-}
-----
-
-The purpose of the `iconUiEvent()` attribute is to allows a custom subclass to be emitted instead.
-A similar attribute is available for titles and CSS classes.
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- iconUiEvent=ToDoItemDto.IconUiEvent.class
-)
-public class ToDoItemDto {
- public static class IconUiEvent
- extends org.apache.isis.applib.events.ui.IconUiEvent<ToDoItemDto> { }
- ...
-}
-----
-
-The benefit is that subscribers can be more targeted as to the events that they subscribe to.
-
-
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
-The examples below are compatible with both.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(IconUiEvent.class)
- public void on(IconUiEvent ev) {
- if(ev.getSource() instanceof ToDoItemDto) {
- // ...
- }
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ToDoItemDto.IconUiEvent.class)
- public void on(ToDoItemDto.IconUiEvent ev) {
- // ...
- }
-}
-----
-
-The subscriber should then use `IconUiEvent#setIconName(...)` to actually specify the icon name to be used.
-
-
-
-
-== Default, Doop and Noop events
-
-If the `iconUiEvent` attribute is not explicitly specified (is left as its default value, `IconUiEvent.Default`), then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.domainObjectLayoutAnnotation.iconUiEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
-
-On the other hand, if the `iconUiEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `IconUiEvent.Doop` as such a subclass, so setting the `iconUiEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
-
-And, conversely, the framework also provides `IconUiEvent.Noop`; if `iconUiEvent` attribute is set to this class, then no event will be posted.
-
-
-
-== Raising events programmatically
-
-Normally events are only raised for interactions through the UI.
-However, events can be raised programmatically by calling the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] API directly.
-
-
-== See also
-
-This attribute can also be applied to xref:refguide:applib-ant:ViewModelLayout.adoc#iconNameUiEvent[view models].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/layoutUiEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/layoutUiEvent.adoc
deleted file mode 100644
index d197145..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/layoutUiEvent.adoc
+++ /dev/null
@@ -1,118 +0,0 @@
-[[layoutUiEvent]]
-= layoutUiEvent()
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a domain object is to be rendered, the framework fires off an layout UI event to obtain an alternative layout name with which to render the domain object.
-This is as an alternative to implementing xref:refguide:applib-cm:methods.adoc#layout[`layout()`] reserved method.
-(If `layout()` is present, then it will take precedence).
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] and can use obtain a reference to the domain object from the event.
-From this they can, if they wish, specify a CSS class for the domain object using the event's API.
-
-By default the event raised is `LayoutUiEvent.Default`.
-For example:
-
-[source,java]
-----
-@DomainObjectLayout
-public class ToDoItemDto {
- ...
-}
-----
-
-The purpose of the `layoutUiEvent()` attribute is to allows a custom subclass to be emitted instead.
-A similar attribute is available for titles and icons.
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- iconUiEvent=ToDoItemDto.LayoutUiEvent.class
-)
-public class ToDoItemDto {
- public static class LayoutUiEvent
- extends org.apache.isis.applib.events.ui.LayoutUiEvent<ToDoItemDto> { }
- ...
-}
-----
-
-The benefit is that subscribers can be more targeted as to the events that they subscribe to.
-
-
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
-The examples below are compatible with both.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(LayoutUiEvent.class)
- public void on(LayoutUiEvent ev) {
- if(ev.getSource() instanceof ToDoItemDto) {
- // ...
- }
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListner(ToDoItemDto.LayoutUiEvent.class)
- public void on(ToDoItemDto.LayoutUiEvent ev) {
- // ...
- }
-}
-----
-
-The subscriber should then use `LayoutUiEvent#setLayout(...)` to actually specify the CSS class to be used.
-
-
-
-
-
-== Default, Doop and Noop events
-
-If the `layoutUiEvent` attribute is not explicitly specified (is left as its default value, `LayoutUiEvent.Default`), then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.domainObjectLayoutAnnotation.layoutUiEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
-
-On the other hand, if the `layoutUiEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `LayoutUiEvent.Doop` as such a subclass, so setting the `layoutUiEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
-
-And, conversely, the framework also provides `LayoutUiEvent.Noop`; if `layoutUiEvent` attribute is set to this class, then no event will be posted.
-
-
-
-
-
-
-== Raising events programmatically
-
-Normally events are only raised for interactions through the UI.
-However, events can be raised programmatically by calling the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] API directly.
-
-
-
-
-== See also
-
-This attribute can also be applied to xref:refguide:applib-ant:ViewModelLayout.adoc#layoutUiEvent[view models].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/named.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/named.adoc
deleted file mode 100644
index e272f89..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/named.adoc
+++ /dev/null
@@ -1,49 +0,0 @@
-[[named]]
-= `named()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `named()` attribute explicitly specifies the domain object's name, overriding the name that would normally be inferred from the Java source code.
-
-
-
-[TIP]
-====
-Following the link:http://en.wikipedia.org/wiki/Don%27t_repeat_yourself[don't repeat yourself] principle, we recommend that you only use this attribute when the desired name cannot be used in Java source code.
-Examples of that include a name that would be a reserved Java keyword (eg "package"), or a name that has punctuation, eg apostrophes.
-====
-
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- named="Customer"
-)
-public class CustomerImpl implements Customer{
- ...
-}
-----
-
-It's also possible to specify a xref:refguide:applib-ant:DomainObjectLayout.adoc#plural[plural form] of the name, used by the framework when rendering a standalone collection of the domain object.
-
-
-[TIP]
-====
-The framework also provides a separate, powerful mechanism for xref:userguide:btb:i18n.adoc[internationalization].
-====
-
-
-== See also
-
-The attribute can also be specified for:
-
-* xref:refguide:applib-ant:ActionLayout.adoc#named[actions]
-* xref:refguide:applib-ant:CollectionLayout.adoc#named[collections]
-* xref:refguide:applib-ant:PropertyLayout.adoc#named[properties]
-* xref:refguide:applib-ant:ParameterLayout.adoc#named[parameters]
-* xref:refguide:applib-ant:ViewModelLayout.adoc#named[view models]
-* xref:refguide:applib-ant:DomainServiceLayout.adoc#named[domain services].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/paged.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/paged.adoc
deleted file mode 100644
index 4113e9c..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/paged.adoc
+++ /dev/null
@@ -1,42 +0,0 @@
-[[paged]]
-= `paged()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `paged()` attribute specifies the number of rows to display in a standalone collection, as returned from an action invocation.
-
-
-
-[WARNING]
-====
-The xref:vro:ROOT:about.adoc[RestfulObjects viewer] currently does not support paging.
-The xref:vw:ROOT:about.adoc[Wicket viewer] _does_ support paging, but note that the paging is performed client-side rather than server-side.
-
-We therefore recommend that large collections should instead be modelled as actions (to allow filtering to be applied to limit the number of rows).
-====
-
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(paged=15)
-public class Order {
- ...
-}
-----
-
-
-It is also possible to specify a global default for the page size of standalone collections, using the xref:refguide:config:configuring-core.adoc[configuration property] `isis.viewer.paged.standalone`.
-
-
-
-== See also
-
-This attribute can also be applied to:
-
-* xref:refguide:applib-ant:ViewModelLayout.adoc#paged[view models], and
-* xref:refguide:applib-ant:CollectionLayout.adoc#paged[collections]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/plural.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/plural.adoc
deleted file mode 100644
index 88b7c77..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/plural.adoc
+++ /dev/null
@@ -1,27 +0,0 @@
-[[plural]]
-= `plural()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-When Apache Isis displays a standalone collection of several objects, it will label the collection using the plural form of the object type.
-By default the plural name will be derived from the end of the singular name, with support for some basic English language defaults (eg using "ies" for names ending with a "y").
-The `plural()` attribute allows the plural form of the class name to be specified explicitly.
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(plural="Children")
-public class Child {
- ...
-}
-----
-
-
-== See also
-
-This attribute is also supported for xref:refguide:applib-ant:ViewModelLayout.adoc#plural[view models].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/titleUiEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/titleUiEvent.adoc
deleted file mode 100644
index d164fb9..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainObjectLayout/titleUiEvent.adoc
+++ /dev/null
@@ -1,117 +0,0 @@
-[[titleUiEvent]]
-= titleUiEvent()
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a domain object is to be rendered, the framework fires off a title UI event to obtain a title for the object.
-This is as an alternative to implementing xref:refguide:applib-cm:methods.adoc#title[`title()`] reserved method, or using the xref:refguide:applib-ant:Title.adoc[`@Title`] annotation, within the class itself.
-(If either `title()` or `@Title` are present, then they will take precedence).
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] and can
-use obtain a reference to the domain object from the event.
-From this they can, if they wish, specify a title for the domain object using the event's API.
-
-[NOTE]
-====
-The feature was originally introduced so that xref:refguide:applib-ant:XmlRootElement.adoc[`@XmlRootElement`]-annotated xref:userguide:fun:building-blocks.adoc#view-models[view model]s could be kept as minimal as possible, just defining the data.
-UI events allow subscribers to provide UI hints, while xref:userguide:fun:building-blocks.adoc#mixins[mixin]s can be used to provide the behaviour.
-====
-
-By default the event raised is `TitleUiEvent.Default`.
-For example:
-
-[source,java]
-----
-@DomainObjectLayout
-public class ToDoItemDto {
- ...
-}
-----
-
-The purpose of the `titleUiEvent()` attribute is to allows a custom subclass to be emitted instead.
-A similar attribute is available for icon names and CSS classes.
-
-For example:
-
-[source,java]
-----
-@DomainObjectLayout(
- titleUiEvent=ToDoItemDto.TitleUiEvent.class
-)
-public class ToDoItemDto {
- public static class TitleUiEvent
- extends org.apache.isis.applib.events.ui.TitleUiEvent<ToDoItemDto> { }
- ...
-}
-----
-
-The benefit is that subscribers can be more targeted as to the events that they subscribe to.
-
-
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
-The examples below are compatible with both.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(TitleUiEvent.class)
- public void on(TitleUiEvent ev) {
- if(ev.getSource() instanceof ToDoItemDto) {
- // ...
- }
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ToDoItemDto.TitleUiEvent.class)
- public void on(ToDoItemDto.TitleUiEvent ev) {
- // ...
- }
-}
-----
-
-The subscriber should then use either `TitleUiEvent#setTranslatableTitle(...)` or `TitleUiEvent#setTitle(...)` to actually specify the title to be used.
-
-
-
-
-== Default, Doop and Noop events
-
-If the `titleUiEvent` attribute is not explicitly specified (is left as its default value, `TitleUiEvent.Default`), then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.domainObjectLayoutAnnotation.titleUiEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
-
-On the other hand, if the `titleUiEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `TitleUiEvent.Doop` as such a subclass, so setting the `titleUiEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
-
-And, conversely, the framework also provides `TitleUiEvent.Noop`; if `titleUiEvent` attribute is set to this class, thn no event will be posted.
-
-
-== Raising events programmatically
-
-Normally events are only raised for interactions through the UI.
-However, events can be raised programmatically either by calling the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] API directly, or as a result of calling the xref:refguide:applib-svc:application-layer-api/TitleService.adoc[`TitleService`]'s `titleOf(...)` method.
-
-
-== See also
-
-This attribute can also be applied to xref:refguide:applib-ant:ViewModelLayout.adoc#titleUiEvent[view models].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService.adoc
deleted file mode 100644
index cecc957..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService.adoc
+++ /dev/null
@@ -1,70 +0,0 @@
-= `@DomainService`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@DomainService` annotation indicates that the (concrete) class should be automatically instantiated as a domain service.
-
-Domain services with this annotation do NOT need to be registered explicitly in `isis.properties`; they will be
-discovered automatically on the CLASSPATH.
-
-The table below summarizes the annotation's attributes.
-
-.`@DomainService` attributes
-[cols="2,2,4a", options="header"]
-|===
-
-| Attribute
-| Values (default)
-| Description
-
-
-|xref:refguide:applib-ant:DomainService.adoc#nature[`nature()`]
-|`VIEW`, `VIEW_MENU_ONLY`, `VIEW_CONTRIBUTIONS_ONLY`, `VIEW_REST_ONLY`, `DOMAIN` (`VIEW`)
-|the nature of this service: providing actions for menus, or as contributed actions, or for the xref:vro:ROOT:about.adoc[RestfulObjects REST API], or neither
-
-
-|xref:refguide:applib-ant:DomainService.adoc#objectType[`objectType()`]
-|
-|equivalent to xref:refguide:applib-ant:DomainObject.adoc#objectType[`@DomainObject#objectType()`], specifies the objectType of the service.
-
-The instanceId for services is always "1".
-
-
-|xref:refguide:applib-ant:DomainService.adoc#repositoryFor[`repositoryFor()`]
-|
-|if this domain service acts as a repository for an entity type, specify that entity type. This is used to determine an icon to use for the service (eg as shown in action prompts).
-
-
-|`menuOrder()`
-|
-|Deprecated in 1.8.0; use instead xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]
-
-|===
-
-
-
-For example:
-
-[source,java]
-----
-@DomainService(
- nature=NatureOfService.DOMAIN,
- repositoryFor=Loan.class
-)
-public class LoanRepository {
- @Programmatic
- public List<Loan> findLoansFor(Borrower borrower) { /* ... */ }
-}
-----
-
-
-
-
-
-
-
-include::DomainService/nature.adoc[leveloffset=+1]
-include::DomainService/objectType.adoc[leveloffset=+1]
-include::DomainService/repositoryFor.adoc[leveloffset=+1]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/_attributes.adoc
deleted file mode 100644
index d011536..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ../..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/nature.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/nature.adoc
deleted file mode 100644
index 585207e..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/nature.adoc
+++ /dev/null
@@ -1,94 +0,0 @@
-[[nature]]
-= `nature()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-By default, a domain service's actions will be rendered in the application menu bar _and_ be contributed _and_ appear in the REST API _and_ (of course) be available to invoke programmatically wherever that domain service is injected.
-This is great for initial prototyping, but later on you may prefer to add a little more structure.
-This is the purpose of the `nature()` attribute: to indicates the intent of (all of) the actions defined within the domain service.
-
-The values of the enum are:
-
-* `VIEW` +
-+
-The default; the service's actions appear on menu bars, can be contributed, appear in the REST API
-
-* `VIEW_MENU_ONLY` +
-+
-The service's actions appear on menus and in the REST API, but are not contributed to domain objects or view models
-
-* `VIEW_CONTRIBUTIONS_ONLY` +
-+
-The service's actions are intended only to be used as contributed actions/associations to domain objects and view model
-+
-The related xref:refguide:applib-ant:ActionLayout.adoc#contributedAs[`@ActionLayout#contributedAs()`] determines whether any given (1-arg) action is contributed as an association rather than an action.
-
-* `VIEW_REST_ONLY` +
-+
-The service's actions are intended only to be listed in the REST API exposed by the xref:vro:ROOT:about.adoc[RestfulObjects viewer].
-
-* `DOMAIN` +
-+
-The service and its actions are only intended to be invoked programmatically; they are a domain layer responsibility.
-
-
-The actual class name of the domain service is only rendered for the `VIEW`, `VIEW_MENU_ONLY` and `VIEW_REST_ONLY` natures.
-Thus, you might also want to adopt naming conventions for your domain classes so you can infer the nature from the class.
-For example, the naming convention adopted (by and large) by the (non-ASF) link:https://platform.incode.org[Incode Platform^] is `ProgrammaticServices` or `Repository` as a suffix for `DOMAIN` services, and `Contributions` as a suffix for `VIEW_CONTRIBUTIONS_ONLY` services.
-
-For example:
-
-[source,java]
-----
-@DomainService(
- nature=NatureOfService.VIEW_CONTRIBUTIONS_ONLY
-)
-public class LoanContributions { // <1>
- @Action(semantics=SemanticsOf.SAFE) // <2>
- @ActionLayout(contributed=Contributed.AS_ASSOCIATION )
- public List<Loan> currentLoans(Borrower borrower) { /* ... */ }
- public Borrower newLoan(Borrower borrower, Book book) { /* ... */ }
-}
-----
-<1> `Contributions` as a suffix for a domain service that contributes a number of actions to ``Borrower``s.
-Note that `Borrower` could be a (marker) interface, so this functionality is "mixed in" merely by the class (eg `LibraryMember`) implementing this interface
-<2> actions contibuted as associations (a collection in this case) must have safe semantics
-
-
-Another example:
-
-[source,java]
-----
-@DomainService(
- nature=NatureOfService.DOMAIN
-)
-public class LoanRepository { // <1>
- @Programmatic // <2>
- public List<Loan> findLoansFor(Borrower borrower) { /* ... */ }
-}
-----
-<1> `Repository` as a suffix for a domain-layer service
-<2> methods on `DOMAIN` services are often xref:refguide:applib-ant:Programmatic.adoc[`@Programmatic`]; they will never be exposed in the UI, so there's little point in including them in Apache Isis' metamodel
-
-
-
-A final example:
-
-[source,java]
-----
-@DomainService(
- nature=NatureOfService.VIEW_MENU_ONLY
-)
-public class Loans { // <1>
- @Action(semantics=SemanticsOf.SAFE)
- public List<Loan> findOverdueLoans() { /* ... */ }
- @Inject
- LoanRepository loanRepository; // <2>
-}
-----
-<1> name is intended to be rendered in the UI
-<2> it's common for domain-layer domain services to be injected into presentation layer services (such as `VIEW_MENU_ONLY` and `VIEW_CONTRIBUTIONS_ONLY`).
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/objectType.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/objectType.adoc
deleted file mode 100644
index a9a24e7..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/objectType.adoc
+++ /dev/null
@@ -1,58 +0,0 @@
-[[objectType]]
-= `objectType()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `objectType()` attribute is used to provide a unique alias for the domain service's class name.
-
-This value is used internally to generate a string representation of an service identity (the `Oid`).
-This can appear in several contexts, including:
-
-* as the value of `Bookmark#getObjectType()` and in the `toString()` value of `Bookmark`
- (see xref:refguide:applib-svc:integration-api/BookmarkService.adoc[`BookmarkService`])
-* in the serialization of `OidDto` in the xref:refguide:schema:cmd[command] and xref:refguide:schema:about.adoc#ixn.adoc[interaction] schemas
-* in the URLs of the xref:vro:ROOT:about.adoc[RestfulObjects viewer]
-* in the URLs of the xref:vw:ROOT:about.adoc[Wicket viewer] (specifically, for bookmarked actions)
-
-
-
-== Example
-
-For example:
-
-[source,java]
-----
-@DomainService(
- objectType="orders.OrderMenu"
-)
-public class OrderMenu {
- ...
-}
-----
-
-
-
-== Precedence
-
-The rules of precedence are:
-
-1. `@DomainService#objectType`
-2. xref:refguide:applib-cm:methods.adoc#getId[`getId()`]
-3. The fully qualified class name.
-
-
-[TIP]
-====
-This might be obvious, but to make explicit: we recommend that you always specify an object type for your domain services.
-
-Otherwise, if you refactor your code (change class name or move package), then any externally held references to the OID of the service will break.
-At best this will require a data migration in the database; at worst it could cause external clients accessing data through the xref:vro:ROOT:about.adoc[Restful Objects] viewer to break.
-====
-
-[NOTE]
-====
-If the object type is not unique across all domain classes then the framework will fail-fast and fail to boot.
-An error message will be printed in the log to help you determine which classes have duplicate object tyoes.
-====
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/repositoryFor.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/repositoryFor.adoc
deleted file mode 100644
index e1cc6cd..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainService/repositoryFor.adoc
+++ /dev/null
@@ -1,26 +0,0 @@
-[[repositoryFor]]
-= `repositoryFor()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `repositoryFor()` attribute is intended for domain services (probably with a xref:refguide:applib-ant:DomainService.adoc#nature[`nature=DOMAIN`]) that are intended to act as repositories for domain entities.
-
-For example:
-
-[source,java]
-----
-@DomainService(
- nature=NatureOfService.DOMAIN,
- repositoryFor=Loan.class
-)
-public class LoanRepository {
- @Programmatic
- public List<Loan> findLoansFor(Borrower borrower) { /* ... */ }
-}
-----
-
-
-Currently the metadata is unused; one planned use is to infer the icon for the domain service from the icon of the nominated entity.
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout.adoc
deleted file mode 100644
index 7ba06d6..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout.adoc
+++ /dev/null
@@ -1,76 +0,0 @@
-= `@DomainServiceLayout`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@DomainServiceLayout` annotation applies to domain services, collecting together all view layout semantics within a single annotation.
-
-[TIP]
-====
-You will also find some additional material in the xref:vw:ROOT:layout/application-menu.adoc[object layout] chapter.
-====
-
-
-The table below summarizes the annotation's attributes.
-
-.`@DomainServiceLayout` attributes
-[cols="2,2,4a", options="header"]
-|===
-
-| Attribute
-| Values (default)
-| Description
-
-
-|xref:refguide:applib-ant:DomainServiceLayout.adoc#menuBar[`menuBar()`]
-|`PRIMARY`, `SECONDARY`, `TERTIARY` (`PRIMARY`).
-|the menubar in which the menu that holds this service's actions should reside.
-
-
-|xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`menuOrder()`]
-|
-|the order of the service's menu with respect to other service's.
-
-
-|xref:refguide:applib-ant:DomainServiceLayout.adoc#named[`named()`]
-|string, eg "Customers"
-|name of this class (overriding the name derived from its name in code)
-
-
-
-|===
-
-
-
-For example:
-
-[source,java]
-----
-@DomainService
-@DomainServiceLayout(
- menuBar=MenuBar.PRIMARY,
- menuOrder="100",
- named="ToDos"
-)
-public class ToDoItems {
- ...
-}
-----
-
-
-
-[NOTE]
-====
-Note that there is (currently) no support for specifying UI hints for domain services through the dynamic xref:vw:ROOT:layout/file-based.adoc[`.layout.xml`] file (only for properties, collections and actions are supported).
-====
-
-
-
-
-
-
-
-include::DomainServiceLayout/menuBar.adoc[leveloffset=+1]
-include::DomainServiceLayout/menuOrder.adoc[leveloffset=+1]
-include::DomainServiceLayout/named.adoc[leveloffset=+1]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/_attributes.adoc
deleted file mode 100644
index d011536..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ../..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/menuBar.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/menuBar.adoc
deleted file mode 100644
index 083d9a9..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/menuBar.adoc
+++ /dev/null
@@ -1,43 +0,0 @@
-[[menuBar]]
-= `menuBar()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `menuBar()` attribute is a hint to specify where on the application menu a domain service's actions should be rendered.
-
-For example:
-
-[source,java]
-----
-@DomainService
-@DomainServiceLayout(menuBar=MenuBar.PRIMARY)
-public class ToDoItems {
- ...
-}
-----
-
-In the xref:vw:ROOT:about.adoc[Wicket viewer], domain services placed on the `PRIMARY` menu bar appears to the left:
-
-image::reference-annotations/DomainServiceLayout/menuBar-primary.png[width="720px",link="{imagesdir}/reference-annotations/DomainServiceLayout/menuBar-primary.png"]
-
-Domain services placed on the `SECONDARY` menu bar appear to the right:
-
-image::reference-annotations/DomainServiceLayout/menuBar-secondary.png[width="720px",link="{imagesdir}/reference-annotations/DomainServiceLayout/menuBar-secondary.png"]
-
-
-Domain services placed on the `TERTIARY` appear in the menu bar associated with the user's name (far top-right)
-
-image::reference-annotations/DomainServiceLayout/menuBar-tertiary.png[width="720px",link="{imagesdir}/reference-annotations/DomainServiceLayout/menuBar-tertiary.png"]
-
-
-The grouping of multiple domain services actions within a single drop-down is managed by the xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute.
-
-
-[NOTE]
-====
-The xref:vro:ROOT:about.adoc[RestfulObjects viewer] does not support this attribute.
-====
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/menuOrder.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/menuOrder.adoc
deleted file mode 100644
index 6d639ce..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/menuOrder.adoc
+++ /dev/null
@@ -1,69 +0,0 @@
-[[menuOrder]]
-= `menuOrder()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `menuOrder()` attribute determines the ordering of a domain service's actions as menu items within a specified menu bar and top-level menu.
-
-
-The algorithm works as follows:
-
-* first, the xref:refguide:applib-ant:DomainServiceLayout.adoc#menuBar[`menuBar()`] determines which of the three menu bars the service's actions should be rendered
-* then, the domain service's top-level name (typically explicitly specified using xref:refguide:applib-ant:DomainServiceLayout.adoc#named[`named()`]) is used to determine the top-level menu item to be rendered on the menu bar
-* finally, if there is more than domain service that has the same name, then the `menuOrder` attribute is used to order those actions on the menu item drop-down.
-
-For example, the screenshot below shows the "prototyping" menu from the (non-ASF) http://github.com/isisaddons/isis-app-todoapp[Isis addons' todoapp]:
-
-image::reference-annotations/DomainServiceLayout/menuOrder.png[width="500px",link="{imagesdir}/reference-annotations/DomainServiceLayout/menuOrder.png"]
-
-
-The xref:vw:ROOT:about.adoc[Wicket viewer] automatically places separators between actions from different domain services. From this we can infer that there are actually five different domain services that are all rendered on the "prototyping" top-level menu.
-
-One of these is the todoapp's `DemoDomainEventSubscriptions` service:
-
-[source,java]
-----
-@DomainService(
- nature = NatureOfService.VIEW_MENU_ONLY
-)
-@DomainServiceLayout(
- menuBar = MenuBar.SECONDARY,
- named = "Prototyping", // <1>
- menuOrder = "500.20") // <2>
-public class DemoDomainEventSubscriptions {
- @ActionLayout(named="Set subscriber behaviour")
- @MemberOrder(sequence = "500.20.1") // <3>
- public void subscriberBehaviour(...) { /* ... */ }
- ...
-}
-----
-<1> render on the "Prototyping" menu
-<2> positioning relative to other service's on the "Prototyping" menu
-<3> by convention (nothing more) the `@MemberOrder#sequence()` attribute continues the same Dewey decimal sequence format (a simple string "1" could in fact have been used instead)
-
-
-while others come from services provided by Apache Isis itself, eg:
-
-[source,java]
-----
-@DomainServiceLayout(
- named = "Prototyping", // <1>
- menuBar = MenuBar.SECONDARY,
- menuOrder = "500.500" // <2>
-)
-public class MetaModelServicesMenu {
- @MemberOrder(sequence="500.500.1") // <3>
- public Clob downloadMetaModel( ... ) { /* ... */ }
- ...
-}
-----
-<1> render on the "Prototyping" menu
-<2> positioning relative to other service's on the "Prototyping" menu; this appears after the `DemoDomainEventSubscriptions` service shown above
-<3> by convention (nothing more) the `@MemberOrder#sequence()` attribute continues the same Dewey decimal sequence format (a simple string "1", "2", "3", ... could in fact have been used instead)
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/named.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/named.adoc
deleted file mode 100644
index d27394e..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/DomainServiceLayout/named.adoc
+++ /dev/null
@@ -1,41 +0,0 @@
-[[named]]
-= `named()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `named()` attribute explicitly specifies the domain service's name, overriding the name that would normally be inferred from the Java source code.
-
-
-
-[TIP]
-====
-The value of this attribute also has an important role to play in the positioning of the domain service's actions relative to the actions of other domain services.
-See xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`menuOrder()`] for a full discussion with examples.
-====
-
-For example:
-
-[source,java]
-----
-@DomainService
-@DomainServiceLayout(
- named="Customers"
-)
-public class CustomerRepository {
- ...
-}
-----
-
-
-== See also
-
-This attribute can also be specified for:
-
-* xref:refguide:applib-ant:ActionLayout.adoc#named[actions]
-* xref:refguide:applib-ant:CollectionLayout.adoc#named[collections]
-* xref:refguide:applib-ant:PropertyLayout.adoc#named[properties]
-* xref:refguide:applib-ant:ParameterLayout.adoc#named[parameters]
-* xref:refguide:applib-ant:DomainObjectLayout.adoc#named[domain objects]
-* xref:refguide:applib-ant:ViewModelLayout.adoc#named[view models].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Facets.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Facets.adoc
deleted file mode 100644
index f767f2c..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Facets.adoc
+++ /dev/null
@@ -1,13 +0,0 @@
-= `@Facets`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@Facets` annotation allows `FacetFactory` implementations and so can be used to run install arbitrary `Facet`s for a type. Generally this is not needed, but can be useful for overriding a custom programming model where a `FacetFactory` is not typically included.
-
-
-[NOTE]
-====
-`FacetFactory` is an important internal API that is used by Apache Isis to build the metamodel.
-====
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/HomePage.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/HomePage.adoc
deleted file mode 100644
index 34b5b75..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/HomePage.adoc
+++ /dev/null
@@ -1,50 +0,0 @@
-= `@HomePage`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@HomePage` annotation allows a _single_ (no-arg, query-only) action on a _single_ domain service to be nominated as the action to invoke for the default home page. This often returns a view model that acts as some sort of dashboard, presenting key information and makeing the most commonly used actions easy to invoke.
-
-For example, the (non-ASF) http://github.com/isisaddons/isis-app-todoapp[Isis addons' todoapp] uses `@HomePage` to return a dashboard of todo items to complete:
-
-image::reference-annotations/HomePage/HomePage.png[width="800px",link="{imagesdir}/reference-annotations/HomePage/HomePage.png"]
-
-
-The corresponding code is:
-
-[source,java]
-----
-@DomainService(nature = NatureOfService.DOMAIN)
-public class ToDoAppDashboardService {
- @Action(
- semantics = SemanticsOf.SAFE
- )
- @HomePage
- public ToDoAppDashboard lookup() {
- return serviceRegistry.injectServicesInto(new ToDoAppDashboard());
- }
- @Inject
- ServiceRegistry serviceRegistry;
-}
-----
-
-where `ToDoAppDashboard` is:
-
-[source,java]
-----
-@DomainObject(nature = Nature.VIEW_MODEL)
-public class ToDoAppDashboard {
- public String title() { return "Dashboard"; }
-
- public List<ToDoItem> getNotYetComplete() { /* ... */ }
- public List<ToDoItem> getComplete() { /* ... */ }
-
- public Blob exportToWordDoc() { /* ... */ } // <1>
-}
-----
-<1> associated using xref:vw:ROOT:layout/file-based.adoc[file-based layout] with the `notYetComplete` collection.
-
-The other two actions shown in the above screenshot -- `exportAsXml` and `downloadLayout` -- are actually contributed to the `ToDoAppDashboard` through various domain services, as is the `downloadLayout` action.
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Inject.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Inject.adoc
deleted file mode 100644
index 1df9ac7..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Inject.adoc
+++ /dev/null
@@ -1,145 +0,0 @@
-= `@Inject` (`javax`)
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-Apache Isis automatically injects domain services into other domain services and also into domain objects and view models.
-In fact, it also injects domain services into xref:testing:integ-test-support:about.adoc[integration tests] and xref:fixtures:ROOT:about.adoc[fixture scripts].
-
-[NOTE]
-====
-One omission: Apache Isis (currently) does not inject services into `o.a.i.applib.spec.Specification` instances (as used by xref:refguide:applib-ant:Property.adoc#mustSatisfy[`@Property#mustSatisfy()`] and xref:refguide:applib-ant:Parameter.adoc#mustSatisfy[`@Parameter#mustSatisfy()`] annotations.
-====
-
-Apache Isis supports several syntaxes for injecting domain services.
-The simplest uses the `@javax.inject.Inject` annotation on the field, as defined in link:https://jcp.org/en/jsr/detail?id=330[JSR-330].
-
-For example:
-
-[source,java]
-----
-public class Customer {
- public List<Order> findRecentOrders() { // <1>
- return orders.recentOrdersFor(this);
- }
- @javax.inject.Inject
- OrderRepository orders; // <2>
-}
-----
-<1> an alternative implementation would be to implement `findRecentOrders()` as a xref:userguide:fun:programming-model.adoc#contributed-action[contributed action].
-<2> we recommend default (rather than `private`) visibility so that unit tests can easily mock out the service
-
-
-
-== Alternative syntaxes
-
-Apache Isis also supports setter-based injection:
-
-[source,java]
-----
-public class Customer {
- ...
- public void setOrderRepository(OrderRepository orderRepository) { /* ... */ }
-}
-----
-
-and also supports an additional syntax of using `inject...` as the prefix:
-
-[source,java]
-----
-public class Customer {
- ...
- public void injectOrderRepository(OrderRepository orderRepository) { /* ... */ }
-}
-----
-
-Generally we recommend using `@javax.inject.Inject`; it involves less code, and is more immediately familiar to most Java developers.
-
-
-
-== Injecting collection of services
-
-It can sometimes be useful to have declared multiple implementations of a particular domain service.
-For example, you may have a module that defines an SPI service, where multiple other modules might provide implementations of that SPI (akin to the chain of responsibility pattern).
-To support these scenarios, it is possible to annotate a `List` or `Collection`.
-
-For example, suppose that we provide an SPI service to veto the placing of ``Order``s for certain ``Customer``s:
-
-[source,java]
-----
-public interface CustomerOrderAdvisorService {
- @Programmatic
- String vetoPlaceOrder(Customer c);
-----
-
-We could then inject a collection of these services:
-
-[source,java]
-----
-public class Customer {
- public Order placeOrder(Product p, int quantity) { /* ... */ }
- public String disablePlaceOrder(Product p, int quantity) {
- for(CustomerOrderAdvisorService advisor: advisors) {
- String reason = advisor.vetoPlaceOrder(this);
- if(reason != null) { return reason; }
- }
- return null;
- }
- @Inject
- Collection<CustomerOrderAdvisorService> advisors; // <1>
-}
-----
-<1> inject a collection of the services.
-
-[NOTE]
-====
-An alternative and almost equivalent design would be to publish an event using the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] and implement the domain services as subscribers to the event.
-This alternative design is used in the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s poly module, for example.
-====
-
-
-
-
-
-== Manually injecting services
-
-Apache Isis performs dependency injection when domain entities are recreated.
-It will also perform dependency injection if an object is created through the xref:refguide:applib-svc:core-domain-api/FactoryService.adoc[`FactoryService`] or xref:refguide:applib-svc:core-domain-api/RepositoryService.adoc[`RepositoryService`].
-
-For example, to create a new (transient) domain object, the idiom is:
-
-[source,java]
-----
-Customer cust = repositoryService.instantiate(Customer.class); <1>
-// initialize state of "cust"
-repositoryService.persist(cust);
-----
-
-View models are created identically:
-
-[source,java]
-----
-ToDoAppDashboard dashboard = repositoryService.instantiate(ToDoAppDashboard.class);
-----
-
-
-If you prefer, though, you can simply instantiate domain objects using "new" and then inject domain services manually using xref:refguide:applib-svc:core-domain-api/ServiceRegistry.adoc[`ServiceRegistry`]:
-
-
-[source,java]
-----
-Customer cust = new Customer();
-serviceRegistry.injectServicesInto(cust);
-// initialize state of "cust"
-repositoryService.persist(cust);
-----
-
-
-
-[NOTE]
-====
-Note that using either `FactoryService#instantiate(...)` or `RepositoryService#instantiate(...)` will also automatically initialize all fields to their default values, and will also fire a "created" lifecycle event.
-
-Neither of these are particularly useful (and indeed can sometimes be rather confusing) so you may well wish to standardize on using `injectServicesInto(...)` throughout.
-====
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberGroupLayout.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberGroupLayout.adoc
deleted file mode 100644
index 2763f18..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberGroupLayout.adoc
+++ /dev/null
@@ -1,17 +0,0 @@
-= `@MemberGroupLayout`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@MemberGroupLayout` annotation specifies how an object's properties and collections are grouped together into columns, also specifying the relative positioning of those columns. It works in conjunction with the xref:refguide:applib-ant:MemberOrder.adoc[`@MemberOrder`] annotation.
-
-The annotation defines four attributes:
-
-* `columnSpans()` -- of type `int[]` -- which specifies the relative column sizes of the three columns that render properties as well as a fourth column that renders only collections
-
-* `left()` -- of type `String[]` - that specifies the order of the property groups (inferred from `@MemberOrder#name()`) as applied to properties) in the left-most column
-
-* `middle()` -- of type `String[]` - that specifies the order of the property groups (if any) as applied to properties) in the middle column
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder.adoc
deleted file mode 100644
index ae808b4..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder.adoc
+++ /dev/null
@@ -1,26 +0,0 @@
-= `@MemberOrder`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-// TODO: v2: replace @MemberOrder#name() with @PropertyLayout#group(); replace @MemberOrder#sequence() with @PropertyLayout#sequence().
-
-The `@MemberOrder` annotation is used to specify the relative order of domain object members, that is: properties, collections and actions.
-It works in conjunction with the xref:refguide:applib-ant:MemberGroupLayout.adoc[`@MemberGroupLayout`] annotation.
-
-
-The annotation defines two attributes:
-
-* xref:refguide:applib-ant:MemberOrder.adoc#name[`name()`]
-* xref:refguide:applib-ant:MemberOrder.adoc#sequence[`sequence()`]
-
-As this is an important topic, there is a xref:vw:ROOT:layout.adoc[separate chapter] that discussed object layout in full.
-
-
-[TIP]
-====
-The annotation is one of a handful (others including xref:refguide:applib-ant:Collection.adoc[`@Collection`], xref:refguide:applib-ant:CollectionLayout.adoc[`@CollectionLayout`], xref:refguide:applib-ant:Property.adoc[`@Property`]) and xref:refguide:applib-ant:PropertyLayout.adoc[`@PropertyLayout`] that can also be applied to the field, rather than the getter method.
- This is specifically so that boilerplate-busting tools such as link:https://projectlombok.org/[Project Lombok] can be used.
-====
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder/_attributes.adoc
deleted file mode 100644
index d011536..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ../..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder/name.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder/name.adoc
deleted file mode 100644
index 8796258..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder/name.adoc
+++ /dev/null
@@ -1,13 +0,0 @@
-[[name]]
-= `name()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-// TODO: v2: replace @MemberOrder#name() with @PropertyLayout#group().
-
-Broadly speaking the `name()` attribute is used to group or associate members together.
-
-As this is an important topic, there is a xref:vw:ROOT:layout.adoc[separate chapter] that discussed object layout in full.
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder/sequence.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder/sequence.adoc
deleted file mode 100644
index a06d8aa..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/MemberOrder/sequence.adoc
+++ /dev/null
@@ -1,12 +0,0 @@
-[[sequence]]
-= `sequence()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-// TODO: v2: replace @MemberOrder#sequence() with @PropertyLayout#sequence().
-
-Broadly speaking the `sequence()` attribute orders members once they have been grouped.
-
-As this is an important topic, there is a xref:vw:ROOT:layout.adoc[separate chapter] that discussed object layout in full.
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/MinLength.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/MinLength.adoc
deleted file mode 100644
index ab01109..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/MinLength.adoc
+++ /dev/null
@@ -1,28 +0,0 @@
-= `@MinLength`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-The `@MinLength` annotation is used to specify the minimum number of characters in a search of an xref:refguide:applib-cm:methods.adoc#autoComplete[`autoComplete...()`] supporting method.
-
-
-For example:
-
-[source,java]
-----
-public ToDoItem add(
- final ToDoItem toDoItem) {
- getDependencies().add(toDoItem);
- return this;
-}
-public List<ToDoItem> autoComplete0Add(
- final @MinLength(2)
- String search) {
- final List<ToDoItem> list = toDoItems.autoComplete(search);
- list.removeAll(getDependencies());
- list.remove(this);
- return list;
-}
-----
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Mixin.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Mixin.adoc
deleted file mode 100644
index c0ac24e..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Mixin.adoc
+++ /dev/null
@@ -1,38 +0,0 @@
-= `@Mixin`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@Mixin` annotation indicates that the class acts as a mixin, contributing behaviour - actions, (derived) properties and (derived) collections - to another domain object.
-
-Mixins were originally introduced as a means of allowing contributions from one module to the types of another module; in such cases the mixin type is often an interface type (eg `DocumentHolder`) that might be implemented by numerous different concrete types.
-However, mixins are also a convenient mechanism for grouping functionality even for a concrete type.
-
-For further discussion on using mixins, see xref:userguide:fun:building-blocks.adoc#mixins[mixins] in the user guide.
-
-The table below summarizes the annotation's attributes.
-
-.`@Mixin` attributes
-[cols="2,2,4a", options="header"]
-|===
-
-
-| Attribute
-| Values (default)
-| Description
-
-
-|xref:refguide:applib-ant:Mixin.adoc#method[`method()`]
-|Method name within the mixin
-|How to recognize the "reserved" method name, meaning that the mixin's own name will be inferred from the mixin type.
-Typical examples are "exec", "execute", "invoke", "apply" and so on.
-The default "reserved" method name is `$$`.
-
-|===
-
-An alternative and equivalent approach is to use the
-xref:refguide:applib-ant:DomainObject.adoc#nature[`@DomainObject#nature()`] annotation with a nature of `MIXIN`.
-
-
-include::Mixin/method.adoc[leveloffset=+1]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Mixin/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Mixin/_attributes.adoc
deleted file mode 100644
index d011536..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Mixin/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ../..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Mixin/method.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Mixin/method.adoc
deleted file mode 100644
index ed6ca3f..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Mixin/method.adoc
+++ /dev/null
@@ -1,41 +0,0 @@
-[[method]]
-= `method()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `method()` attribute specifies the name of the method to be treated as a "reserved" method name, meaning that the mixin's name should instead be inferred from the mixin's type.
-
-For example:
-
-[source,java]
-----
-@DomainObject
-public class Customer {
-
- @Mixin(method="execute")
- public static class placeOrder {
-
- Customer customer;
- public placeOrder(Customer customer) { this.customer = customer; }
-
- public Customer execute(Product p, int quantity) { /* ... */ }
- public String disableExecute() { /* ... */ }
- public String validate0Execute() { /* ... */ }
- }
- ...
-)
-----
-
-This allows all mixins to follow a similar convention, with the name of the mixin inferred entirely from its type ("placeOrder").
-
-When invoked programmatically, the code reads:
-
-[source,java]
-----
-mixin(Customer.placeOrder.class, someCustomer).execute(someProduct, 3);
-----
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/NotPersistent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/NotPersistent.adoc
deleted file mode 100644
index fe30c9a..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/NotPersistent.adoc
+++ /dev/null
@@ -1,16 +0,0 @@
-= `@NotPersistent` (`javax.jdo`)
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-The `@javax.jdo.annotation.NotPersistent` annotation is used by JDO/DataNucleus to indicate that a property should not be persisted to the database.
-
-Apache Isis also uses this annotation, though (currently) only in the very minimal way to suppress checking of inconsistent metadata between JDO and Isis annotations (eg `@Column#allowsNull()` vs `@Property#optionality()`, or `@Column#length()` and `@Property#maxLength()`).
-
-[NOTE]
-====
-Isis parses the `@NotPersistent` annotation from the Java source code; it does not query the JDO metamodel. This means that it the `@NotPersistent` annotation must be used rather than the equivalent `<field>` link:http://www.datanucleus.org/products/accessplatform_4_0/jdo/fields_properties.html[XML metadata].
-
-Moreover, while JDO/DataNucleus will recognize annotations on either the field or the getter method, Apache Isis (currently) only inspects the getter method. Therefore ensure that the annotation is placed there.
-====
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Nullable.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Nullable.adoc
deleted file mode 100644
index 6894e15..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Nullable.adoc
+++ /dev/null
@@ -1,52 +0,0 @@
-= `@Nullable` (`javax`)
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-Apache Isis' defaults for properties and parameters is that they are mandatory unless otherwise stated. The
-`@javax.annotation.Nullable` annotation is recognized by Apache Isis for both properties and
-parameters as means to indicate that the property/parameter is not mandatory.
-
-
-For example:
-
-[source,java]
-----
-@javax.annotation.Nullable
-public String getName() {
- return name;
-}
-public void setName(final String name) {
- this.name = name;
-}
-----
-
-or:
-
-[source,java]
-----
-public Customer updateName(@javax.annotation.Nullable final String name) {
- setName(name);
- return this;
-}
-----
-
-Apache Isis does provide several other ways to specify optionality: using the
-xref:refguide:applib-ant:Property.adoc#optionality[`@Property#optionality()`] /
-xref:refguide:applib-ant:Parameter.adoc#optionality[`@Parameter#optionality()`] annotation. For properties, the optionality
-can also be inferred from the xref:refguide:applib-ant:Column#allowsNull.adoc[`@Column#allowsNull()`] attribute.
-
-[TIP]
-====
-See the
-xref:refguide:applib-ant:Property.adoc#optionality[`@Property#optionality()`] documentation for a much fuller discussion on
-the relationship between using the Apache Isis annotations vs
-xref:refguide:applib-ant:Column#allowsNull.adoc[`@Column#allowsNull()`].
-====
-
-If more than one method is specified then the framework will validate that there are no incompatibilities (and fail to
-boot otherwise). This can also be verified using the xref:refguide:mvn:validate.adoc[validate goal] of the Apache
-Isis Maven plugin.
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter.adoc
deleted file mode 100644
index 79cdf8b..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter.adoc
+++ /dev/null
@@ -1,98 +0,0 @@
-= `@Parameter`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-The `@Parameter` annotation applies to action parameters collecting together all domain semantics within a single annotation.
-
-The table below summarizes the annotation's attributes.
-
-.`@Paramter` attributes
-[cols="2,2,4a", options="header"]
-|===
-
-| Attribute
-| Values (default)
-| Description
-
-
-|xref:refguide:applib-ant:Parameter.adoc#fileAccept[`fileAccept()`]
-|Media type or file extension
-|Hints the file type to be uploaded for xref:refguide:applib-cm:classes/value-types.adoc#Blob[`Blob`]
- or xref:refguide:applib-cm:classes/value-types.adoc#Clob[`Clob`]. +
- +
- Note that this does not prevent the user from uploading some other file type; rather it merely defaults the file type in the file open dialog.
-
-
-
-|xref:refguide:applib-ant:Parameter.adoc#maxLength[`maxLength()`]
-|Positive integer
-|maximum number of characters for string parameters; ignored otherwise
-
-
-
-|xref:refguide:applib-ant:Parameter.adoc#mustSatisfy[`mustSatisfy()`]
-|implementation of `o.a.i.applib.spec.Specification`
-|allows arbitrary validation to be applied
-
-
-|xref:refguide:applib-ant:Parameter.adoc#optionality[`optionality()`]
-|`MANDATORY`, `OPTIONAL` (`MANDATORY`)
-|specifies a parameter is optional rather than mandatory
-
-
-|xref:refguide:applib-ant:Parameter.adoc#regexPattern[regexPattern()]
-|regular expression
-|validates the contents of a string parameter against the regular expression pattern
-
-
-|`regexPatternFlags()`
-|value of flags as normally passed to `java.util.regex.` +
-`Pattern#compile(...)`
-|modifies the compilation of the regular expression
-
-
-|`regexPatternReplacement()`
-|
-|Unused.
-
-
-|===
-
-
-
-
-For example:
-
-[source,java]
-----
-public class Customer {
- public static class EmailSpecification extends AbstractSpecification<String> {
- public String satisfiesSafely(String proposed) {
- return EmailUtil.ensureValidEmail(proposed); // <1>
- }
- }
- @Action(semantics=SemanticsOf.IDEMPOTENT)
- public Customer updateEmail(
- @Parameter(
- maxLength=30,
- mustSatisfy=EmailSpecification.class,
- optionality=Optionality.OPTIONAL,
- regexPattern = "(\\w+\\.)*\\w+@(\\w+\\.)+[A-Za-z]+",
- regexPatternFlags=Pattern.CASE_INSENSITIVE
- )
- @ParameterLayout(named="New Email Address")
- final String newEmailAddress
- ...
- }
-}
-----
-<1> the (fictitious) `EmailUtil.ensureValid(...)` (omitted for brevity) returns a string explaining if an email is invalid
-
-
-
-include:Parameter/fileAccept.adoc[leveloffset=+1]
-include:Parameter/maxLength.adoc[leveloffset=+1]
-include:Parameter/mustSatisfy.adoc[leveloffset=+1]
-include:Parameter/optionality.adoc[leveloffset=+1]
-include:Parameter/regexPattern.adoc[leveloffset=+1]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/_attributes.adoc
deleted file mode 100644
index d011536..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ../..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/fileAccept.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/fileAccept.adoc
deleted file mode 100644
index 0e56034..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/fileAccept.adoc
+++ /dev/null
@@ -1,37 +0,0 @@
-[[fileAccept]]
-= `fileAccept()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `fileAccept()` attribute applies only to xref:refguide:applib-cm:classes/value-types.adoc#Blob[`Blob`]
-or xref:refguide:applib-cm:classes/value-types.adoc#Clob[`Clob`] parameters, indicating the type of file to accept when
-uploading a new value. The attribute is also supported on xref:refguide:applib-ant:Property.adoc#fileAccept[properties].
-
-For example:
-
-[source,java]
-----
-public class Scanner {
- public ScannedDocument newScan(
- @Parameter(fileAccept="image/*") // <1>
- @ParameterLayout(named="Scanned image") // <2>
- final Blob scannedImage) {
- ...
- }
-}
-----
-<1> as per link:http://www.w3schools.com/tags/att_input_accept.asp[reference docs], either a media type (such as
-`image/*`) or a file type extension (such as `.png`).
-<2> the `@ParameterLayout(named=...)` attribute is required for Java 7; for Java 8 it can be omitted if the
-(non-ASF) link:https://platform.incode.org[Incode Platform^]'s paraname8 metamodel extension is used.
-
-
-
-
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/maxLength.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/maxLength.adoc
deleted file mode 100644
index 716ba27..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/maxLength.adoc
+++ /dev/null
@@ -1,35 +0,0 @@
-[[maxLength]]
-= `maxLength()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `maxLength()` attribute applies only to `String` parameters, indicating the maximum number of characters that the user may enter (for example in a text field in the UI). It is ignored if applied to parameters of any other type.
-
-
-For example:
-
-[source,java]
-----
-public class CustomerRepository {
- public Customer newCustomer(
- @Parameter(maxLength=30)
- @ParameterLayout(named="First Name") // <1>
- final String firstName,
- @Parameter(maxLength=50)
- @ParameterLayout(named="Last Name")
- final String lastName) {
- ...
- }
-}
-----
-<1> the `@ParameterLayout(named=...)` attribute is required for Java 7; for Java 8 it can be omitted if the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s paraname8 metamodel extension is used.
-
-
-
-
-== See also
-
-This attribute can also be applied to xref:refguide:applib-ant:Property.adoc#maxLength[properties].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/mustSatisfy.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/mustSatisfy.adoc
deleted file mode 100644
index 6df46cf..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/mustSatisfy.adoc
+++ /dev/null
@@ -1,65 +0,0 @@
-[[mustSatisfy]]
-= `mustSatisfy()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `mustSatisfy()` attribute allows arbitrary validation to be applied to parameters using an (implementation of a) `org.apache.isis.applib.spec.Specification` object. The attribute is also supported on xref:refguide:applib-ant:Property.adoc#mustSatisfy[properties].
-
-[TIP]
-====
-The specification implementations can (of course) be reused between parameters and xref:refguide:applib-ant:Property.adoc#mustSatisfy[properties].
-====
-
-The `Specification` is consulted during validation, being passed the proposed value. If the proposed value fails, then the value returned is the used as the invalidity reason.
-
-For example:
-
-[source,java]
-----
-public class StartWithCapitalLetterSpecification
- extends AbstractSpecification<String> { // <1>
- public String satisfiesSafely(String proposed) {
- return "".equals(proposed)
- ? "Empty string"
- : !Character.isUpperCase(proposed.charAt(0))
- ? "Does not start with a capital letter"
- : null;
- }
-}
-public class CustomerRepository {
- public Customer newCustomer(
- @Parameter(
- mustSatisfy=StartWithCapitalLetterSpecification.class
- )
- @ParameterLayout(named="First Name")
- final String firstName,
- @Parameter(
- mustSatisfy=StartWithCapitalLetterSpecification.class
- )
- @ParameterLayout(named="Last Name")
- final String lastName) {
- ...
- }
- ...
-}
-----
-<1> the `AbstractSpecification` class conveniently handles type-safety and dealing with null values. The applib also provides `SpecificationAnd` and `SpecificationOr` to allow specifications to be combined "algebraically".
-
-
-It is also possible to provide translatable reasons. Rather than implement `Specification`, instead implement `Specification2` which defines the API:
-
-[source,java]
-----
-public interface Specification2 extends Specification {
- public TranslatableString satisfiesTranslatable(Object obj); // <1>
-}
-----
-<1> Return `null` if specification satisfied, otherwise the reason as a translatable string
-
-With `Specification2` there is no need to implement the inherited `satifies(Object)`; that method will never be called.
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/optionality.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/optionality.adoc
deleted file mode 100644
index b199c9d..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/optionality.adoc
+++ /dev/null
@@ -1,42 +0,0 @@
-[[optionality]]
-= `optionality()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-
-By default, Apache Isis assumes that all parameters of an action are required (mandatory). The `optionality()` attribute allows this to be relaxed. The attribute is also supported for xref:refguide:applib-ant:Property.adoc#optionality[properties].
-
-
-[TIP]
-====
-The attribute has no meaning for a primitive type such as `int`: primitives will always have a default value (e.g. zero). If optionality is required, then use the corresponding wrapper class (e.g. `java.lang.Integer`) and annotate with `Parameter#optionality()` as required.
-====
-
-The values for the attribute are simply `OPTIONAL` or `MANDATORY`.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- public Order placeOrder(
- final Product product,
- @ParameterLayout(named = "Quantity")
- final int quantity,
- @Parameter(optionality = Optionality.OPTIONAL)
- @ParameterLayout(named = "Special Instructions")
- final String instr) {
- ...
- }
- ...
-}
-----
-
-
-[NOTE]
-====
-It is also possible to specify optionality using xref:refguide:applib-ant:Nullable.adoc[`@Nullable`] annotation.
-====
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/regexPattern.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/regexPattern.adoc
deleted file mode 100644
index 7f55282..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Parameter/regexPattern.adoc
+++ /dev/null
@@ -1,42 +0,0 @@
-[[regexPattern]]
-= `regexPattern()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-There are three attributes related to enforcing regular expressions:
-
-* The `regexPattern()` attribute validates the contents of any string parameter with respect to a regular expression pattern. It is ignored if applied to parameters of any other type.
-
-* The `regexPatternFlags()` attribute specifies flags that modify the handling of the pattern. The values are those
-that would normally be passed to `java.util.regex.Pattern#compile(String,int)`.
-
-* The related `regexPatternReplacement()` attribute specifies the error message to show if
-the provided argument does not match the regex pattern.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- public void updateEmail(
- @Parameter(
- regexPattern = "(\\w+\\.)*\\w+@(\\w+\\.)+[A-Za-z]+",
- regexPatternFlags = Pattern.CASE_INSENSITIVE,
- regexPatternReplacement = "Must be valid email address (containing a '@') symbol" // <1>
- )
- @ParameterLayout(named = "Email")
- final String email) {
- ...
- }
-)
-----
-<1> Note that there is currently no i18n support for this phrase.
-
-
-
-== See also
-
-This attribute can also be specified for xref:refguide:applib-ant:Property.adoc#regexPattern[properties].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout.adoc
deleted file mode 100644
index 532ad2c..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout.adoc
+++ /dev/null
@@ -1,117 +0,0 @@
-= `@ParameterLayout`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@ParameterLayout` annotation applies to action parameters, collecting together all UI hints within a single annotation.
-
-The table below summarizes the annotation's attributes.
-
-.`@ParameterLayout` attributes
-[cols="2,2,4a", options="header"]
-|===
-
-| Attribute
-| Values (default)
-| Description
-
-
-|xref:refguide:applib-ant:ParameterLayout.adoc#cssClass[`cssClass()`]
-|Any string valid as a CSS class
-|the css class that a parameter should have, to allow more targetted styling in xref:refguide:config:application-specific/application-css.adoc[`application.css`]
-
-
-|xref:refguide:applib-ant:ParameterLayout.adoc#describedAs[`describedAs()`]
-|String
-|description of this parameter, eg to be rendered in a tooltip.
-
-
-|xref:refguide:applib-ant:ParameterLayout.adoc#labelPosition[`labelPosition()`]
-|`LEFT`, `TOP`, `RIGHT`, `NONE` +
-(`LEFT`)
-|in forms, the positioning of the label relative to the property value. +
-
-Default is `LEFT`, unless xref:refguide:applib-ant:ParameterLayout.adoc#multiLine[`multiLine`] in which case `TOP`.
-The value `RIGHT` is only supported for boolean parameters.
-
-
-|xref:refguide:applib-ant:ParameterLayout.adoc#multiLine[`multiLine()`]
-|Positive integer
-|for string parameters, render as a text area over multiple lines. +
-
-If set > 1, then then xref:refguide:applib-ant:ParameterLayout.adoc#labelPosition[`labelPosition`] defaults to `TOP`.
-
-
-|xref:refguide:applib-ant:ParameterLayout.adoc#named[`named()`]
-|String
-|the name of this parameter.
-
-[TIP]
-====
-There's no need to name the action parameters if the code is compiled using the `-parameters` flag to the Java compiler (javac); the framework will then use the name of the parameter itself.
-
-The only reason then to name the parameter is if the desired name is a reserved Java keyword, such as `default` or `package`.
-====
-
-
-
-|`namedEscaped()`
-|`true`, `false` (`true`)
-|whether to HTML escape the name of this parameter.
-
-
-|xref:refguide:applib-ant:ParameterLayout.adoc#renderedAsDayBefore[`renderedAsDayBefore()`]
-|
-|for date parameters only, render the date as one day prior to the actually stored date (eg the end date of an open interval into a closed interval)
-
-
-|xref:refguide:applib-ant:ParameterLayout.adoc#typicalLength[`typicalLength()`]
-|
-|the typical entry length of a field, use to determine the optimum width for display
-
-|===
-
-
-
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- public ToDoItem updateDescription(
- @ParameterLayout(
- cssClass="x-key",
- describedAs="What needs to be done",
- labelPosition=LabelPosition.LEFT,
- named="Description of this <i>item</i>",
- namedEscaped=false,
- typicalLength=80)
- final String description) {
- setDescription(description);
- return this;
- }
- ...
-}
-----
-
-
-
-[NOTE]
-====
-Note that there is (currently) no support for specifying UI hints for domain services through the dynamic xref:vw:ROOT:layout/file-based.adoc[`.layout.xml`] file (only for properties, collections and actions are supported).
-====
-
-
-
-
-
-include::ParameterLayout/cssClass.adoc[leveloffset=+1]
-include::ParameterLayout/describedAs.adoc[leveloffset=+1]
-include::ParameterLayout/labelPosition.adoc[leveloffset=+1]
-include::ParameterLayout/multiLine.adoc[leveloffset=+1]
-include::ParameterLayout/named.adoc[leveloffset=+1]
-include::ParameterLayout/renderedAsDayBefore.adoc[leveloffset=+1]
-include::ParameterLayout/typicalLength.adoc[leveloffset=+1]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/_attributes.adoc
deleted file mode 100644
index d011536..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ../..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/cssClass.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/cssClass.adoc
deleted file mode 100644
index 3744c66..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/cssClass.adoc
+++ /dev/null
@@ -1,40 +0,0 @@
-[[cssClass]]
-= `cssClass()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-
-The `cssClass()` attribute can be used to render additional CSS classes in the HTML (a wrapping `<div>`) that represents the action parameter. xref:refguide:config:application-specific/application-css.adoc[Application-specific CSS] can then be used to target and adjust the UI representation of that particular element.
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- public ToDoItem postpone(
- @ParameterLayout(
- named="until",
- cssClass="x-key"
- )
- LocalDate until
- ) { /* ... */ }
- ...
-}
-----
-
-
-== See also
-
-
-This attribute can also be applied to:
-
-* xref:refguide:applib-ant:DomainObjectLayout.adoc#cssClass[domain objects]
-* xref:refguide:applib-ant:ViewModelLayout.adoc#cssClass[view models]
-* xref:refguide:applib-ant:ActionLayout.adoc#cssClass[actions]
-* xref:refguide:applib-ant:PropertyLayout.adoc#cssClass[properties],
-* xref:refguide:applib-ant:CollectionLayout.adoc#cssClass[collections]
-* xref:refguide:applib-ant:ParameterLayout.adoc#cssClass[parameters].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/describedAs.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/describedAs.adoc
deleted file mode 100644
index 857cadf..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/describedAs.adoc
+++ /dev/null
@@ -1,32 +0,0 @@
-[[describedAs]]
-= `describedAs()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `describedAs()` attribute is used to provide a short description of the action parameter to the user. In the xref:vw:ROOT:about.adoc[Wicket viewer] it is displayed as a 'tool tip'. The `describedAs()` attribute can also be specified for xref:refguide:applib-ant:CollectionLayout.adoc#describedAs[collections], xref:refguide:applib-ant:PropertyLayout.adoc#describedAs[properties], xref:refguide:applib-ant:ActionLayout.adoc#describedAs[actions], xref:refguide:applib-ant:DomainObjectLay [...]
-
-Descriptions may be provided for objects, members (properties, collections and actions), and for individual parameters within an action method.
-
-To provide a description for an individual action parameter, use the `describedAs` attribute in-line i.e. immediately before the parameter declaration.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- public Order placeOrder(
- Product product,
- @ParameterLayout(
- named="Quantity",
- describedAs="The quantity of the product being ordered"
- )
- int quantity) {
- ...
- }
- ...
-}
-----
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/labelPosition.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/labelPosition.adoc
deleted file mode 100644
index 8e241cd..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/labelPosition.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-[[labelPosition]]
-= `labelPosition()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `labelPosition()` attribute determines the positioning of labels for parameters.
-
-The positioning of labels is typically `LEFT`, but can be positioned to the `TOP`. The one exception is xref:refguide:applib-ant:ParameterLayout.adoc#multiLine[`multiLine()`] string parameters, where the label defaults to `TOP` automatically (to provide as much real-estate for the multiline text field as possible).
-
-For boolean parameters a positioning of `RIGHT` is also allowed; this is ignored for all other types.
-
-It is also possible to suppress the label altogether, using `NONE`.
-
-For example:
-
-[source,java]
-----
-public class Order {
- public Order changeStatus(
- OrderStatus newStatus
- @Parameter(
- optionality=Optionality.OPTIONAL
- )
- @ParameterLayout(
- named="Reason",
- labelPosition=LabelPosition.TOP
- )
- String reason) {
- ...
- }
- ...
-}
-----
-
-
-To get an idea of how these are rendered (in the xref:vw:ROOT:about.adoc[Wicket viewer]), see xref:refguide:applib-ant:PropertyLayout.adoc#labelPosition[PropertyLayout#labelPosition()].
-
-
-== See also
-
-This attribute can also be specified for xref:refguide:applib-ant:PropertyLayout.adoc#labelPosition[properties].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/multiLine.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/multiLine.adoc
deleted file mode 100644
index 5b8c4af..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/multiLine.adoc
+++ /dev/null
@@ -1,32 +0,0 @@
-[[multiLine]]
-= `multiLine()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `multiLine()` attribute specifies that the text field for a string parameter should span multiple lines. It is ignored for other parameter types. The attribute is also supported for xref:refguide:applib-ant:PropertyLayout.adoc#multiLine[properties].
-
-For example:
-
-[source,java]
-----
-public class BugReport {
- public BugReport updateStepsToReproduce(
- @Parameter(named="Steps")
- @ParameterLayout(
- numberOfLines=10
- )
- final String steps) {
- ...
- }
- ...
-}
-----
-
-[NOTE]
-====
-If set > 1 (as would normally be the case), then the default xref:refguide:applib-ant:ParameterLayout.adoc#labelPosition[`labelPosition`] defaults to `TOP` (rather than `LEFT`, as would normally be the case).
-====
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/named.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/named.adoc
deleted file mode 100644
index 6bb2eff..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/named.adoc
+++ /dev/null
@@ -1,60 +0,0 @@
-[[named]]
-= `named()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `named()` attribute explicitly specifies the action parameter's name.
-
-Unlike most other aspects of the Apache Isis metamodel, the name of method parameters cannot (prior to Java 8, at least) be inferred from the Java source code.
-Without other information, Apache Isis uses the object's type (`int`, `String` etc) as the name instead.
-This can be sufficient for application-specific reference types (eg `ToDoItem`) but is generally not sufficient for primitives and other value types.
-The `named()` attribute is therefore often required to specify the parameter name.
-
-As of Java 8, the Java reflection API has been extended.
-The (non-ASF) link:https://platform.incode.org[Incode Platform^]'s paraname8 metamodel extension provides support for this.
-Note that your application must (obviously) be running on Java 8, and be compiled with the `-parameters` compile flag for javac.
-
-
-
-By default the name is HTML escaped.
-To allow HTML markup, set the related `namedEscaped()` attribute to `false`.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- public Order placeOrder(
- final Product product
- ,@ParameterLayout(named="Quantity")
- final int quantity) {
- Order order = newTransientInstance(Order.class);
- order.modifyCustomer(this);
- order.modifyProduct(product);
- order.setQuantity(quantity);
- return order;
- }
- ...
-}
-----
-
-
-[TIP]
-====
-The framework also provides a separate, powerful mechanism for xref:userguide:btb:i18n.adoc[internationalization].
-====
-
-== See also
-
-This attribute can also be specified for:
-
-* xref:refguide:applib-ant:ActionLayout.adoc#named[actions]
-* xref:refguide:applib-ant:CollectionLayout.adoc#named[collections]
-* xref:refguide:applib-ant:PropertyLayout.adoc#named[properties]
-* xref:refguide:applib-ant:DomainObjectLayout.adoc#named[domain objects]
-* xref:refguide:applib-ant:ViewModelLayout.adoc#named[view models]
-* xref:refguide:applib-ant:DomainServiceLayout.adoc#named[domain services].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/renderedAsDayBefore.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/renderedAsDayBefore.adoc
deleted file mode 100644
index 50d1dfa..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/renderedAsDayBefore.adoc
+++ /dev/null
@@ -1,42 +0,0 @@
-[[renderedAsDayBefore]]
-= `renderedAsDayBefore()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `renderedAsDayBefore()` attribute applies only to date parameters whereby the date will be rendered as the day before the value actually held in the domain object.
-It is ignored for parameters of other types.
-
-This behaviour might at first glance appear odd, but the rationale is to support the use case of a sequence of instances that represent adjacent intervals of time.
-In such cases there would typically be `startDate` and `endDate` properties, eg for all of Q2.
-Storing this as a half-closed interval -- eg `[1-Apr-2015, 1-July-2015)` -- can substantially simplify internal algorithms; the `endDate` of one interval will correspond to the `startDate` of the next.
-
-However, from an end-user perspective the requirement may be to render the interval as a fully closed interval; eg the end date should be shown as `30-Jun-2015`.
-
-This attribute therefore bridges the gap; it presents the information in a way that makes sense to an end-user, but also stores the domain object in a way that is easy work with internally.
-
-For example:
-
-[source,java]
-----
-public class Tenancy {
- public void changeDates(
- @ParameterLayout(named="Start Date")
- LocalDate startDate,
- @ParameterLayout(
- named="End Date",
- renderedAsDayBefore=true
- )
- LocalDate endDate) {
- ...
- }
-}
-----
-
-
-== See also
-
-This attribute is also supported for xref:refguide:applib-ant:PropertyLayout.adoc#renderedAsDayBefore[properties].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/typicalLength.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/typicalLength.adoc
deleted file mode 100644
index d5cf600..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/ParameterLayout/typicalLength.adoc
+++ /dev/null
@@ -1,39 +0,0 @@
-[[typicalLength]]
-= `typicalLength()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `typicalLength()` attribute indicates the typical length of a string parameter.
-It is ignored for parameters of other types.
-The attribute is also supported for xref:refguide:applib-ant:PropertyLayout.adoc#typicalLength[properties].
-
-The information is intended as a hint to the UI to determine the space that should be given to render a particular string parameter.
-That said, note that the xref:vw:ROOT:about.adoc[Wicket viewer] uses the maximum space available for all fields, so in effect ignores this attribute.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- public Customer updateName(
- @Parameter(maxLength=30)
- @ParameterLayout(
- named="First name",
- typicalLength=20
- )
- final String firstName,
- @Parameter(maxLength=30)
- @ParameterLayout(
- named="Last name",
- typicalLength=20
- )
- final String lastName) {
- ...
- }
- ...
-}
-----
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Pattern.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Pattern.adoc
deleted file mode 100644
index ce02580..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Pattern.adoc
+++ /dev/null
@@ -1,51 +0,0 @@
-= `@Pattern` (`javax`)
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@javax.validation.constraints.Pattern` annotation is recognized by Apache Isis as a means to specify a regular expression constraint for properties and action parameters of type `java.lang.String`.
-
-For example, here's the annotation being used on an action parameter:
-
-[source,java]
-----
-public Customer updateName(
- @javax.validation.constraints.Pattern(
- regexp="[A-Z].+"
- message="Must begin with a capital."
- )
- final String name) {
- setName(name);
- return this
-}
-...
-----
-
-and here's an example of its use on a property:
-
-[source,java]
-----
-@javax.validation.constraints.Pattern(
- regexp="[A-Z].+"
- message="Must begin with a capital."
-)
-public String getName() {
- return name;
-}
-...
-----
-
-
-For properties, it is also possible to specify against a field if Lombok is being used:
-
-[source,java]
-----
-@javax.validation.constraints.Pattern(
- regexp="[A-Z].+"
- message="Must begin with a capital."
-)
-@lombok.Getter @lombok.Setter
-private String name;
-----
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/PersistenceCapable.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/PersistenceCapable.adoc
deleted file mode 100644
index 7cebf56..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/PersistenceCapable.adoc
+++ /dev/null
@@ -1,102 +0,0 @@
-= `@PersistenceCapable` (`javax.jdo`)
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@javax.jdo.annotation.PersistenceCapable` is used by JDO/DataNucleus to indicate that a class is a domain entity to be persisted to the database.
-
-Apache Isis also checks for this annotation, and if the `@PersistenceCapable#schema()` attribute is present will use it to form the object type.
-
-[NOTE]
-====
-Isis parses the `@PersistenceCapable` annotation from the Java source code; it does not query the JDO metamodel. This means that it the `@PersistenceCapable` annotation must be used rather than the equivalent `<class>` link:http://www.datanucleus.org/products/accessplatform_4_0/jdo/class_mapping.html[XML metadata].
-
-Moreover, while JDO/DataNucleus will recognize annotations on either the field or the getter method, Apache Isis (currently) only inspects the getter method. Therefore ensure that the annotation is placed there.
-====
-
-
-This value is used internally to generate a string representation of an objects identity (the `Oid`).
-This can appear in several contexts, including:
-
-* as the value of `Bookmark#getObjectType()` and in the `toString()` value of `Bookmark`
- (see xref:refguide:applib-svc:integration-api/BookmarkService.adoc[`BookmarkService`])
- ** and thus in the "table-of-two-halves" pattern, as per the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s poly module
-* in the serialization of `OidDto` in the xref:refguide:schema:cmd[command] and xref:refguide:schema:about.adoc#ixn.adoc[interaction] schemas
-* in the URLs of the xref:vro:ROOT:about.adoc[RestfulObjects viewer]
-* in the URLs of the xref:vw:ROOT:about.adoc[Wicket viewer] (in general and in particular if xref:vw:ROOT:features/hints-and-copy-url.adoc[copying URLs])
-* in XML snapshots generated by the xref:refguide:applib-svc:integration-api/XmlSnapshotService.adoc[`XmlSnapshotService`]
-
-
-The actual format of the object type used by Apache Isis for the concatenation of `schema()` and `@PersistenceCapable#table()`.
-If the `table()` is not present, then the class' simple name is used instead.
-
-
-== Examples
-
-For example:
-
-[source,java]
-----
-@javax.jdo.annotations.PersistenceCapable(schema="custmgmt")
-public class Customer {
- ...
-}
-----
-
-has an object type of `custmgmt.Customer`, while:
-
-[source,java]
-----
-@javax.jdo.annotations.PersistenceCapable(schema="custmgmt", table="Address")
-public class AddressImpl {
- ...
-}
-----
-
-has an object type of `custmgmt.Address`.
-
-
-On the other hand:
-
-[source,java]
-----
-@javax.jdo.annotations.PersistenceCapable(table="Address")
-public class AddressImpl {
- ...
-}
-----
-
-does _not_ correspond to an object type, because the `schema()` attribute is missing.
-
-
-
-== Precedence
-
-The rules of precedence for determining a domain object's object type are:
-
-1. xref:refguide:applib-ant:Discriminator.adoc[`@Discriminator`]
-2. `@DomainObject#objectType`
-3. xref:refguide:applib-ant:PersistenceCapable.adoc[`@PersistenceCapable`], if at least the `schema` attribute is defined. +
-+
-If both `schema` and `table` are defined, then the value is "`schema.table`".
-If only `schema` is defined, then the value is "`schema.className`".
-
-4. Fully qualified class name of the entity.
-
-
-[TIP]
-====
-This might be obvious, but to make explicit: we recommend that you always specify an object type for your domain objects.
-
-Otherwise, if you refactor your code (change class name or move package), then any externally held references to the OID of the object will break.
-At best this will require a data migration in the database; at worst it could cause external clients accessing data through the xref:vro:ROOT:about.adoc[Restful Objects] viewer to break.
-====
-
-
-
-
-[NOTE]
-====
-If the object type is not unique across all domain classes then the framework will fail-fast and fail to boot. An error message will be printed in the log to help you determine which classes have duplicate object tyoes.
-====
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/PostConstruct.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/PostConstruct.adoc
deleted file mode 100644
index 7bee46b..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/PostConstruct.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-= `@PostConstruct` (`javax`)
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-The `@javax.annotation.PostConstruct` annotation, as defined in link:https://jcp.org/en/jsr/detail?id=250[JSR-250], is recognized by Apache Isis as a callback method on domain services to be called just after they have been constructed, in order that they initialize themselves.
-
-It is also recognized for xref:userguide:fun:building-blocks.adoc#view-models[view models] (eg annotated with xref:refguide:applib-ant:ViewModel.adoc[`@ViewModel`]).
-
-For the default application-scoped (singleton) domain services, this means that the method, if present, is called during the bootstrapping of the application. For xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`] domain services, the method is called at the beginning of the request.
-
-The signature of the method is:
-
-[source,java]
-----
-@PostConstruct <1>
-public void init() { /* ... */ } <2>
-----
-<1> It is not necessary to annotate the method with xref:refguide:applib-ant:Programmatic.adoc[`@Programmatic`]; it will be automatically excluded from the Apache Isis metamodel.
-<2> the method can have any name, but must have `public` visibility.
-
-In the form shown above the method accepts no arguments.
-Alternatively - for domain services only, not view models - the method can accept a parameter of type `Map<String,String>`:
-
-[source,java]
-----
-@PostConstruct
-@Programmatic
-public void init(Map<String,String> properties) { /* ... */ }
-----
-Apache Isis uses argument to pass in the configuration properties read from all xref:refguide:config:configuration-files.adoc[configuration files]:
-
-[TIP]
-====
-Alternatively, you could inject xref:refguide:applib-svc:core-domain-api/ConfigurationService.adoc[`ConfigurationService`] into the service and read configuration properties using `ConfigurationService#getProperty(...)` and related methods.
-However, be aware when using this latter API that only those configuration properties keys with an `application.` prefix are provided.
-====
-
-Use cases include obtaining connections to external datasources, eg subscribing to an ActiveMQ router, say, or initializing/cleaning up a background scheduler such as Quartz.
-
-
-
-
-
-See also xref:refguide:applib-ant:PreDestroy.adoc[`@PreDestroy`]
\ No newline at end of file
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/PreDestroy.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/PreDestroy.adoc
deleted file mode 100644
index 60a2897..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/PreDestroy.adoc
+++ /dev/null
@@ -1,51 +0,0 @@
-= `@PreDestroy` (`javax`)
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@javax.annotation.PreDestroy` annotation, as defined in link:https://jcp.org/en/jsr/detail?id=250[JSR-250], recognized by Apache Isis as a callback method on domain services to be called just as they go out of scope.
-
-
-For the default application-scoped (singleton) domain services, this means that the method, if present, is called just prior to the termination of the application. For xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`] domain services, the method is called at the end of the request.
-
-The signature of the method is:
-
-[source,java]
-----
-@PreDestroy <1>
-public void deinit() { /* ... */ } <2>
-----
-<1> It is not necessary to annotate the method with xref:refguide:applib-ant:Programmatic.adoc[`@Programmatic`]; it will be automatically excluded from the Apache Isis metamodel.
-<2> the method can have any name, but must have `public` visibility, and accept no arguments.
-
-A common use case is for domain services that interact with the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`]. For example:
-
-[source,java]
-----
-@DomainService(nature=NatureOfService.DOMAIN)
-public class MySubscribingService {
- @PostConstruct
- public void init() {
- eventBusService.register(this);
- }
- @PreDestroy
- public void deinit() {
- eventBusService.unregister(this);
- }
- ...
- @javax.inject.Inject
- EventBusService eventBusService;
-}
-----
-
-[TIP]
-====
-In this particular use case, it is generally simpler to just subclass from xref:refguide:applib-cm:classes/super.adoc#AbstractSubscriber[`AbstractSubscriber`].
-====
-
-Other use cases include obtaining connections to external datasources, eg subscribing to an ActiveMQ router, say, or initializing/cleaning up a background scheduler such as Quartz.
-
-
-
-See also xref:refguide:applib-ant:PostConstruct.adoc[`@PostConstruct`]
\ No newline at end of file
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/PrimaryKey.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/PrimaryKey.adoc
deleted file mode 100644
index 32d3ea1..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/PrimaryKey.adoc
+++ /dev/null
@@ -1,19 +0,0 @@
-= `@PrimaryKey` (`javax.jdo`)
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-
-The `@javax.jdo.annotation.PrimaryKey` annotation is used by JDO/DataNucleus to indicate that a property is used as the primary key for an entity with application-managed identity.
-
-Apache Isis also uses this annotation in a very minimal way: to ensure that the framework's own logic to initialize newly instantiated objects (eg using xref:refguide:applib-svc:core-domain-api/FactoryService.adoc[`FactoryService#instantiate(...)`] does not touch the primary key, and also to ensure that the primary key property is always disabled (read-only).
-
-[NOTE]
-====
-Apache Isis parses the `@NotPersistent` annotation from the Java source code; it does not query the JDO metamodel.
-This means that it the `@NotPersistent` annotation must be used rather than the equivalent `<field>` link:http://www.datanucleus.org/products/accessplatform_4_0/jdo/application_identity.html[XML metadata].
-
-Moreover, while JDO/DataNucleus will recognize annotations on either the field or the getter method, Apache Isis (currently) only inspects the getter method.
-Therefore ensure that the annotation is placed there.
-====
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Programmatic.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Programmatic.adoc
deleted file mode 100644
index 87cb5dd..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Programmatic.adoc
+++ /dev/null
@@ -1,25 +0,0 @@
-= `@Programmatic`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-The `@Programmatic` annotation causes the method to be excluded completely from the Apache Isis metamodel. This means it won't appear in any UI, and it won't appear in any xref:refguide:applib-svc:integration-api/MementoService.adoc[memento]s or xref:refguide:applib-svc:integration-api/XmlSnapshotService.adoc[snapshot]s.
-
-A common use-case is to ignore implementation-level artifacts. For example:
-
-[source,java]
-----
-public class Customer implements Comparable<Customer> {
- ...
- @Programmatic
- public int compareTo(Customer c) {
- return getSalary() - c.getSalary();
- }
- ...
-}
-----
-
-
-Note that `@Programmatic` is not the same as `@Action(hidden=Where.EVERYWHERE)` or `@Property(hidden=Where.EVERYWHERE)` etc; it actually means that the class member will not be part of the Apache Isis metamodel.
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Property.adoc
deleted file mode 100644
index ba1e0bd..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property.adoc
+++ /dev/null
@@ -1,183 +0,0 @@
-= `@Property`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-
-
-The `@Property` annotation applies to properties collecting together all domain semantics within a single annotation.
-
-It is also possible to apply the annotation to actions of domain services that are acting as contributed properties.
-
-
-
-.`@Property` attributes
-[cols="2,2,4a", options="header"]
-|===
-
-| Attribute
-| Values (default)
-| Description
-
-
-|xref:refguide:applib-ant:Property.adoc#command[`command()`]
-|`AS_CONFIGURED`, `ENABLED`, `DISABLED` +
-(`AS_CONFIGURED`)
-|whether the property edit should be reified into a `o.a.i.applib.` +
-`services.command.Command` object through the xref:refguide:applib-svc:application-layer-api/CommandContext.adoc[`CommandContext`] service.
-
-
-|`commandExecuteIn()`
-|`FOREGROUND`,`BACKGROUND` +
-(`FOREGROUND`)
-|whether to execute the command immediately, or to persist it (assuming that an appropriate implementation of xref:refguide:applib-svc:application-layer-spi/CommandService.adoc[`CommandService`] has been configured) such that a background scheduler can execute the command asynchronously
-
-
-|`commandPersistence()`
-|`PERSISTED`, `NOT_PERSISTED`, `IF_HINTED` +
-(`PERSISTED`)
-|whether the reified `Command` (as provided by the `CommandContext` domain service) should actually be persisted (assuming an appropriate implementation of xref:refguide:applib-svc:application-layer-spi/CommandService.adoc[`CommandService`] has been configured).
-
-
-
-|`commandDtoProcessor()`
-|Implementation of `CommandDtoProcessor` interface +
-(null)
-|If the `Command` also implements `CommandWithDto` (meaning that it can return a `CommandDto`, in other words be converted into an XML memento), then optionally specifies a processor that can refine this XML.
-
-
-
-|xref:refguide:applib-ant:Property.adoc#domainEvent[`domainEvent()`]
-|subtype of `PropertyDomainEvent` +
-(`PropertyDomainEvent.Default`)
-|the event type to be posted to the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] to broadcast the property's business rule checking (hide, disable, validate) and its modification (before and after).
-
-
-|xref:refguide:applib-ant:Property.adoc#editing[`editing()`]
-|`ENABLED`, `DISABLED`, `AS_CONFIGURED` +
-(`AS_CONFIGURED`)
-|whether a property can be modified or cleared from within the UI
-
-
-|xref:refguide:applib-ant:Property.adoc#fileAccept[`fileAccept()`]
-|Media type or file extension
-|Hints the files to be uploaded to a xref:refguide:applib-cm:classes/value-types.adoc#Blob[`Blob`]
- or xref:refguide:applib-cm:classes/value-types.adoc#Clob[`Clob`]. +
- +
-Note that this does not prevent the user from uploading some other file type; rather it merely defaults the file type in the file open dialog.
-
-
-|xref:refguide:applib-ant:Property.adoc#hidden[`hidden()`]
-|`EVERYWHERE`, `OBJECT_FORMS`, `PARENTED_TABLES`, `STANDALONE_TABLES`, `ALL_TABLES`, `NOWHERE` +
-(`NOWHERE`)
-|indicates where (in the UI) the property should be hidden from the user.
-
-
-|xref:refguide:applib-ant:Property.adoc#maxLength[`maxLength()`]
-|
-|maximum number of characters for string parameters; ignored otherwise +
-
-In many/most cases you should however use xref:refguide:applib-ant:Column.adoc[`@Column#length()`]
-
-
-|xref:refguide:applib-ant:Property.adoc#mustSatisfy[`mustSatisfy()`]
-|implementation of `o.a.i.applib.spec.Specification`
-|allows arbitrary validation to be applied
-
-
-|xref:refguide:applib-ant:Property.adoc#notPersisted[`notPersisted()`]
-|`true`, `false` +
-(`false`)
-|whether to exclude from snapshots. +
-
-[WARNING]
-====
-Property must also be annotated with `@javax.jdo.annotations.NotPersistent` in order to not be persisted.
-====
-
-
-|xref:refguide:applib-ant:Property.adoc#optionality[`optionality()`]
-|
-|specifies a property is optional rather than mandatory +
-
-In many/most cases you should however use xref:refguide:applib-ant:Column.adoc[`@Column#allowsNull()`]
-
-
-
-|xref:refguide:applib-ant:Property.adoc#projecting[`projecting()`]
-|
-|indicates that owning object is a view model that is acting as a projection of the underlying entity referenced by this property.
-
-
-
-|xref:refguide:applib-ant:Property.adoc#publishing[`publishing()`]
-|
-|determines whether the editing of a property should be published.
-
-
-
-
-|xref:refguide:applib-ant:Property.adoc#regexPattern[`regexPattern()`]
-|regular expression
-|validates the contents of a string parameter against the regular expression pattern
-
-
-|`regexPatternFlags()`
-|value of flags as normally passed to `java.util.regex.` +
-`Pattern#compile(...)`
-|modifies the compilation of the regular expression
-
-
-|===
-
-
-For example:
-
-[source,java]
-----
-@DomainObject
-public class Customer {
- public static class EmailSpecification extends AbstractSpecification<String> {
- public String satisfiesSafely(String proposed) {
- return EmailUtil.ensureValidEmail(proposed); // <1>
- }
- }
- @javax.jdo.annotations.Column(allowsNull="true") // <2>
- @Property(
- maxLength=30,
- mustSatisfy=EmailSpecification.class,
- regexPattern = "(\\w+\\.)*\\w+@(\\w+\\.)+[A-Za-z]+",
- regexPatternFlags=Pattern.CASE_INSENSITIVE
- )
- public String getEmailAddress() { /* ... */ }
- public void setEmailAddress(String emailAddress) { /* ... */ }
- ...
-}
-----
-<1> the (fictitious) `EmailUtil.ensureValid(...)` (omitted for brevity) returns a string explaining if an email is invalid
-<2> generally use instead of the `@Property#optionality()` attribute
-
-
-
-
-
-[TIP]
-====
-The annotation is one of a handful (others including xref:refguide:applib-ant:Collection.adoc[`@Collection`], xref:refguide:applib-ant:CollectionLayout.adoc[`@CollectionLayout`] and xref:refguide:applib-ant:PropertyLayout.adoc[`@PropertyLayout`]) that can also be applied to the field, rather than the getter method. This is specifically
-so that boilerplate-busting tools such as link:https://projectlombok.org/[Project Lombok] can be used.
-====
-
-
-
-
-
-include:Property/command.adoc[leveloffset=+1]
-include:Property/domainEvent.adoc[leveloffset=+1]
-include:Property/editing.adoc[leveloffset=+1]
-include:Property/fileAccept.adoc[leveloffset=+1]
-include:Property/hidden.adoc[leveloffset=+1]
-include:Property/maxLength.adoc[leveloffset=+1]
-include:Property/mustSatisfy.adoc[leveloffset=+1]
-include:Property/notPersisted.adoc[leveloffset=+1]
-include:Property/optionality.adoc[leveloffset=+1]
-include:Property/projecting.adoc[leveloffset=+1]
-include:Property/publishing.adoc[leveloffset=+1]
-include:Property/regexPattern.adoc[leveloffset=+1]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/_attributes.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/_attributes.adoc
deleted file mode 100644
index d011536..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ../..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/command.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/command.adoc
deleted file mode 100644
index 7ed12a6..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/command.adoc
+++ /dev/null
@@ -1,268 +0,0 @@
-[[command]]
-= Command Persistence and Processing
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Every property edit (and action invocation for that matter) is automatically reified into a concrete `Command` object.
-The `@Property(command=..., commandXxx=...)` attributes provide hints for the persistence of that `Command` object, and the subsequent processing of that persisted command.
-The primary use cases for this are to support the deferring the execution of the action such that it can be invoked in the background, and to replay commands in a master/slave configuration.
-
-
-== Design
-
-The annotation works with (and is influenced by the behaviour of) a number of domain services:
-
-* xref:refguide:applib-svc:application-layer-api/CommandContext.adoc[`CommandContext`]
-* xref:refguide:applib-svc:application-layer-spi/CommandService.adoc[`CommandService`]
-* xref:refguide:applib-svc:spi/BackgroundService.adoc[`BackgroundService`] and
-* xref:refguide:applib-svc:application-layer-spi/BackgroundCommandService.adoc[`BackgroundCommandService`]
-
-
-Each property edit is automatically reified by the xref:refguide:applib-svc:application-layer-api/CommandContext.adoc[`CommandContext`] service into a `Command` object, capturing details of the target object, the property, the proposed new value fo the property, the user, a timestamp and so on.
-
-If an appropriate `CommandService` is configured (for example using (non-ASF) link:https://platform.incode.org/modules/spi/command/spi-command.html[Incode Platform's command] module), then the `Command` itself is persisted.
-
-By default, actions are invoked in directly in the thread of the invocation.
-If there is an implementation of `BackgroundCommandService` (as the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s command module does provide), then this means in turn that the `BackgroundService` can be used by the domain object code to programmatically create background ``Command``s.
-
-[NOTE]
-====
-If background ``Command``s are used, then an external scheduler, using xref:userguide:btb:about.adoc#BackgroundCommandExecution[headless access], must also be configured.
-====
-
-== `command()` and `commandPersistence()`
-
-The `command()` and `commandPersistence() attributes work together to determine whether a command will actually be persisted.
-There inter-relationship is somewhat complex, so is probably best explained by way of examples:
-
-[cols="1a,1a,1a,1a,2a", options="header"]
-|===
-
-| `command()`
-|`isis.services.
-command.properties` config property
-| `command
-Persistence()`
-| action dirties objects?
-| is command persisted?
-
-| `ENABLED`
-| (any)
-| `PERSISTED`
-| (either)
-| yes
-
-| `ENABLED`
-| (any)
-| `IF_HINTED`
-| no
-| no
-
-| `ENABLED`
-| (any)
-| `IF_HINTED`
-| yes
-| yes
-
-| `ENABLED`
-| (any)
-| `NOT_PERSISTED`
-| (any)
-| no
-
-| `AS_CONFIGURED`
-| `all`
-| `PERSISTED`
-| no
-| yes
-
-| `AS_CONFIGURED`
-| `all`
-| `IF_HINTED`
-| no
-| no
-
-| `AS_CONFIGURED`
-| `all`
-| `IF_HINTED`
-| yes
-| yes
-
-| `AS_CONFIGURED`
-| `all`
-| `NOT_PERSISTED`
-| (any)
-| no
-
-| `AS_CONFIGURED`
-| `none`
-| `PERSISTED`
-| no
-| no (!)
-
-| `AS_CONFIGURED`
-| `none`
-| `PERSISTED`
-| yes
-| yes
-
-| `AS_CONFIGURED`
-| `none`
-| `IF_HINTED`
-| no
-| no
-
-| `AS_CONFIGURED`
-| `none`
-| `IF_HINTED`
-| yes
-| yes
-
-| `AS_CONFIGURED`
-| `none`
-| `NOT_PERSISTED`
-| no
-| no
-
-| `AS_CONFIGURED`
-| `none`
-| `NOT_PERSISTED`
-| yes
-| yes (!)
-
-| `DISABLED`
-| (any)
-| `PERSISTED`
-| no
-| no (!)
-
-| `DISABLED`
-| (any)
-| `PERSISTED`
-| yes
-| yes
-
-| `DISABLED`
-| (any)
-| `IF_HINTED`
-| no
-| no
-
-| `DISABLED`
-| (any)
-| `IF_HINTED`
-| yes
-| yes
-
-| `DISABLED`
-| (any)
-| `NOT_PERSISTED`
-| no
-| no
-
-| `DISABLED`
-| (any)
-| `NOT_PERSISTED`
-| yes
-| yes (!)
-
-|===
-
-For example:
-
-[source,java]
-----
-public class Order {
- @Property(
- command=CommandReification.ENABLED,
- commandPersistence=CommandPersistence.PERSISTED
- )
- public Product getProduct() { /* ... */ }
- public void setProduct(Product p) { /* ... */ }
-}
-----
-
-As can be seen, whether a command is actually persisted does not always follow the value of the `commandPersistence()` attribute.
-This is because the `command()` attribute actually determines whether any command metadata for the action is captured within the framework's internal metamodel.
-If `command` is `DISABLED` or does not otherwise apply due to the action's declared semantics, then the framework decides to persist a command based solely on whether the action dirtied any objects (as if `commandPersistence()` was set to `IF_HINTED`).
-
-
-
-== `commandExecuteIn()`
-
-For persisted commands, the `commandExecuteIn()` attribute determines whether the `Command` should be executed in the foreground (the default) or executed in the background.
-
-Background execution means that the command is not executed immediately, but is available for a configured xref:refguide:applib-svc:application-layer-spi/BackgroundCommandService.adoc[`BackgroundCommandService`] to execute, eg by way of an in-memory scheduler such as Quartz. See xref:userguide:btb:about.adoc#BackgroundCommandExecution[here] for further information on this topic.
-
-For example:
-
-[source,java]
-----
-public class Order {
- @Property(
- command=CommandReification.ENABLED,
- commandExecuteIn=CommandExecuteIn.BACKGROUND
- )
- public Product getProduct() { /* ... */ }
- public void setProduct(Product p) { /* ... */ }
-}
-----
-
-will result in the `Command` being persisted but its execution deferred to a background execution mechanism.
-The returned object from this property edit is the persisted `Command` itself.
-
-
-
-
-== `commandDtoProcessor()`
-
-The `commandDtoProcessor()` attribute allows an implementation of `CommandDtoProcessor` to be specified.
-This interface has the following API:
-
-[source,java]
-----
-public interface CommandDtoProcessor {
- CommandDto process( // <1>
- Command command, // <2>
- CommandDto dto); // <3>
-}
-----
-<1> The returned `CommandDto`.
-This will typically be the `CommandDto` passed in, but supplemented in some way.
-<2> The `Command` being processed
-<3> The `CommandDto` (XML) obtained already from the `Command` (by virtue of it also implementing `CommandWithDto`, see discussion below).
-
-This interface is used by the framework-provided implementations of `ContentMappingService` for the REST API, allowing ``Command``s implementations that also implement `CommandWithDto` to be further customised as they are serialized out.
-The primary use case for this capability is in support of master/slave replication.
-
-* on the master, ``Command``s are serialized to XML.
-This includes the identity of the target object and the intended new value of the property.
-
-+
-[IMPORTANT]
-====
-However, any ``Blob``s and ``Clob``s are deliberately excluded from this XML (they are instead stored as references).
-This is to prevent the storage requirements for `Command` from becoming excessive.
-A `CommandDtoProcessor` can be provided to re-attach blob information if required.
-====
-
-* replaying ``Command``s requires this missing parameter information to be reinstated.
-The `CommandDtoProcessor` therefore offers a hook to dynamically re-attach the missing `Blob` or `Clob` argument.
-
-
-As a special case, returning `null` means that the command's DTO is effectively excluded when retrieving the list of commands.
-If replicating from master to slave, this effectively allows certain commands to be ignored.
-The `CommandDtoProcessor.Null` class provides a convenience implementation for this requirement.
-
-[NOTE]
-====
-If `commandDtoProcessor()` is specified, then `command()` is assumed to be ENABLED.
-====
-
-
-
-For an example application, see xref:refguide:applib-ant:Action.adoc#command[`Action#command()`].
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/domainEvent.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/domainEvent.adoc
deleted file mode 100644
index f17e9ad..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/domainEvent.adoc
+++ /dev/null
@@ -1,161 +0,0 @@
-[[domainEvent]]
-= `domainEvent()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-Whenever a domain object (or list of domain objects) is to be rendered, the framework fires off multiple domain events for every property, collection and action of the domain object.
-In the cases of the domain object's properties, the events that are fired are:
-
-* hide phase: to check that the property is visible (has not been hidden)
-* disable phase: to check that the property is usable (has not been disabled)
-* validate phase: to check that the property's arguments are valid (to modify/clear its value)
-* pre-execute phase: before the modification of the property
-* post-execute: after the modification of the property
-
-Subscribers subscribe through the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] using either link:https://github.com/google/guava[Guava] or link:http://www.axonframework.org/[Axon Framework] annotations and can influence each of these phases.
-
-By default the event raised is `PropertyDomainEvent.Default`.
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- @Property()
- public LocalDate getDueBy() { /* ... */ }
- ...
-}
-----
-
-The `domainEvent()` attribute allows a custom subclass to be emitted allowing more precise subscriptions (to those subclasses) to be defined instead.
-
-
-For example:
-
-[source,java]
-----
-public class ToDoItem {
- public static class DueByChangedEvent extends PropertyDomainEvent<ToDoItem, LocalDate> { } // <1>
- @Property(domainEvent=ToDoItem.DueByChangedEvent)
- public LocalDate getDueBy() { /* ... */ }
- ...
-}
-----
-<1> inherit from `PropertyDomainEvent<T,P>` where `T` is the type of the domain object being interacted with, and `P` is the type of the property (`LocalDate` in this example)
-
-The benefit is that subscribers can be more targetted as to the events that they subscribe to.
-
-[NOTE]
-====
-The framework provides a no-arg constructor and will initialize the domain event using (non-API) setters rather than through the constructor.
-This substantially reduces the boilerplate in the subclasses because no explicit constructor is required..
-====
-
-
-== Subscribers
-
-Subscribers (which must be domain services) subscribe using either the link:https://github.com/google/guava[Guava] API or (if the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`] has been appropriately configured) using the link:http://www.axonframework.org/[Axon Framework] API.
-The examples below use the Guava API.
-
-Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
-
-[source,java]
-----
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @com.google.common.eventbus.Subscribe
- public void on(PropertyDomainEvent ev) {
- ...
- }
-}
-----
-
-or can be fine-grained (by subscribing to specific event subtypes):
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
- @EventListener(ToDoItem.DueByChangedEvent.class)
- public void on(ToDoItem.DueByChangedEvent ev) {
- // ...
- }
-}
-----
-
-The subscriber's method is called (up to) 5 times:
-
-* whether to veto visibility (hide)
-* whether to veto usability (disable)
-* whether to veto execution (validate)
-* steps to perform prior to the property being modified
-* steps to perform after the property has been modified.
-
-The subscriber can distinguish these by calling `ev.getEventPhase()`.
-Thus the general form is:
-
-[source,java]
-----
-import org.springframework.context.event.EventListener;
-
-@DomainService(nature=NatureOfService.DOMAIN)
-public class SomeSubscriber extends AbstractSubscriber {
-
- public void on(PropertyDomainEvent ev) {
- switch(ev.getEventPhase()) {
- case HIDE:
- // call ev.hide() or ev.veto("") to hide the property
- break;
- case DISABLE:
- // call ev.disable("...") or ev.veto("...") to disable the property
- break;
- case VALIDATE:
- // call ev.invalidate("...") or ev.veto("...")
- // if proposed property value is invalid
- break;
- case EXECUTING:
- break;
- case EXECUTED:
- break;
- }
- }
-}
-----
-
-It is also possible to abort the transaction during the executing or executed phases by throwing an exception.
-If the exception is a subtype of `RecoverableException` then the exception will be rendered as a user-friendly warning (eg Growl/toast) rather than an error.
-
-
-
-
-== Default, Doop and Noop events
-
-If the `domainEvent` attribute is not explicitly specified (is left as its default value, `PropertyDomainEvent.Default`), then the framework will, by default, post an event.
-
-If this is not required, then the `isis.reflector.facet.propertyAnnotation.domainEvent.postForDefault` configuration property can be set to "false"; this will disable posting.
-
-On the other hand, if the `domainEvent` has been explicitly specified to some subclass, then an event will be posted.
-The framework provides `PropertyDomainEvent.Doop` as such a subclass, so setting the `domainEvent` attribute to this class will ensure that the event to be posted, irrespective of the configuration property setting.
-
-And, conversely, the framework also provides `PropertyDomainEvent.Noop`; if `domainEvent` attribute is set to this class, then no event will be posted.
-
-
-
-
-
-== Raising events programmatically
-
-Normally events are only raised for interactions through the UI.
-However, events can be raised programmatically by wrapping the target object using the xref:refguide:applib-svc:application-layer-api/WrapperFactory.adoc[`WrapperFactory`] service.
-
-
-== See also
-
-This attribute is also supported for:
-
-* xref:refguide:applib-ant:Action.adoc#domainEvent[actions] and
-* xref:refguide:applib-ant:Property.adoc#domainEvent[properties].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/editing.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/editing.adoc
deleted file mode 100644
index 2247e4f..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/editing.adoc
+++ /dev/null
@@ -1,49 +0,0 @@
-[[editing]]
-= `editing()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-The `editing()` attribute can be used to prevent a property from being modified or cleared, ie to make it read-only.
-
-The related `editingDisabledReason()` attribute specifies the a hard-coded reason why the property cannot be modified directly.
-
-Whether a property is enabled or disabled depends upon these factors:
-
-* whether the domain object has been configured as immutable through the xref:refguide:DomainObject/editing.adoc[`@DomainObject#editing()`] attribute
-
-* else (that is, if the domain object's editability is specified as being `AS_CONFIGURED`), then the value of the xref:refguide:config:configuring-core.adoc[configuration property] `isis.objects.editing`. If set to `false`, then the object's properties (and collections) are __not__ editable
-
-* else, then the value of the `@Property(editing=...)` attribute itself
-
-* else, the result of invoking any supporting xref:refguide:applib-cm:rgcms.adoc#\_rgcms_methods_prefixes_disable[`disable...()`] supporting methods
-
-
-Thus, to make a property read-only even if the object would otherwise be editable, use:
-
-[source,java]
-----
-public class Customer {
- @Property(
- editing=Editing.DISABLED,
- editingDisabledReason="The credit rating is derived from multiple factors"
- )
- public int getInitialCreditRating(){ /* ... */ }
- public void setInitialCreditRating(int initialCreditRating) { /* ... */ }
-}
-----
-
-[NOTE]
-====
-To reiterate, it is _not_ possible to enable editing for a property if editing has been disabled at the object-level.
-====
-
-
-
-== See also
-
-This attribute can also be specified for:
-
-* xref:refguide:applib-ant:Collection.adoc#editing[collections]
-* xref:refguide:applib-ant:DomainObject.adoc#editing[domain object].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/fileAccept.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/fileAccept.adoc
deleted file mode 100644
index 3ed9d9d..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/fileAccept.adoc
+++ /dev/null
@@ -1,34 +0,0 @@
-[[fileAccept]]
-= `fileAccept()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `fileAccept()` attribute applies only to xref:refguide:applib-cm:classes/value-types.adoc#Blob[`Blob`] or xref:refguide:applib-cm:classes/value-types.adoc#Clob[`Clob`] parameters, indicating the type of file to accept when uploading a new value.
-The attribute is also supported on xref:refguide:applib-ant:Parameter.adoc#fileAccept[parameters].
-
-
-For example:
-
-[source,java]
-----
-public class ScannedDocument {
-
- @Property(fileAccept="image/*") // <1>
- private Blob scannedImage;
- // getters and setters omitted
-
-}
-----
-<1> as per link:http://www.w3schools.com/tags/att_input_accept.asp[reference docs], either a media type (such as
-`image/*`) or a file type extension (such as `.png`).
-
-
-
-
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/hidden.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/hidden.adoc
deleted file mode 100644
index 779dbb7..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/hidden.adoc
+++ /dev/null
@@ -1,77 +0,0 @@
-[[hidden]]
-= `hidden()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-Properties can be hidden at the domain-level, indicating that they are not visible to the end-user.
-
-
-[TIP]
-====
-It is also possible to use xref:refguide:applib-ant:Property.adoc#hidden[`@Property#hidden()`] to hide an action at the domain layer.
-Both options are provided with a view that in the future the view-layer semantics may be under the control of (expert) users, whereas domain-layer semantics should never be overridden or modified by the user.
-====
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @Property(hidden=Where.EVERYWHERE)
- public int getInternalId() { /* ... */ }
- @Property(hidden=Where.ALL_TABLES)
- public void updateStatus() { /* ... */ }
- ...
-}
-----
-
-The acceptable values for the `where` parameter are:
-
-* `Where.EVERYWHERE` or `Where.ANYWHERE`
-+
-The property should be hidden everywhere.
-
-* `Where.ANYWHERE`
-+
-Synonym for everywhere.
-
-* `Where.OBJECT_FORMS`
-+
-The property should be hidden when displayed within an object form.
-
-* `Where.PARENTED_TABLES`
-+
-The property should be hidden when displayed as a column of a table within a parent object's collection.
-
-* `Where.STANDALONE_TABLES`
-+
-The property should be hidden when displayed as a column of a table showing a standalone list of objects, for example as returned by a repository query.
-
-* `Where.ALL_TABLES`
-+
-The property should be hidden when displayed as a column of a table, either an object's * collection or a standalone list.
-This combines `PARENTED_TABLES` and `STANDALONE_TABLES`.
-
-* `Where.NOWHERE` +
-+
-The property should not be hidden, overriding any other metadata/conventions that would normally cause the property to be hidden. +
-
-For example, if a property is annotated with xref:refguide:applib-ant:Title.adoc[`@Title`], then normally this should be hidden from all
-tables. Annotating with `@Property(where=Where.NOWHERE)` overrides this.
-
-
-[NOTE]
-====
-The xref:vro:ROOT:about.adoc[RestfulObjects viewer] has only partial support for these `Where` enums.
-====
-
-
-== See also
-
-This attribute can also be applied to:
-
-* xref:refguide:applib-ant:ActionLayout.adoc#hidden[actions]
-* xref:refguide:applib-ant:CollectionLayout.adoc#hidden[collections].
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/maxLength.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/maxLength.adoc
deleted file mode 100644
index 0dc3346..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/maxLength.adoc
+++ /dev/null
@@ -1,57 +0,0 @@
-[[maxLength]]
-= `maxLength()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-The `maxLength()` attribute applies only to `String` properties, indicating the maximum number of characters that the user may enter (for example in a text field in the UI).
-The attribute It is ignored if applied to properties of any other type.
-
-
-That said, properties are most commonly defined on persistent domain objects (entities), in which case the JDO xref:refguide:applib-ant:Column.adoc[`@Column`] will in any case need to be specified.
-Apache Isis can infer the `maxLength` semantic directly from the equivalent `@Column#length()` annotation/attribute.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @javax.jdo.annotations.Column(length=30)
- public String getFirstName() { /* ... */ }
- public void setFirstName(String firstName) { /* ... */ }
- ...
-}
-----
-
-In this case there is therefore no need for the `@Property#maxLength()` attribute.
-
-
-
-== Non-persistent properties
-
-Of course, not every property is persistent (it could instead be derived), and neither is every domain object an entity (it could be a view model).
-For these non persistable properties the `maxLength()` attribute is still required.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @javax.jdo.annotation.NotPersistent // <1>
- @Property(maxLength=100)
- public String getFullName() { /* ... */ } // <2>
- public void setFullName(String fullName) { /* ... */ } // <3>
- ...
-}
-----
-<1> a non persisted (derived) property
-<2> implementation would most likely derive full name from constituent parts (eg first name, middle initial, last name)
-<3> implementation would most likely parse the input and update the constituent parts
-
-
-== See also
-
-This attribute can also be applied to xref:refguide:applib-ant:Parameter.adoc#maxLength[parameters].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/mustSatisfy.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/mustSatisfy.adoc
deleted file mode 100644
index 9b2f2e6..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/mustSatisfy.adoc
+++ /dev/null
@@ -1,59 +0,0 @@
-[[mustSatisfy]]
-= `mustSatisfy()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-
-The `mustSatisfy()` attribute allows arbitrary validation to be applied to properties using an (implementation of a) `org.apache.isis.applib.spec.Specification` object.
- The attribute is also supported on xref:refguide:applib-ant:Parameter.adoc#mustSatisfy[parameters].
-
-[TIP]
-====
-The specification implementations can (of course) be reused between properties and xref:refguide:applib-ant:Parameter.adoc#mustSatisfy[parameters].
-====
-
-The `Specification` is consulted during validation, being passed the proposed value. If the proposed value fails, then the value returned is the used as the invalidity reason.
-
-For example:
-
-[source,java]
-----
-public class StartWithCapitalLetterSpecification
- extends AbstractSpecification<String> { // <1>
- public String satisfiesSafely(String proposed) {
- return "".equals(proposed)
- ? "Empty string"
- : !Character.isUpperCase(proposed.charAt(0))
- ? "Does not start with a capital letter"
- : null;
- }
-}
-public class Customer {
- @Property(mustSatisfy=StartWithCapitalLetterSpecification.class)
- public String getFirstName() { /* ... */ }
- ...
-}
-----
-<1> the `AbstractSpecification` class conveniently handles type-safety and dealing with null values.
-The applib also provides `SpecificationAnd` and `SpecificationOr` to allow specifications to be combined "algebraically".
-
-
-It is also possible to provide translatable reasons.
-Rather than implement `Specification`, instead implement `Specification2` which defines the API:
-
-[source,java]
-----
-public interface Specification2 extends Specification {
- public TranslatableString satisfiesTranslatable(Object obj); // <1>
-}
-----
-<1> Return `null` if specification satisfied, otherwise the reason as a translatable string
-
-With `Specification2` there is no need to implement the inherited `satifies(Object)`; that method will never be called.
-
-
-
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/notPersisted.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/notPersisted.adoc
deleted file mode 100644
index 1718fab..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/notPersisted.adoc
+++ /dev/null
@@ -1,69 +0,0 @@
-[[notPersisted]]
-= `notPersisted()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-
-The (somewhat misnamed) `notPersisted()` attribute indicates that the collection should be excluded from any snapshots generated by the xref:refguide:applib-svc:integration-api/XmlSnapshotService.adoc[`XmlSnapshotService`].
-
-
-[WARNING]
-====
-This annotation does _not_ specify that a property is not persisted in the JDO/DataNucleus objectstore.
-See below for details as to how to additionally annotate the property for this.
-====
-
-
-For example:
-
-[source,java]
-----
-public class Order {
- @Property(notPersisted=true)
- public Order getPreviousOrder() {...}
- public void setPreviousOrder(Order previousOrder) {...}
- ...
-}
-----
-
-Historically this annotation also hinted as to whether the property's value contents should be persisted in the object store.
-However, the JDO/DataNucleus objectstore does not recognize this annotation.
-Thus, to ensure that a property is actually not persisted, it should *also* be annotated with `@javax.jdo.annotations.NotPersistent`.
-
-For example:
-
-[source,java]
-----
-public class Order {
- @Property(notPersisted=true) // <1>
- @javax.jdo.annotations.NotPersistent // <2>
- public Order getPreviousOrder() {...}
- public void setPreviousOrder(Order previousOrder) {...}
- ...
-}
-----
-<1> ignored by Apache Isis
-<2> ignored by JDO/DataNucleus
-
-
-
-
-
-Alternatively, if the property is derived, then providing only a "getter" will also work:
-
-[source,java]
-----
-public class Order {
- public Order getPreviousOrder() {...}
- ...
-}
-----
-
-
-== See also
-
-This attribute is also supported for xref:refguide:applib-ant:Collection.adoc#notPersisted[collections].
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/optionality.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/optionality.adoc
deleted file mode 100644
index dc30743..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/optionality.adoc
+++ /dev/null
@@ -1,144 +0,0 @@
-[[optionality]]
-= `optionality()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-
-
-
-By default, Apache Isis assumes that all properties of an domain object or view model are required (mandatory).
-The `optionality()` attribute allows this to be relaxed.
-The attribute is also supported for xref:refguide:applib-ant:Parameter.adoc#optionality[parameters].
-
-That said, properties are most commonly defined on persistent domain objects (entities), in which case the JDO xref:refguide:applib-ant:Column.adoc[`@Column`] should be specified.
-Apache Isis can infer the maxLength directly from the equivalent @Column#length() annotation.
-
-That said, properties are most commonly defined on persistent domain objects (entities), in which case the JDO xref:refguide:applib-ant:Column.adoc[`@Column`] will in any case need to be specified.
-Apache Isis can infer the `optionality` semantic directly from the equivalent `@Column#allowsNull()` annotation/attribute.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @javax.jdo.annotations.Column(allowsNull="true")
- public String getMiddleInitial() { /* ... */ }
- public void setMiddleInitial(String middleInitial) { /* ... */ }
- ...
-}
-----
-
-In this case there is no need for the `@Property#optionality()` attribute.
-
-
-== Mismatched defaults
-
-If the `@Column#allowsNull()` attribute is omitted and the `@Property#optionality() attribute is also omitted, then note that Isis' defaults and JDO's defaults differ.
-Specifically, Isis always assumes properties are mandatory, whereas JDO specifies that primitives are mandatory, but all reference types are optional.
-
-When Apache Isis initializes it checks for these mismatches during its metamodel validation phase, and will fail to boot ("fail-fast") if there is a mismatch.
-The fix is usually to add the `@Column#allowsNull()` annotation/attribute.
-
-
-== Superclass inheritance type
-
-There is one case (at least) it may be necessary to annotate the property with both `@Column#allowsNull` and also `@Property#optionality()`.
-If the property is logically mandatory and is in a subclass, but the mapping of the class hierarchy is to store both the superclass and subclass(es) into a single table (ie a "roll-up" mapping using `javax.jdo.annotations.InheritanceStrategy#SUPERCLASS_TABLE`), then JDO requires that the property is annotated as `@Column#allowsNull="true"`: its value will be not defined for other subclasses.
-
-In this case we therefore require both annotations.
-
-[source,java]
-----
-@javax.jdo.annotations.PersistenceCapable
-@javax.jdo.annotations.Inheritance(strategy = InheritanceStrategy.NEW_TABLE)
-public abstract class PaymentMethod {
- ...
-}
-@javax.jdo.annotations.PersistenceCapable
-@javax.jdo.annotations.Inheritance(strategy = InheritanceStrategy.SUPERCLASS_TABLE)
-public class CreditCardPaymentMethod extends PaymentMethod {
- private String cardNumber;
- @javax.jdo.annotations.Column(allowsNull="true")
- @Property(optionality=Optionality.MANDATORY)
- public String getCardNumber() { return this.cardNumber; }
- public void setCardNumber(String cardNumber) { this.cardNumber = cardNumber; }
- ...
-}
-----
-
-Alternatively, you could rely on the fact that Apache Isis never looks at fields (whereas JDO does) and move the JDO annotation to the field:
-
-[source,java]
-----
-@javax.jdo.annotations.PersistenceCapable
-@javax.jdo.annotations.Inheritance(strategy = InheritanceStrategy.SUPERCLASS_TABLE)
-public class CreditCardPaymentMethod extends PaymentMethod {
- @javax.jdo.annotations.Column(allowsNull="true")
- private String cardNumber;
- public String getCardNumber() { return this.cardNumber; }
- public void setCardNumber(String cardNumber) { this.cardNumber = cardNumber; }
- ...
-}
-----
-
-However this at first glance this might be read as eing that the property is optional whereas Isis' default (required) applies.
-Also, in the future Apache Isis may be extended to support reading annotations from fields.
-
-
-
-== Non-persistent properties
-
-Of course, not every property is persistent (it could instead be derived), and neither is every domain object an entity (it could be a view model).
-For these non persistable properties the `optionality()` attribute is still required.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- @javax.jdo.annotation.NotPersistent // <1>
- @Property(optionality=Optionality.OPTIONAL)
- public String getFullName() { /* ... */ } // <2>
- public void setFullName(String fullName) { /* ... */ } // <3>
- ...
-}
-----
-<1> a non persisted (derived) property
-<2> implementation would most likely derive full name from constituent parts (eg first name, middle initial, last name)
-<3> implementation would most likely parse the input and update the constituent parts
-
-
-[TIP]
-====
-The attribute has no meaning for a primitive type such as `int`: primitives will always have a default value (e.g. zero).
-If optionality is required, then use the corresponding wrapper class (e.g. `java.lang.Integer`) and annotate with `Parameter#optionality()` as required.
-====
-
-The values for the attribute are simply `OPTIONAL` or `MANDATORY`.
-
-For example:
-
-[source,java]
-----
-public class Customer {
- public Order placeOrder(
- final Product product,
- @ParameterLayout(named = "Quantity")
- final int quantity,
- @Parameter(optionality = Optionality.OPTIONAL)
- @ParameterLayout(named = "Special Instructions")
- final String instr) {
- ...
- }
- ...
-}
-----
-
-
-[NOTE]
-====
-It is also possible to specify optionality using xref:refguide:applib-ant:Nullable.adoc[`@Nullable`] annotation.
-====
-
diff --git a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/projecting.adoc b/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/projecting.adoc
deleted file mode 100644
index 49c4980..0000000
--- a/core/applib/src/main/_adoc/modules/applib-ant/pages/Property/projecting.adoc
+++ /dev/null
@@ -1,39 +0,0 @@
-[[projecting]]
-= `projecting()`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-A common use case for view models is to act as a projection of some underlying entity, to decorate that entity with additional behaviour (or remove existing behaviour) for some particular business context.
-
-Very often the object that is of interest to the end-user is the underlying entity, not the view model per se.
-If the view model is displayed within a table (on a home page, say), then when the user clicks the entity/icon link for the view model, they will in fact want to drill-down to the underlying entity and skip the view model completely.
-
... 12481 lines suppressed ...
[isis] 03/03: ISIS-2062: fixes nav bar for secman modules
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 71e3e5c4d2ef818aedb1e086b0c2ffba02eeccc7
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Nov 18 09:07:53 2019 +0000
ISIS-2062: fixes nav bar for secman modules
---
extensions/security/secman/src/main/doc/antora.yml | 2 +-
.../main/doc/modules/ROOT/partials/module-nav.adoc | 1 -
site-scratch.yml | 76 +++++++++++-----------
3 files changed, 39 insertions(+), 40 deletions(-)
diff --git a/extensions/security/secman/src/main/doc/antora.yml b/extensions/security/secman/src/main/doc/antora.yml
index d9748da..88ed3f2 100644
--- a/extensions/security/secman/src/main/doc/antora.yml
+++ b/extensions/security/secman/src/main/doc/antora.yml
@@ -3,4 +3,4 @@ title: "SecMan"
version: master
start_page: ROOT:about.adoc
nav:
-- modules/secman/nav.adoc
+- modules/ROOT/nav.adoc
diff --git a/extensions/security/secman/src/main/doc/modules/ROOT/partials/module-nav.adoc b/extensions/security/secman/src/main/doc/modules/ROOT/partials/module-nav.adoc
index 4af59aa..e69de29 100644
--- a/extensions/security/secman/src/main/doc/modules/ROOT/partials/module-nav.adoc
+++ b/extensions/security/secman/src/main/doc/modules/ROOT/partials/module-nav.adoc
@@ -1 +0,0 @@
-* xref:secman:ROOT:about.adoc[SecMan (extension)]
diff --git a/site-scratch.yml b/site-scratch.yml
index a4f3ff8..b6becda 100644
--- a/site-scratch.yml
+++ b/site-scratch.yml
@@ -20,13 +20,13 @@ content:
# - url: .
# start_path: antora/components/relnotes
# branches: HEAD
- - url: .
- start_path: antora/components/security
- branches: HEAD
# - url: .
-# start_path: antora/components/testing
+# start_path: antora/components/security
# branches: HEAD
- url: .
+ start_path: antora/components/testing
+ branches: HEAD
+ - url: .
start_path: antora/components/toc
branches: HEAD
# - url: .
@@ -72,24 +72,24 @@ content:
# - url: .
# start_path: core/schema/src/main/doc # refguide
# branches: HEAD
- - url: .
- start_path: core/security/api/src/main/doc # security
- branches: HEAD
- - url: .
- start_path: core/security/bypass/src/main/doc # security
- branches: HEAD
- - url: .
- start_path: core/security/shiro/src/main/doc # security
- branches: HEAD
- - url: .
- start_path: core/security/keycloak/src/main/doc # security
- branches: HEAD
# - url: .
-# start_path: core/testsupport/unittestsupport/src/main/doc # testing
+# start_path: core/security/api/src/main/doc # security
+# branches: HEAD
+# - url: .
+# start_path: core/security/bypass/src/main/doc # security
# branches: HEAD
# - url: .
-# start_path: core/testsupport/integtestsupport/src/main/doc # testing
+# start_path: core/security/shiro/src/main/doc # security
# branches: HEAD
+# - url: .
+# start_path: core/security/keycloak/src/main/doc # security
+# branches: HEAD
+ - url: .
+ start_path: core/testsupport/unittestsupport/src/main/doc # testing
+ branches: HEAD
+ - url: .
+ start_path: core/testsupport/integtestsupport/src/main/doc # testing
+ branches: HEAD
# to be resurrected somehow.
#- url: .
# start_path: core/testsupport/mvnplugin/src/main/doc
@@ -123,31 +123,31 @@ content:
# - url: .
# start_path: extensions/core/spring/src/main/doc # extensions
# branches: HEAD
- - url: .
- start_path: extensions/security/secman/src/main/doc # secman
- branches: HEAD
- - url: .
- start_path: extensions/security/secman/api/src/main/doc # secman
- branches: HEAD
- - url: .
- start_path: extensions/security/secman/encryption-jbcrypt/src/main/doc # secman
- branches: HEAD
- - url: .
- start_path: extensions/security/secman/model/src/main/doc # secman
- branches: HEAD
- - url: .
- start_path: extensions/security/secman/persistence-jdo/src/main/doc # secman
- branches: HEAD
- - url: .
- start_path: extensions/security/secman/realm-shiro/src/main/doc # secman
- branches: HEAD
# - url: .
-# start_path: extensions/testing/fixtures/src/main/doc # testing
+# start_path: extensions/security/secman/src/main/doc # security secman
+# branches: HEAD
+# - url: .
+# start_path: extensions/security/secman/api/src/main/doc # security secman
+# branches: HEAD
+# - url: .
+# start_path: extensions/security/secman/encryption-jbcrypt/src/main/doc # security secman
# branches: HEAD
# - url: .
-# start_path: extensions/testing/specsupport/src/main/doc # secman
+# start_path: extensions/security/secman/model/src/main/doc # security secman
# branches: HEAD
# - url: .
+# start_path: extensions/security/secman/persistence-jdo/src/main/doc # security secman
+# branches: HEAD
+# - url: .
+# start_path: extensions/security/secman/realm-shiro/src/main/doc # security secman
+# branches: HEAD
+ - url: .
+ start_path: extensions/testing/fixtures/src/main/doc # testing
+ branches: HEAD
+ - url: .
+ start_path: extensions/testing/specsupport/src/main/doc # testing
+ branches: HEAD
+# - url: .
# start_path: extensions/vro/restclient/src/main/doc # vro
# branches: HEAD
# - url: .
[isis] 02/03: ISIS-2062: reorganises security guide
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit b0c90bda2ad7ef33ab66d7198295f506da9e4eaa
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Nov 18 08:57:14 2019 +0000
ISIS-2062: reorganises security guide
... longer pages.
---
.../security/modules/ROOT/pages/about.adoc | 10 ++-
...c => domain-services-api-for-applications.adoc} | 3 +-
.../modules/ROOT/partials/component-nav.adoc | 5 ++
.../security/modules/ROOT/partials/module-nav.adoc | 3 +-
.../src/main/doc/modules/applib-ant/pages/aaa.adoc | 10 ---
.../src/main/doc/modules/bypass/pages/about.adoc | 20 +++++
.../pages/configuring-isis-to-use-bypass.adoc | 22 -----
.../doc/modules/bypass/partials/module-nav.adoc | 3 +-
.../src/main/doc/modules/keycloak/pages/about.adoc | 2 +-
.../doc/modules/shiro-realm-jdbc/_attributes.adoc | 6 --
.../modules/shiro-realm-jdbc/attachments/.gitkeep | 0
.../doc/modules/shiro-realm-jdbc/examples/.gitkeep | 0
.../configure-shiro-to-use-custom-jdbc-realm.png | Bin 33149 -> 0 bytes
.../src/main/doc/modules/shiro-realm-jdbc/nav.adoc | 1 -
.../shiro-realm-jdbc/partials/_attributes.adoc | 4 -
.../shiro-realm-jdbc/partials/module-nav.adoc | 1 -
.../images/activeds-ldap-groups.png | Bin 128224 -> 0 bytes
.../images/activeds-ldap-mojo-partition.png | Bin 123256 -> 0 bytes
.../images/activeds-ldap-mojo-root-dse.png | Bin 113723 -> 0 bytes
.../images/activeds-ldap-sasl-authentication.png | Bin 119544 -> 0 bytes
.../images/activeds-ldap-users.png | Bin 123030 -> 0 bytes
.../configure-shiro-to-use-isis-ldap-realm.PNG | Bin 32310 -> 0 bytes
.../shiro-realm-ldap/partials/module-nav.adoc | 2 +-
.../configure-isis-to-use-shiro.png | Bin
.../ini/configure-shiro-to-use-ini-realm.png} | Bin
.../configure-shiro-to-use-custom-jdbc-realm.png | Bin
.../configure-shiro-to-use-isis-ldap-realm.png} | Bin
.../src/main/doc/modules/shiro/pages/about.adoc | 10 +++
.../pages => shiro/pages/about}/_attributes.adoc | 2 +-
.../{ => about}/configuring-isis-to-use-shiro.adoc | 2 +-
.../{ => about}/enhanced-wildcard-permission.adoc | 0
.../modules/shiro/pages/{ => about}/ini-realm.adoc | 2 +-
.../pages/about/jdbc-realm.adoc} | 2 +-
.../pages/about/ldap-realm.adoc} | 12 +--
.../modules/shiro/pages/{ => about}/run-as.adoc | 0
.../shiro/pages/{ => about}/shiro-caching.adoc | 0
.../doc/modules/shiro/partials/module-nav.adoc | 10 +--
site-scratch.yml | 90 ++++++++++-----------
38 files changed, 104 insertions(+), 118 deletions(-)
diff --git a/antora/components/security/modules/ROOT/pages/about.adoc b/antora/components/security/modules/ROOT/pages/about.adoc
index fd49301..fc1c79d 100644
--- a/antora/components/security/modules/ROOT/pages/about.adoc
+++ b/antora/components/security/modules/ROOT/pages/about.adoc
@@ -12,6 +12,8 @@ This guide describes the authentication and authorization features available to
== Terminology
+WARNING: TODO:v2: these words could perhaps move into the "security API" module, currently empty.
+
Apache Isis has built-in support for authentication and authorization:
* By "authentication" we mean logging into the application using some credentials, typically a username and password.
@@ -19,13 +21,17 @@ Authentication also means looking up the set of roles to which a user belongs.
* By "authorization" we mean permissions: granting roles to have access to features (object member) of the app.
-Isis has two levels of permissions.
+Apache Isis has two levels of permissions.
_Read_ permission means that the user can view the object member; it will be rendered in the UI. An action with only read permission will be shown disabled ("greyed out".
_Write_ permission means that the object member can be changed. For actions this means that they can be invoked.
-Isis provides an API for both authentication and authorization, and provides an implementation that integrates with link:http://shiro.apache.org[Apache Shiro].
+WARNING: TODO: v2: this is out of date, because there is also a keycloak integration.
+
+The framework provides an API for both authentication and authorization, and provides an implementation that integrates with link:http://shiro.apache.org[Apache Shiro].
Shiro in turn uses the concept of a _realm_ as a source for both authentication and optionally authorization.
+WARNING: TODO: v2: Spring Boot requires that shiro.ini is on classpath, not in WEB-INF.
+
Shiro ships with a simple text-based realm -- the `IniRealm` -- which reads users (and password), user roles and role permissions from the `WEB-INF/shiro.ini` file.
The xref:helloworld:ROOT:about.adoc[HelloWorld] and xref:simpleapp:ROOT:about.adoc[SimpleApp] archetypes are both configured to use this realm.
diff --git a/antora/components/security/modules/ROOT/pages/api-for-applications.adoc b/antora/components/security/modules/ROOT/pages/domain-services-api-for-applications.adoc
similarity index 98%
rename from antora/components/security/modules/ROOT/pages/api-for-applications.adoc
rename to antora/components/security/modules/ROOT/pages/domain-services-api-for-applications.adoc
index b875a10..90ea898 100644
--- a/antora/components/security/modules/ROOT/pages/api-for-applications.adoc
+++ b/antora/components/security/modules/ROOT/pages/domain-services-api-for-applications.adoc
@@ -1,5 +1,4 @@
-[[api-for-applications]]
-= API for Applications
+= Domain Services (API for Applications)
:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
include::_attributes.adoc[]
:page-partial:
diff --git a/antora/components/security/modules/ROOT/partials/component-nav.adoc b/antora/components/security/modules/ROOT/partials/component-nav.adoc
index 439df3b..ba2ddb5 100644
--- a/antora/components/security/modules/ROOT/partials/component-nav.adoc
+++ b/antora/components/security/modules/ROOT/partials/component-nav.adoc
@@ -1,8 +1,13 @@
include::security:ROOT:partial$module-nav.adoc[]
+
include::security:api:partial$module-nav.adoc[]
+
include::security:bypass:partial$module-nav.adoc[]
+
include::security:shiro:partial$module-nav.adoc[]
+
include::security:keycloak:partial$module-nav.adoc[]
+
include::security:ROOT:partial$module-nav2.adoc[]
* Extensions
diff --git a/antora/components/security/modules/ROOT/partials/module-nav.adoc b/antora/components/security/modules/ROOT/partials/module-nav.adoc
index 486690a..56560ac 100644
--- a/antora/components/security/modules/ROOT/partials/module-nav.adoc
+++ b/antora/components/security/modules/ROOT/partials/module-nav.adoc
@@ -1,5 +1,4 @@
-* xref:security:ROOT:about.adoc[Security]
-** xref:security:ROOT:api-for-applications.adoc[API for Applications]
+* xref:security:ROOT:domain-services-api-for-applications.adoc[Domain Services (API for Applications)]
diff --git a/core/applib/src/main/doc/modules/applib-ant/pages/aaa.adoc b/core/applib/src/main/doc/modules/applib-ant/pages/aaa.adoc
deleted file mode 100644
index dc19063..0000000
--- a/core/applib/src/main/doc/modules/applib-ant/pages/aaa.adoc
+++ /dev/null
@@ -1,10 +0,0 @@
-= Summary
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-This section summarizes the various annotations supported by Apache Isis. They break out into five categories.
-
-
-
diff --git a/core/security/bypass/src/main/doc/modules/bypass/pages/about.adoc b/core/security/bypass/src/main/doc/modules/bypass/pages/about.adoc
index d72ade5..4bd61af 100644
--- a/core/security/bypass/src/main/doc/modules/bypass/pages/about.adoc
+++ b/core/security/bypass/src/main/doc/modules/bypass/pages/about.adoc
@@ -7,3 +7,23 @@ The bypass implementation, as its name suggests, allows both authentication and
This is typically used for integration tests or for prototyping.
+== Configuring to use Bypass
+
+The bypass security component consists of an implementation of both the `AuthenticationManager` and `AuthorizationManager` APIs, and are intended for prototyping use only.
+
+The authentication manager allows access with any credentials (in a sense, "bypassing" authentication), while the authorization manager provides access to all class members (in a sense, "bypassing" authorization).
+
+
+WARNING: TODO: v2: instead this is defined through `IsisBootSecurityXxx` classes.
+
+To tell Apache Isis to bypass security, just update the `WEB-INF/isis.properties` file:
+
+[source,ini]
+----
+isis.authentication=bypass
+isis.authorization=bypass
+----
+
+This installs the appropriate no-op implementations for both authentication and authorization:
+
+image::security/security-apis-impl/configure-isis-to-use-bypass.PNG[width="600px",link="{imagesdir}/security/security-apis-impl/configure-isis-to-use-bypass.PNG"]
diff --git a/core/security/bypass/src/main/doc/modules/bypass/pages/configuring-isis-to-use-bypass.adoc b/core/security/bypass/src/main/doc/modules/bypass/pages/configuring-isis-to-use-bypass.adoc
deleted file mode 100644
index 8ee713e..0000000
--- a/core/security/bypass/src/main/doc/modules/bypass/pages/configuring-isis-to-use-bypass.adoc
+++ /dev/null
@@ -1,22 +0,0 @@
-[[configuring-isis-to-use-bypass]]
-= Bypassing security
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-The bypass security component consists of an implementation of both the `AuthenticationManager` and `AuthorizationManager` APIs, and are intended for prototyping use only.
-
-The authentication manager allows access with any credentials (in a sense, "bypassing" authentication), while the authorization manager provides access to all class members (in a sense, "bypassing" authorization).
-
-
-To tell Apache Isis to bypass security, just update the `WEB-INF/isis.properties` file:
-
-[source,ini]
-----
-isis.authentication=bypass
-isis.authorization=bypass
-----
-
-This installs the appropriate no-op implementations for both authentication and authorization:
-
-image::security/security-apis-impl/configure-isis-to-use-bypass.PNG[width="600px",link="{imagesdir}/security/security-apis-impl/configure-isis-to-use-bypass.PNG"]
diff --git a/core/security/bypass/src/main/doc/modules/bypass/partials/module-nav.adoc b/core/security/bypass/src/main/doc/modules/bypass/partials/module-nav.adoc
index 7596941..342f4e5 100644
--- a/core/security/bypass/src/main/doc/modules/bypass/partials/module-nav.adoc
+++ b/core/security/bypass/src/main/doc/modules/bypass/partials/module-nav.adoc
@@ -1,3 +1,2 @@
-* Bypass Implementation
-** xref:security:bypass:configuring-isis-to-use-bypass.adoc[Configuring to use Bypass]
+* xref:security:bypass:about.adoc[Bypass Implementation]
diff --git a/core/security/keycloak/src/main/doc/modules/keycloak/pages/about.adoc b/core/security/keycloak/src/main/doc/modules/keycloak/pages/about.adoc
index 0f55aae..689a76d 100644
--- a/core/security/keycloak/src/main/doc/modules/keycloak/pages/about.adoc
+++ b/core/security/keycloak/src/main/doc/modules/keycloak/pages/about.adoc
@@ -5,4 +5,4 @@ include::_attributes.adoc[]
This guide describes the configuration of the Keycloak implementation of Apache Isis' `Authenticator and `Authorizor` APIs.
-TODO
\ No newline at end of file
+TODO: v2
\ No newline at end of file
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/_attributes.adoc b/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/_attributes.adoc
deleted file mode 100644
index 43cb529..0000000
--- a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/_attributes.adoc
+++ /dev/null
@@ -1,6 +0,0 @@
-ifndef::env-site,env-github[]
-:attachmentsdir: {moduledir}/attachments
-:examplesdir: {moduledir}/examples
-:imagesdir: {moduledir}/images
-:partialsdir: {moduledir}/partials
-endif::[]
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/attachments/.gitkeep b/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/attachments/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/examples/.gitkeep b/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/examples/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/images/configure-shiro-to-use-custom-jdbc-realm.png b/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/images/configure-shiro-to-use-custom-jdbc-realm.png
deleted file mode 100644
index d64751a..0000000
Binary files a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/images/configure-shiro-to-use-custom-jdbc-realm.png and /dev/null differ
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/nav.adoc b/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/nav.adoc
deleted file mode 100644
index 4ec4e15..0000000
--- a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/nav.adoc
+++ /dev/null
@@ -1 +0,0 @@
-include::security:ROOT:partial$component-nav.adoc[]
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/partials/_attributes.adoc b/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/partials/_attributes.adoc
deleted file mode 100644
index e8ada7c..0000000
--- a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/partials/_attributes.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-ifndef::env-site,env-github[]
-:moduledir: ..
-include::{moduledir}/_attributes.adoc[]
-endif::[]
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/partials/module-nav.adoc b/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/partials/module-nav.adoc
deleted file mode 100644
index c9d2bc7..0000000
--- a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/partials/module-nav.adoc
+++ /dev/null
@@ -1 +0,0 @@
-// this module's pages are referenced by security-shiro module
\ No newline at end of file
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-groups.png b/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-groups.png
deleted file mode 100644
index 0496a84..0000000
Binary files a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-groups.png and /dev/null differ
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-mojo-partition.png b/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-mojo-partition.png
deleted file mode 100644
index 42d7480..0000000
Binary files a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-mojo-partition.png and /dev/null differ
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-mojo-root-dse.png b/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-mojo-root-dse.png
deleted file mode 100644
index 9c4c480..0000000
Binary files a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-mojo-root-dse.png and /dev/null differ
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-sasl-authentication.png b/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-sasl-authentication.png
deleted file mode 100644
index 91d1a61..0000000
Binary files a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-sasl-authentication.png and /dev/null differ
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-users.png b/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-users.png
deleted file mode 100644
index 7ff133c..0000000
Binary files a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/activeds-ldap-users.png and /dev/null differ
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/configure-shiro-to-use-isis-ldap-realm.PNG b/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/configure-shiro-to-use-isis-ldap-realm.PNG
deleted file mode 100644
index 2a52910..0000000
Binary files a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/images/configure-shiro-to-use-isis-ldap-realm.PNG and /dev/null differ
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/partials/module-nav.adoc b/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/partials/module-nav.adoc
index c9d2bc7..8789cc4 100644
--- a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/partials/module-nav.adoc
+++ b/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/partials/module-nav.adoc
@@ -1 +1 @@
-// this module's pages are referenced by security-shiro module
\ No newline at end of file
+* xref:security:shiro-realm-ldap:about.adoc[LDAP Realm]
\ No newline at end of file
diff --git a/core/security/shiro/src/main/doc/modules/shiro/images/security/security-apis-impl/configure-isis-to-use-shiro.png b/core/security/shiro/src/main/doc/modules/shiro/images/configuration/configure-isis-to-use-shiro.png
similarity index 100%
rename from core/security/shiro/src/main/doc/modules/shiro/images/security/security-apis-impl/configure-isis-to-use-shiro.png
rename to core/security/shiro/src/main/doc/modules/shiro/images/configuration/configure-isis-to-use-shiro.png
diff --git a/core/security/shiro/src/main/doc/modules/shiro/images/security/security-apis-impl/configure-shiro-to-use-ini-realm.PNG b/core/security/shiro/src/main/doc/modules/shiro/images/configuration/configuring-shiro/ini/configure-shiro-to-use-ini-realm.png
similarity index 100%
rename from core/security/shiro/src/main/doc/modules/shiro/images/security/security-apis-impl/configure-shiro-to-use-ini-realm.PNG
rename to core/security/shiro/src/main/doc/modules/shiro/images/configuration/configuring-shiro/ini/configure-shiro-to-use-ini-realm.png
diff --git a/core/security/shiro/src/main/doc/modules/shiro/images/security/security-apis-impl/configure-shiro-to-use-custom-jdbc-realm.png b/core/security/shiro/src/main/doc/modules/shiro/images/configuration/configuring-shiro/jdbc/configure-shiro-to-use-custom-jdbc-realm.png
similarity index 100%
rename from core/security/shiro/src/main/doc/modules/shiro/images/security/security-apis-impl/configure-shiro-to-use-custom-jdbc-realm.png
rename to core/security/shiro/src/main/doc/modules/shiro/images/configuration/configuring-shiro/jdbc/configure-shiro-to-use-custom-jdbc-realm.png
diff --git a/core/security/shiro/src/main/doc/modules/shiro/images/security/security-apis-impl/configure-shiro-to-use-isis-ldap-realm.PNG b/core/security/shiro/src/main/doc/modules/shiro/images/configuration/configuring-shiro/ldap/configure-shiro-to-use-isis-ldap-realm.png
similarity index 100%
rename from core/security/shiro/src/main/doc/modules/shiro/images/security/security-apis-impl/configure-shiro-to-use-isis-ldap-realm.PNG
rename to core/security/shiro/src/main/doc/modules/shiro/images/configuration/configuring-shiro/ldap/configure-shiro-to-use-isis-ldap-realm.png
diff --git a/core/security/shiro/src/main/doc/modules/shiro/pages/about.adoc b/core/security/shiro/src/main/doc/modules/shiro/pages/about.adoc
index 54d76c5..33abfca 100644
--- a/core/security/shiro/src/main/doc/modules/shiro/pages/about.adoc
+++ b/core/security/shiro/src/main/doc/modules/shiro/pages/about.adoc
@@ -3,4 +3,14 @@
include::_attributes.adoc[]
:page-partial:
+WARNING: TODO: v2: this needs to be updated for Spring Boot etc.
+
This guide describes the configuration of the Shiro implementation of Apache Isis' `Authenticator and `Authorizor` APIs.
+
+include::about/configuring-isis-to-use-shiro.adoc[leveloffset=+1]
+include::about/ini-realm.adoc[leveloffset=+1]
+include::about/jdbc-realm.adoc[leveloffset=+1]
+include::about/ldap-realm.adoc[leveloffset=+1]
+include::about/enhanced-wildcard-permission.adoc[leveloffset=+1]
+include::about/run-as.adoc[leveloffset=+1]
+include::about/shiro-caching.adoc[leveloffset=+1]
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/pages/_attributes.adoc b/core/security/shiro/src/main/doc/modules/shiro/pages/about/_attributes.adoc
similarity index 81%
rename from core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/pages/_attributes.adoc
rename to core/security/shiro/src/main/doc/modules/shiro/pages/about/_attributes.adoc
index e8ada7c..d011536 100644
--- a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/pages/_attributes.adoc
+++ b/core/security/shiro/src/main/doc/modules/shiro/pages/about/_attributes.adoc
@@ -1,4 +1,4 @@
ifndef::env-site,env-github[]
-:moduledir: ..
+:moduledir: ../..
include::{moduledir}/_attributes.adoc[]
endif::[]
diff --git a/core/security/shiro/src/main/doc/modules/shiro/pages/configuring-isis-to-use-shiro.adoc b/core/security/shiro/src/main/doc/modules/shiro/pages/about/configuring-isis-to-use-shiro.adoc
similarity index 96%
rename from core/security/shiro/src/main/doc/modules/shiro/pages/configuring-isis-to-use-shiro.adoc
rename to core/security/shiro/src/main/doc/modules/shiro/pages/about/configuring-isis-to-use-shiro.adoc
index 1bc57bc..2d2ac47 100644
--- a/core/security/shiro/src/main/doc/modules/shiro/pages/configuring-isis-to-use-shiro.adoc
+++ b/core/security/shiro/src/main/doc/modules/shiro/pages/about/configuring-isis-to-use-shiro.adoc
@@ -34,7 +34,7 @@ public class HelloWorldAppManifest extends AppManifestAbstract {
This installs the appropriate implementation (the `ShiroAuthenticatorOrAuthorizor` class) that use Shiro's APIs to perform authentication and authorization:
-image::security/security-apis-impl/configure-isis-to-use-shiro.png[width="600px",link="{imagesdir}/security/security-apis-impl/configure-isis-to-use-shiro.png"]
+image::configuration/configure-isis-to-use-shiro.png[width="600px",link="{imagesdir}/configuration/configure-isis-to-use-shiro.png"]
The figure above doesn't tell the whole story; we haven't yet seen how Shiro itself is configured to use realms.
The `ShiroAuthenticatorOrAuthorizor` is in essence the glue between the Apache Isis runtime and Shiro.
diff --git a/core/security/shiro/src/main/doc/modules/shiro/pages/enhanced-wildcard-permission.adoc b/core/security/shiro/src/main/doc/modules/shiro/pages/about/enhanced-wildcard-permission.adoc
similarity index 100%
rename from core/security/shiro/src/main/doc/modules/shiro/pages/enhanced-wildcard-permission.adoc
rename to core/security/shiro/src/main/doc/modules/shiro/pages/about/enhanced-wildcard-permission.adoc
diff --git a/core/security/shiro/src/main/doc/modules/shiro/pages/ini-realm.adoc b/core/security/shiro/src/main/doc/modules/shiro/pages/about/ini-realm.adoc
similarity index 96%
rename from core/security/shiro/src/main/doc/modules/shiro/pages/ini-realm.adoc
rename to core/security/shiro/src/main/doc/modules/shiro/pages/about/ini-realm.adoc
index 6190188..b0fa43a 100644
--- a/core/security/shiro/src/main/doc/modules/shiro/pages/ini-realm.adoc
+++ b/core/security/shiro/src/main/doc/modules/shiro/pages/about/ini-realm.adoc
@@ -15,7 +15,7 @@ The app generated by both the xref:helloworld:ROOT:about.adoc[HelloWorld] and xr
The diagram below shows the Isis and components involved:
-image::security/security-apis-impl/configure-shiro-to-use-ini-realm.PNG[width="600px",link="{imagesdir}/security/security-apis-impl/configure-shiro-to-use-ini-realm.PNG"]
+image::configuration/configuring-shiro/ini/configure-shiro-to-use-ini-realm.PNG[width="600px",link="{imagesdir}/configuration/configuring-shiro/ini/configure-shiro-to-use-ini-realm.PNG"]
The realm is responsible for validating the user credentials, and then creates a Shiro link:http://shiro.apache.org/static/latest/apidocs/org/apache/shiro/subject/Subject.html[`Subject`] which represents the user (for the current request).
Apache Isis `Authenticator` component then interacts with the `Subject` in order to check permissions.
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/pages/about.adoc b/core/security/shiro/src/main/doc/modules/shiro/pages/about/jdbc-realm.adoc
similarity index 95%
rename from core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/pages/about.adoc
rename to core/security/shiro/src/main/doc/modules/shiro/pages/about/jdbc-realm.adoc
index c5b4b5d..8c0d5a1 100644
--- a/core/security/shiro/src/main/doc/modules/shiro-realm-jdbc/pages/about.adoc
+++ b/core/security/shiro/src/main/doc/modules/shiro/pages/about/jdbc-realm.adoc
@@ -13,7 +13,7 @@ If you are happy to use a database then we strongly recommend you use the xref:s
If you go down this route, then the architecture is as follows:
-image::configure-shiro-to-use-custom-jdbc-realm.png[width="600px",link="{imagesdir}/configure-shiro-to-use-custom-jdbc-realm.png"]
+image::configuration/configuring-shiro/jdbc/configure-shiro-to-use-custom-jdbc-realm.png[width="600px",link="{imagesdir}/configuration/jdbc/configuring-shiro/configure-shiro-to-use-custom-jdbc-realm.png"]
diff --git a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/pages/about.adoc b/core/security/shiro/src/main/doc/modules/shiro/pages/about/ldap-realm.adoc
similarity index 85%
rename from core/security/shiro/src/main/doc/modules/shiro-realm-ldap/pages/about.adoc
rename to core/security/shiro/src/main/doc/modules/shiro/pages/about/ldap-realm.adoc
index 5aecbbf..9b1fe6a 100644
--- a/core/security/shiro/src/main/doc/modules/shiro-realm-ldap/pages/about.adoc
+++ b/core/security/shiro/src/main/doc/modules/shiro/pages/about/ldap-realm.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
Apache Isis ships with an implementation of http://shiro.apache.org[Apache Shiro]'s `Realm` class that allows user authentication and authorization to be performed against an LDAP server.
-image::configure-shiro-to-use-isis-ldap-realm.PNG[width="600px",link="{imagesdir}/configure-shiro-to-use-isis-ldap-realm.PNG"]
+image::configuration/configuring-shiro/ldap/configure-shiro-to-use-isis-ldap-realm.png[width="600px",link="{imagesdir}/configuration/configuring-shiro/ldap/configure-shiro-to-use-isis-ldap-realm.png"]
The LDAP database stores the user/passwords and user groups, while the `shiro.ini` file is used to map the LDAP groups to roles, and to map the roles to permissions.
@@ -124,22 +124,22 @@ The setup here was initially based on http://krams915.blogspot.co.uk/2011/01/lda
To start, create a partition in order to hold the mojo node (holding the groups):
-image::activeds-ldap-mojo-partition.png[link="{imagesdir}/activeds-ldap-mojo-partition.png"]
+image::configuration/configuring-shiro/ldap/activeds-ldap-mojo-partition.png[link="{imagesdir}/configuration/configuring-shiro/ldap/activeds-ldap-mojo-partition.png"]
Create the `ou=groups,o=mojo` hierarchy:
-image::activeds-ldap-mojo-root-dse.png[link="{imagesdir}/activeds-ldap-mojo-root-dse.png"]
+image::configuration/configuring-shiro/ldap/activeds-ldap-mojo-root-dse.png[link="{imagesdir}/configuration/configuring-shiro/ldap/activeds-ldap-mojo-root-dse.png"]
Configure SASL authentication. This means that the checking of user/password is done implicitly by virtue of Apache Isis connecting to LDAP using these credentials:
-image::activeds-ldap-sasl-authentication.png[link="{imagesdir}/activeds-ldap-sas"]
+image::configuration/configuring-shiro/ldap/activeds-ldap-sasl-authentication.png[link="{imagesdir}/configuration/configuring-shiro/ldap/activeds-ldap-sasl-authentication.png"]
In order for SASL to work, it seems to be necessary to put users under `o=system`. (This is why the setup is slightly different than the tutorial mentioned above):
-image::activeds-ldap-users.png[link="{imagesdir}/activeds-ldap-users.png"]
+image::configuration/configuring-shiro/ldap/activeds-ldap-users.png[link="{imagesdir}/configuration/configuring-shiro/ldap/activeds-ldap-users.png"]
Configure the users into the groups:
-image::activeds-ldap-groups.png[link="{imagesdir}/activeds-ldap-groups.png"]
+image::configuration/configuring-shiro/ldap/activeds-ldap-groups.png[link="{imagesdir}/configuration/configuring-shiro/ldap/activeds-ldap-groups.png"]
diff --git a/core/security/shiro/src/main/doc/modules/shiro/pages/run-as.adoc b/core/security/shiro/src/main/doc/modules/shiro/pages/about/run-as.adoc
similarity index 100%
rename from core/security/shiro/src/main/doc/modules/shiro/pages/run-as.adoc
rename to core/security/shiro/src/main/doc/modules/shiro/pages/about/run-as.adoc
diff --git a/core/security/shiro/src/main/doc/modules/shiro/pages/shiro-caching.adoc b/core/security/shiro/src/main/doc/modules/shiro/pages/about/shiro-caching.adoc
similarity index 100%
rename from core/security/shiro/src/main/doc/modules/shiro/pages/shiro-caching.adoc
rename to core/security/shiro/src/main/doc/modules/shiro/pages/about/shiro-caching.adoc
diff --git a/core/security/shiro/src/main/doc/modules/shiro/partials/module-nav.adoc b/core/security/shiro/src/main/doc/modules/shiro/partials/module-nav.adoc
index a209cde..229694f 100644
--- a/core/security/shiro/src/main/doc/modules/shiro/partials/module-nav.adoc
+++ b/core/security/shiro/src/main/doc/modules/shiro/partials/module-nav.adoc
@@ -1,10 +1,2 @@
-* Shiro Implementation
+* xref:security:shiro:about.adoc[Shiro Implementation]
-** xref:security:shiro:configuring-isis-to-use-shiro.adoc[Configuring to use Shiro]
-** Realms
-*** xref:security:shiro:ini-realm.adoc[INI Realm]
-*** xref:security:shiro-realm-jdbc:about.adoc[JDBC Realm]
-*** xref:security:shiro-realm-ldap:about.adoc[LDAP Realm]
-** xref:security:shiro:enhanced-wildcard-permission.adoc[Enhanced Wildcard Permissions]
-** xref:security:shiro:run-as.adoc[Run As]
-** xref:security:shiro:shiro-caching.adoc[Shiro Caching]
diff --git a/site-scratch.yml b/site-scratch.yml
index f8373c8..a4f3ff8 100644
--- a/site-scratch.yml
+++ b/site-scratch.yml
@@ -14,34 +14,34 @@ content:
# - url: .
# start_path: antora/components/mignotes
# branches: HEAD
- - url: .
- start_path: antora/components/refguide
- branches: HEAD
# - url: .
-# start_path: antora/components/relnotes
+# start_path: antora/components/refguide
# branches: HEAD
# - url: .
-# start_path: antora/components/security
+# start_path: antora/components/relnotes
# branches: HEAD
+ - url: .
+ start_path: antora/components/security
+ branches: HEAD
# - url: .
# start_path: antora/components/testing
# branches: HEAD
- url: .
start_path: antora/components/toc
branches: HEAD
- - url: .
- start_path: antora/components/userguide
- branches: HEAD
+# - url: .
+# start_path: antora/components/userguide
+# branches: HEAD
#
- - url: .
- start_path: core/applib/src/main/doc # refguide
- branches: HEAD
+# - url: .
+# start_path: core/applib/src/main/doc # refguide
+# branches: HEAD
# - url: .
# start_path: core/commons/src/main/doc # core
# branches: HEAD
- - url: .
- start_path: core/config/src/main/doc # refguide
- branches: HEAD
+# - url: .
+# start_path: core/config/src/main/doc # refguide
+# branches: HEAD
# - url: .
# start_path: core/detached-tests/src/main/doc # core
# branches: HEAD
@@ -69,21 +69,21 @@ content:
# - url: .
# start_path: core/runtime-web/src/main/doc # core
# branches: HEAD
- - url: .
- start_path: core/schema/src/main/doc # refguide
- branches: HEAD
-# - url: .
-# start_path: core/security/api/src/main/doc # security
-# branches: HEAD
# - url: .
-# start_path: core/security/bypass/src/main/doc # security
-# branches: HEAD
-# - url: .
-# start_path: core/security/shiro/src/main/doc # security
-# branches: HEAD
-# - url: .
-# start_path: core/security/keycloak/src/main/doc # security
+# start_path: core/schema/src/main/doc # refguide
# branches: HEAD
+ - url: .
+ start_path: core/security/api/src/main/doc # security
+ branches: HEAD
+ - url: .
+ start_path: core/security/bypass/src/main/doc # security
+ branches: HEAD
+ - url: .
+ start_path: core/security/shiro/src/main/doc # security
+ branches: HEAD
+ - url: .
+ start_path: core/security/keycloak/src/main/doc # security
+ branches: HEAD
# - url: .
# start_path: core/testsupport/unittestsupport/src/main/doc # testing
# branches: HEAD
@@ -123,24 +123,24 @@ content:
# - url: .
# start_path: extensions/core/spring/src/main/doc # extensions
# branches: HEAD
-# - url: .
-# start_path: extensions/security/secman/src/main/doc # secman
-# branches: HEAD
-# - url: .
-# start_path: extensions/security/secman/api/src/main/doc # secman
-# branches: HEAD
-# - url: .
-# start_path: extensions/security/secman/encryption-jbcrypt/src/main/doc # secman
-# branches: HEAD
-# - url: .
-# start_path: extensions/security/secman/model/src/main/doc # secman
-# branches: HEAD
-# - url: .
-# start_path: extensions/security/secman/persistence-jdo/src/main/doc # secman
-# branches: HEAD
-# - url: .
-# start_path: extensions/security/secman/realm-shiro/src/main/doc # secman
-# branches: HEAD
+ - url: .
+ start_path: extensions/security/secman/src/main/doc # secman
+ branches: HEAD
+ - url: .
+ start_path: extensions/security/secman/api/src/main/doc # secman
+ branches: HEAD
+ - url: .
+ start_path: extensions/security/secman/encryption-jbcrypt/src/main/doc # secman
+ branches: HEAD
+ - url: .
+ start_path: extensions/security/secman/model/src/main/doc # secman
+ branches: HEAD
+ - url: .
+ start_path: extensions/security/secman/persistence-jdo/src/main/doc # secman
+ branches: HEAD
+ - url: .
+ start_path: extensions/security/secman/realm-shiro/src/main/doc # secman
+ branches: HEAD
# - url: .
# start_path: extensions/testing/fixtures/src/main/doc # testing
# branches: HEAD